diff --git a/tools/chatgui/src/mainwindow.cpp b/tools/chatgui/src/mainwindow.cpp index dd481ab0..f4e6ea76 100644 --- a/tools/chatgui/src/mainwindow.cpp +++ b/tools/chatgui/src/mainwindow.cpp @@ -16,6 +16,7 @@ #include "imageviewer_window.h" #include "member_files/browser.h" #include "avatars/avatarmanager.h" +#include "avatars/groupavatarmanager.h" extern "C" { #include "chat/chat_member.h" } @@ -157,6 +158,7 @@ MainWindow::MainWindow(QWidget *parent, DbManager* db, const QString& cfgPath, resize(900, 600); if (m_db) m_db->setDbPath(m_cfgDbPath); new AvatarManager(m_db, this); + new GroupAvatarManager(m_db, this); setupUi(); setupTray(); setupSoundFromConfig(); @@ -180,6 +182,8 @@ MainWindow::MainWindow(QWidget *parent, DbManager* db, const QString& cfgPath, MainWindow::~MainWindow() { s_mainWindow = nullptr; delete AvatarManager::instance(); + delete GroupAvatarManager::instance(); + gui_bridge_set_group_avatar_result_cb(nullptr); gui_bridge_set_avatar_result_cb(nullptr); if (m_fileBrowser) delete m_fileBrowser.data(); gui_bridge_set_member_files_response_cb(nullptr); @@ -410,6 +414,9 @@ void MainWindow::setupBridgeCallbacks() { gui_bridge_set_avatar_result_cb([](const uint8_t* data, int length) { if (AvatarManager::instance()) AvatarManager::instance()->onPublished(data, length); }); + gui_bridge_set_group_avatar_result_cb([](const uint8_t* data, int length) { + if (GroupAvatarManager::instance()) GroupAvatarManager::instance()->onResult(data, length); + }); gui_bridge_set_msg_received_cb(onMsgReceivedCallback); gui_bridge_set_channel_updated_cb(onChannelUpdatedCallback); gui_bridge_set_member_list_cb(onMemberListCallback); diff --git a/tools/chatgui/transport/gui_bridge.h b/tools/chatgui/transport/gui_bridge.h index b7b28633..b5a75cfc 100644 --- a/tools/chatgui/transport/gui_bridge.h +++ b/tools/chatgui/transport/gui_bridge.h @@ -242,6 +242,7 @@ void gui_bridge_set_dm_invite_result_cb(gui_dm_messages_fn cb); void gui_bridge_set_member_files_response_cb(gui_dm_messages_fn cb); void gui_bridge_set_member_files_transfer_cb(gui_dm_messages_fn cb); void gui_bridge_set_avatar_result_cb(gui_dm_messages_fn cb); +void gui_bridge_set_group_avatar_result_cb(gui_dm_messages_fn cb); /* CHAT_EVT_ATTACHMENT_PREPARATION: target + job UUID + state. */ void gui_bridge_set_attachment_preparation_cb(gui_dm_messages_fn cb); diff --git a/tools/chatgui/transport/gui_bridge_impl.cpp b/tools/chatgui/transport/gui_bridge_impl.cpp index 2c37d1cf..21dbf69f 100644 --- a/tools/chatgui/transport/gui_bridge_impl.cpp +++ b/tools/chatgui/transport/gui_bridge_impl.cpp @@ -69,6 +69,7 @@ static gui_dm_messages_fn g_dm_invite_result_cb = nullptr; static gui_dm_messages_fn g_member_files_response_cb = nullptr; static gui_dm_messages_fn g_member_files_transfer_cb = nullptr; static gui_dm_messages_fn g_avatar_result_cb = nullptr; +static gui_dm_messages_fn g_group_avatar_result_cb = nullptr; static gui_network_changed_fn g_network_changed_cb = nullptr; static struct UASYNC* g_ua = nullptr; static struct UTUN_INSTANCE* g_inst = nullptr; @@ -83,6 +84,9 @@ void GuiBridgeReceiver::processPost(int eventType, QByteArray data) { eventType == 16 || eventType == 17 || eventType == 24 || eventType == 25 || eventType == 31 || eventType == 33)) g_network_changed_cb(eventType); switch (eventType) { + case CHAT_EVT_GROUP_AVATAR_RESULT: + if (g_group_avatar_result_cb) g_group_avatar_result_cb(d, dlen); + break; case CHAT_EVT_AVATAR_RESULT: if (g_avatar_result_cb) g_avatar_result_cb(d, dlen); break; @@ -576,6 +580,7 @@ void gui_bridge_set_dm_invite_result_cb(gui_dm_messages_fn cb) { g_dm_invite_res void gui_bridge_set_member_files_response_cb(gui_dm_messages_fn cb) { g_member_files_response_cb = cb; } void gui_bridge_set_member_files_transfer_cb(gui_dm_messages_fn cb) { g_member_files_transfer_cb = cb; } void gui_bridge_set_avatar_result_cb(gui_dm_messages_fn cb) { g_avatar_result_cb = cb; } +void gui_bridge_set_group_avatar_result_cb(gui_dm_messages_fn cb) { g_group_avatar_result_cb = cb; } void gui_bridge_set_dm_conv_updated_cb(gui_dm_conv_updated_fn cb) { g_dm_conv_updated_cb = cb;