chatgui: preserve active channel selection on reload, members sync, profile settings, member list model

This commit is contained in:
Evgeny committed 2026-07-14 08:52:10 +03:00
1 parent c3f946fb63
commit d70cdbb040
28 files changed
+1895 -91

No files matched your search

+26 -1
View File
@@ -26,7 +26,9 @@ public:
static GuiBridgeReceiver* g_receiver = nullptr;
static gui_connect_result_fn g_connect_result_cb = nullptr;
static gui_msg_received_fn g_msg_received_cb = nullptr;
static gui_channel_updated_fn g_channel_updated_cb = nullptr;
static gui_channel_updated_fn g_channel_updated_cb = nullptr;
static gui_members_changed_fn g_members_changed_cb = nullptr;
static gui_my_node_id_fn g_my_node_id_cb = nullptr;
static struct UASYNC* g_ua = nullptr;
/* ── GuiBridgeReceiver implementation ── */
@@ -81,6 +83,21 @@ void GuiBridgeReceiver::processPost(int eventType, QByteArray data) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "gui_bridge: CHANNEL_UPDATED data too short %d", dlen);
}
break;
case GUI_EVT_MEMBERS_CHANGED:
if (dlen >= 2) {
uint8_t chLen = d[0];
if (dlen >= 1 + chLen) {
QString chId = QString::fromUtf8((const char*)d + 1, chLen);
if (g_members_changed_cb) g_members_changed_cb((const char*)d + 1, chLen);
}
}
break;
case GUI_EVT_MY_NODE_ID:
if (dlen >= 8) {
uint64_t nid; memcpy(&nid, d, 8);
if (g_my_node_id_cb) g_my_node_id_cb(nid);
}
break;
default:
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "gui_bridge: unknown event type %d", eventType);
break;
@@ -139,6 +156,14 @@ void gui_bridge_set_channel_updated_cb(gui_channel_updated_fn cb) {
g_channel_updated_cb = cb;
}
void gui_bridge_set_members_changed_cb(gui_members_changed_fn cb) {
g_members_changed_cb = cb;
}
void gui_bridge_set_my_node_id_cb(gui_my_node_id_fn cb) {
g_my_node_id_cb = cb;
}
} /* extern "C" */
#include "gui_bridge_impl.moc"