Skip to content

Commit

Permalink
Merge pull request #494 from iptux-src/remove_ui_programdata
Browse files Browse the repository at this point in the history
remove UiProgramData
  • Loading branch information
lidaobing authored Nov 16, 2021
2 parents ea5d098 + 150bbdd commit b04aab4
Show file tree
Hide file tree
Showing 18 changed files with 115 additions and 194 deletions.
2 changes: 1 addition & 1 deletion po/POTFILES
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ src/iptux-core/internal/SendFileData.cpp
src/iptux-core/internal/TcpData.cpp
src/iptux-core/internal/TransAbstract.cpp
src/iptux-core/internal/UdpData.cpp
src/iptux-core/internal/UdpDataService.cpp
src/iptux-core/internal/support.cpp
src/iptux-utils/Exception.cpp
src/iptux-utils/output.cpp
Expand All @@ -41,7 +42,6 @@ src/iptux/TransWindow.cpp
src/iptux/UiCoreThread.cpp
src/iptux/UiHelper.cpp
src/iptux/UiModels.cpp
src/iptux/UiProgramData.cpp
src/iptux/WindowConfig.cpp
src/iptux/callback.cpp
src/iptux/dialog.cpp
Expand Down
5 changes: 2 additions & 3 deletions src/iptux/Application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
#include "iptux/TransWindow.h"
#include "iptux/UiCoreThread.h"
#include "iptux/UiHelper.h"
#include "iptux/UiProgramData.h"
#include "iptux/dialog.h"

