feature: media auto-download + manual download + UI download state indication (Android + desktop)
C-layer: - chat_event.h: CHAT_EVT_ATTACHMENT_DOWNLOADED (14) - chat_msg.c: fixed md_auto_download (non-NULL done_cb, correct media_base from db_path, use chat_setting for autoload checks) - chat_msg.c: added chat_core_attachment_download + trampoline for manual download - chat_core.h: exported attachment_dl_req + trampoline Android (Kotlin + JNI): - Message: downloadState field (parse from localAttrs) - ChatRepository: parse localAttrs for download state - NativeLib: attachmentDownload() JNI - MessageBubble: FileBubble with download status icon + tap-to-download - ChatViewModel: downloadAttachment() + CHAT_EVT_ATTACHMENT_DOWNLOADED handler - ChatScreen: wire onDownloadFile handler - android_jni_bridge: utun_bridge_attachment_download + JNI + localAttrs in JSON Desktop (Qt/C++): - messagedelegate.h: MsgFileDownloadStateRole, MsgChannelIdRole - messagelist.cpp: parse localAttrs for file download state - messagedelegate.cpp: FileBubble with download icon/text + click handler via chat_core_attachment_download_trampoline - gui_bridge.h: GUI_EVT_ATTACHMENT_DOWNLOADED (14) + callback typedef - gui_bridge_impl.cpp: event dispatch + setter - mainwindow.cpp: callback registration -> refresh message list
This commit is contained in:
1 parent
b8920cf483
commit
70797f921e
23 files changed
+558
-174
No files matched your search
@@ -256,6 +256,14 @@ void MainWindow::setupBridgeCallbacks() {
|
||||
s_mainWindow->m_messageList->loadChannel(lastCid);
|
||||
}
|
||||
});
|
||||
gui_bridge_set_attachment_downloaded_cb([](const char* ch_id, int ch_id_len, int64_t msg_id) {
|
||||
(void)msg_id;
|
||||
if (!s_mainWindow) return;
|
||||
QString chId = QString::fromUtf8(ch_id, ch_id_len);
|
||||
s_mainWindow->m_channelList->loadChannels();
|
||||
if (chId == s_mainWindow->m_currentChannelId)
|
||||
s_mainWindow->m_messageList->refresh();
|
||||
});
|
||||
}
|
||||
|
||||
void MainWindow::setupConnects() {
|
||||
|
||||
Reference in new issue
Block a user