aboutsummaryrefslogtreecommitdiffstats
path: root/src/CMakeLists.txt
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-08-03 08:56:33 +0200
committerDanilo M. <danix@danix.xyz>2026-08-03 08:56:33 +0200
commitc6c1011222361b446fb3cdee1ad324fe54931abc (patch)
tree89aa8a114b327feeb10d83ffec566ec61f24feb3 /src/CMakeLists.txt
parent9564794135c3a90fc3988e42233adfd819c5881d (diff)
downloadqtmaildir-c6c1011222361b446fb3cdee1ad324fe54931abc.tar.gz
qtmaildir-c6c1011222361b446fb3cdee1ad324fe54931abc.zip
feat: add ThreadListModel with batch append
QAbstractTableModel over query results, appended in batches so a large query paints its first screenful immediately. Tag changes apply locally for optimistic UI; reverting a failed write means calling applyTagChange again with added and removed swapped, which the round-trip test pins. Two additions to the drafted version: - A ThreadIdRole, so a view's QModelIndex maps back to the thread id the worker speaks without every caller reaching around the model. - data() checks its own row and column bounds. Qt will not hand out an out-of-range index and invalidates persistent ones on reset, so this is unreachable defence rather than a live path; the test says so instead of pretending to cover it. Verified by mutation that the empty-batch guard, the ThreadIdRole, and the full-row dataChanged range each fail exactly one test when removed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r--src/CMakeLists.txt1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 5198429..5f01128 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,6 +6,7 @@ add_library(qtmaildir_lib STATIC
htmlbuilder.cpp
cidschemehandler.cpp
notmuchworker.cpp
+ threadlistmodel.cpp
)
target_include_directories(qtmaildir_lib