#if SYSTEM_DARWIN
Expand Down Expand Up @@ -124,7 +123,7 @@ void Application::onStartup(Application& self) {
iptux_register_resource();
self.menuBuilder =
gtk_builder_new_from_resource(IPTUX_RESOURCE "gtk/menus.ui");
self.data = make_shared<UiProgramData>(self.config);
self.data = make_shared<ProgramData>(self.config);
self.logSystem = new LogSystem(self.data);
self.cthrd = make_shared<UiCoreThread>(&self, self.data);
self.window = new MainWindow(&self, *self.cthrd);
Expand Down Expand Up @@ -298,7 +297,7 @@ void Application::onEvent(shared_ptr<const Event> _event) {
return;
}
this->updateItemToTransTree(*para);
auto g_progdt = cthrd->getUiProgramData();
auto g_progdt = cthrd->getProgramData();
if (g_progdt->IsAutoOpenFileTrans()) {
this->openTransWindow();
}
Expand Down
5 changes: 2 additions & 3 deletions src/iptux/Application.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
#include "iptux/EventAdaptor.h"
#include "iptux/NotificationService.h"
#include "iptux/UiModels.h"
#include "iptux/UiProgramData.h"

namespace iptux {

Expand All @@ -32,14 +31,14 @@ class Application {
MainWindow* getMainWindow() { return window; }
GtkBuilder* getMenuBuilder() { return menuBuilder; }
LogSystem* getLogSystem() { return logSystem; }
std::shared_ptr<UiProgramData> getProgramData() { return data; }
std::shared_ptr<ProgramData> getProgramData() { return data; }
std::shared_ptr<UiCoreThread> getCoreThread() { return cthrd; }
void refreshTransTasks();
PPalInfo getMe();

private:
std::shared_ptr<IptuxConfig> config;
std::shared_ptr<UiProgramData> data;
std::shared_ptr<ProgramData> data;
std::shared_ptr<UiCoreThread> cthrd;

GtkApplication* app;
Expand Down
15 changes: 7 additions & 8 deletions src/iptux/DataSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
#include "iptux-utils/utils.h"
#include "iptux/UiCoreThread.h"
#include "iptux/UiHelper.h"
#include "iptux/UiProgramData.h"
#include "iptux/callback.h"

using namespace std;
Expand Down Expand Up @@ -55,7 +54,7 @@ void DataSettings::ResetDataEntry(Application* app,
GtkWidget *note, *label;

auto g_cthrd = app->getCoreThread();
auto g_progdt = g_cthrd->getUiProgramData();
auto g_progdt = g_cthrd->getProgramData();

dialog = dset.CreateMainDialog(parent);

Expand Down Expand Up @@ -433,7 +432,7 @@ void DataSettings::SetPersonalValue() {
gint active;

auto g_cthrd = app->getCoreThread();
auto g_progdt = g_cthrd->getUiProgramData();
auto g_progdt = g_cthrd->getProgramData();

widget = GTK_WIDGET(g_datalist_get_data(&widset, "nickname-entry-widget"));
gtk_entry_set_text(GTK_ENTRY(widget), g_progdt->nickname.c_str());
Expand Down Expand Up @@ -468,7 +467,7 @@ void DataSettings::SetSystemValue() {
gint active;

auto g_cthrd = app->getCoreThread();
auto g_progdt = g_cthrd->getUiProgramData();
auto g_progdt = g_cthrd->getProgramData();

widget = GTK_WIDGET(g_datalist_get_data(&widset, "codeset-entry-widget"));
gtk_entry_set_text(GTK_ENTRY(widget), g_progdt->codeset.c_str());
Expand Down Expand Up @@ -565,7 +564,7 @@ void DataSettings::FillIconModel(GtkTreeModel* model) {
*/
void DataSettings::FillNetworkModel(GtkTreeModel* model) {
auto g_cthrd = app->getCoreThread();
auto g_progdt = g_cthrd->getUiProgramData();
auto g_progdt = g_cthrd->getProgramData();
for (const NetSegment& pns : g_progdt->getNetSegments()) {
GtkTreeIter iter;
gtk_list_store_append(GTK_LIST_STORE(model), &iter);
Expand Down Expand Up @@ -683,7 +682,7 @@ void DataSettings::ObtainPersonalValue() {
gint active;

auto g_cthrd = app->getCoreThread();
auto g_progdt = g_cthrd->getUiProgramData();
auto g_progdt = g_cthrd->getProgramData();

widget = GTK_WIDGET(g_datalist_get_data(&widset, "nickname-entry-widget"));
if (*(text = gtk_entry_get_text(GTK_ENTRY(widget))) != '\0') {
Expand Down Expand Up @@ -745,7 +744,7 @@ void DataSettings::ObtainSystemValue() {
gint active;

auto g_cthrd = app->getCoreThread();
auto g_progdt = g_cthrd->getUiProgramData();
auto g_progdt = g_cthrd->getProgramData();

widget = GTK_WIDGET(g_datalist_get_data(&widset, "codeset-entry-widget"));
text = gtk_editable_get_chars(GTK_EDITABLE(widget), 0, -1);
Expand Down Expand Up @@ -844,7 +843,7 @@ void DataSettings::ObtainNetworkValue() {
} while (gtk_tree_model_iter_next(model, &iter));
}
auto g_cthrd = app->getCoreThread();
auto g_progdt = g_cthrd->getUiProgramData();
auto g_progdt = g_cthrd->getProgramData();
g_progdt->Lock();
g_progdt->setNetSegments(move(netSegments));
g_progdt->Unlock();
Expand Down
3 changes: 1 addition & 2 deletions src/iptux/DialogBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
#include "iptux-core/Models.h"
#include "iptux/Application.h"
#include "iptux/UiModels.h"
#include "iptux/UiProgramData.h"

namespace iptux {

Expand Down Expand Up @@ -85,7 +84,7 @@ class DialogBase : public SessionAbstract, public sigc::trackable {

protected:
Application* app;
std::shared_ptr<UiProgramData> progdt;
std::shared_ptr<ProgramData> progdt;

GtkTreeView* fileSendTree = 0;
GtkTextView* inputTextviewWidget = 0;
Expand Down
1 change: 0 additions & 1 deletion src/iptux/DialogGroup.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
#include "iptux-core/Models.h"
#include "iptux/Application.h"
#include "iptux/DialogBase.h"
#include "iptux/UiProgramData.h"

namespace iptux {

Expand Down
4 changes: 2 additions & 2 deletions src/iptux/DialogPeer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ GtkWidget* DialogPeer::CreateInfoArea() {
GTK_SHADOW_ETCHED_IN);
gtk_container_add(GTK_CONTAINER(frame), sw);

buffer = gtk_text_buffer_new(progdt->table);
buffer = gtk_text_buffer_new(app->getCoreThread()->tag_table());
FillPalInfoToBuffer(buffer, grpinf->getMembers()[0].get());
widget = gtk_text_view_new_with_buffer(buffer);
gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(widget), FALSE);
Expand Down Expand Up @@ -965,7 +965,7 @@ void DialogPeer::onAcceptButtonClicked(DialogPeer* self) {
gchar* filename;
FileInfo* file;

auto g_progdt = self->app->getCoreThread()->getUiProgramData();
auto g_progdt = self->app->getCoreThread()->getProgramData();

const gchar* filepath = pop_save_path(GTK_WIDGET(self->grpinf->getDialog()),
g_progdt->path.c_str());
Expand Down
2 changes: 1 addition & 1 deletion src/iptux/MainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ MainWindow::MainWindow(Application* app, UiCoreThread& coreThread)
: app(app),
coreThread(coreThread),
window(nullptr),
progdt(coreThread.getUiProgramData()),
progdt(coreThread.getProgramData()),
config(progdt->getConfig()),
widset(NULL),
mdlset(NULL),
Expand Down
5 changes: 2 additions & 3 deletions src/iptux/MainWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
#include "iptux/EventAdaptor.h"
#include "iptux/UiCoreThread.h"
#include "iptux/UiModels.h"
#include "iptux/UiProgramData.h"
#include "iptux/WindowConfig.h"

namespace iptux {
Expand All @@ -47,7 +46,7 @@ class MainWindow : public sigc::trackable {
void DelItemFromPaltree(in_addr ipv4);
void ClearAllItemFromPaltree();

std::shared_ptr<UiProgramData> GetProgramData() { return progdt; }
std::shared_ptr<ProgramData> GetProgramData() { return progdt; }

std::shared_ptr<IptuxConfig> getConfig() { return config; }

Expand All @@ -59,7 +58,7 @@ class MainWindow : public sigc::trackable {
GtkWidget* window;
EventAdaptor* eventAdaptor;

std::shared_ptr<UiProgramData> progdt;
std::shared_ptr<ProgramData> progdt;
std::shared_ptr<IptuxConfig> config;

GData* widset; //窗体集
Expand Down
2 changes: 1 addition & 1 deletion src/iptux/ShareFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ void ApplySharedData(ShareFile* self) {
} else {
g_cthrd->SetAccessPublicLimit(passwd);
}
g_cthrd->getUiProgramData()->WriteProgData();
g_cthrd->getProgramData()->WriteProgData();
}

/**
Expand Down
96 changes: 85 additions & 11 deletions src/iptux/UiCoreThread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
#include "iptux-utils/utils.h"
#include "iptux/LogSystem.h"
#include "iptux/UiHelper.h"
#include "iptux/UiProgramData.h"

using namespace std;

Expand All @@ -33,7 +32,7 @@ namespace iptux {
/**
* 类构造函数.
*/
UiCoreThread::UiCoreThread(Application* app, shared_ptr<UiProgramData> data)
UiCoreThread::UiCoreThread(Application* app, shared_ptr<ProgramData> data)
: CoreThread(data),
programData(data),
groupInfos(NULL),
Expand All @@ -43,14 +42,18 @@ UiCoreThread::UiCoreThread(Application* app, shared_ptr<UiProgramData> data)
pbn(1),
prn(MAX_SHAREDFILE),
ecsList(NULL) {
tag_table_ = CreateTagTable();
CheckIconTheme();
logSystem = app->getLogSystem();
InitSublayer();
}

/**
* 类析构函数.
*/
UiCoreThread::~UiCoreThread() {}
UiCoreThread::~UiCoreThread() {
g_object_unref(tag_table_);
}

/**
* 从好友链表中移除所有好友数据(非UI线程安全).
Expand Down Expand Up @@ -353,7 +356,7 @@ GroupInfo* UiCoreThread::AttachPalRegularItem(PPalInfo pal) {
grpinf = new GroupInfo(pal, getMe(), logSystem);
grpinf->grpid = inAddrToUint32(pal->ipv4);
grpinf->name = pal->getName();
grpinf->buffer = gtk_text_buffer_new(programData->table);
grpinf->buffer = gtk_text_buffer_new(tag_table_);
grpinf->clearDialog();
grpinf->signalUnreadMsgCountUpdated.connect(
sigc::mem_fun(*this, &UiCoreThread::onGroupInfoMsgCountUpdate));
Expand All @@ -379,7 +382,7 @@ GroupInfo* UiCoreThread::AttachPalSegmentItem(PPalInfo pal) {
logSystem);
grpinf->grpid = g_quark_from_static_string(name.c_str());
grpinf->name = name;
grpinf->buffer = gtk_text_buffer_new(programData->table);
grpinf->buffer = gtk_text_buffer_new(tag_table_);
grpinf->clearDialog();
sgmlist = g_slist_append(sgmlist, grpinf);

Expand All @@ -400,7 +403,7 @@ GroupInfo* UiCoreThread::AttachPalGroupItem(PPalInfo pal) {
grpinf = new GroupInfo(GROUP_BELONG_TYPE_GROUP, vector<PPalInfo>(), getMe(),
logSystem);
grpinf->name = name;
grpinf->buffer = gtk_text_buffer_new(programData->table);
grpinf->buffer = gtk_text_buffer_new(tag_table_);
grpinf->clearDialog();
grplist = g_slist_append(grplist, grpinf);

Expand All @@ -422,7 +425,7 @@ GroupInfo* UiCoreThread::AttachPalBroadcastItem(PPalInfo) {
getMe(), logSystem);
grpinf->grpid = g_quark_from_static_string(name);
grpinf->name = name;
grpinf->buffer = gtk_text_buffer_new(programData->table);
grpinf->buffer = gtk_text_buffer_new(tag_table_);
grpinf->clearDialog();
brdlist = g_slist_append(brdlist, grpinf);

Expand Down Expand Up @@ -495,12 +498,83 @@ void UiCoreThread::PopItemFromEnclosureList(FileInfo* file) {
delete file;
}

shared_ptr<UiProgramData> UiCoreThread::getUiProgramData() {
return programData;
}

void UiCoreThread::onGroupInfoMsgCountUpdate(GroupInfo* grpinf, int, int) {
signalGroupInfoUpdated.emit(grpinf);
}

/**
* 创建用于(text-view)的一些通用tag.
* @note 给这些tag一个"global"标记,表示这些对象是全局共享的
*/
GtkTextTagTable* UiCoreThread::CreateTagTable() {
GtkTextTag* tag;

GtkTextTagTable* table = gtk_text_tag_table_new();

tag = gtk_text_tag_new("pal-color");
g_object_set(tag, "foreground", "blue", NULL);
g_object_set_data(G_OBJECT(tag), "global", GINT_TO_POINTER(TRUE));
gtk_text_tag_table_add(table, tag);
g_object_unref(tag);

tag = gtk_text_tag_new("me-color");
g_object_set(tag, "foreground", "green", NULL);
g_object_set_data(G_OBJECT(tag), "global", GINT_TO_POINTER(TRUE));
gtk_text_tag_table_add(table, tag);
g_object_unref(tag);

tag = gtk_text_tag_new("error-color");
g_object_set(tag, "foreground", "red", NULL);
g_object_set_data(G_OBJECT(tag), "global", GINT_TO_POINTER(TRUE));
gtk_text_tag_table_add(table, tag);
g_object_unref(tag);

tag = gtk_text_tag_new("sign-words");
g_object_set(tag, "indent", 10, "foreground", "#1005F0", "font",
"Sans Italic 8", NULL);
g_object_set_data(G_OBJECT(tag), "global", GINT_TO_POINTER(TRUE));
gtk_text_tag_table_add(table, tag);
g_object_unref(tag);

tag = gtk_text_tag_new("url-link");
g_object_set(tag, "foreground", "blue", "underline", PANGO_UNDERLINE_SINGLE,
NULL);
g_object_set_data(G_OBJECT(tag), "global", GINT_TO_POINTER(TRUE));
gtk_text_tag_table_add(table, tag);
g_object_unref(tag);
return table;
}

/**
* 确保头像数据被存放在主题库中.
*/
void UiCoreThread::CheckIconTheme() {
char pathbuf[MAX_PATHLEN];
GdkPixbuf* pixbuf;

snprintf(pathbuf, MAX_PATHLEN, __PIXMAPS_PATH "/icon/%s",
programData->myicon.c_str());
if (access(pathbuf, F_OK) != 0) {
snprintf(pathbuf, MAX_PATHLEN, "%s" ICON_PATH "/%s",
g_get_user_config_dir(), programData->myicon.c_str());
if ((pixbuf = gdk_pixbuf_new_from_file(pathbuf, NULL))) {
gtk_icon_theme_add_builtin_icon(programData->myicon.c_str(), MAX_ICONSIZE,
pixbuf);
g_object_unref(pixbuf);
}
}

snprintf(pathbuf, MAX_PATHLEN, __PIXMAPS_PATH "/icon/%s",
programData->palicon);
if (access(pathbuf, F_OK) != 0) {
snprintf(pathbuf, MAX_PATHLEN, "%s" ICON_PATH "/%s",
g_get_user_config_dir(), programData->palicon);
if ((pixbuf = gdk_pixbuf_new_from_file(pathbuf, NULL))) {
gtk_icon_theme_add_builtin_icon(programData->palicon, MAX_ICONSIZE,
pixbuf);
g_object_unref(pixbuf);
}
}
}

} // namespace iptux
Loading

0 comments on commit b04aab4

Please sign in to comment.