summaryrefslogtreecommitdiffstats
path: root/src/notmuchworker.h
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-08-12 11:49:40 +0200
committerDanilo M. <danix@danix.xyz>2026-08-12 11:49:40 +0200
commit01ecb8c4e3bbf8176ca9d4085734ed2ec0774c80 (patch)
treeb0051bd24959fd544bf55d099ca91fc51cdd3950 /src/notmuchworker.h
parentd14c0224826f821b34c894037ab668ddfde29a6d (diff)
downloadqtmaildir-01ecb8c4e3bbf8176ca9d4085734ed2ec0774c80.tar.gz
qtmaildir-01ecb8c4e3bbf8176ca9d4085734ed2ec0774c80.zip
feat(worker): count messages as well as threads
requestCounts counts threads, which is right for the placeholder pane. A tagging rule tags messages, so a dry run over rules needs the message count or it understates every rule that matches part of a thread.
Diffstat (limited to 'src/notmuchworker.h')
-rw-r--r--src/notmuchworker.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/notmuchworker.h b/src/notmuchworker.h
index 2dd766f..b3fbed3 100644
--- a/src/notmuchworker.h
+++ b/src/notmuchworker.h
@@ -130,6 +130,14 @@ public slots:
/// refreshing one nobody is looking at is work for nothing.
void requestCounts(const QStringList &queries, quint64 generation);
+ /// Message counts for each query, positionally paired with the input.
+ ///
+ /// Beside requestCounts rather than replacing it: that one counts THREADS,
+ /// which is right for the placeholder pane because a click there produces
+ /// thread rows. A tagging rule tags messages, so a thread count would
+ /// understate any rule matching part of a large thread.
+ void requestMessageCounts(const QStringList &queries, quint64 generation);
+
/// Database-level facts for the Maildir overview (item 34): total messages,
/// total threads, and the number of tags.
///
@@ -158,6 +166,11 @@ signals:
/// positional correspondence the caller relies on always holds.
void countsReady(const QVector<int> &counts, quint64 generation);
+ /// The same positional contract as countsReady, over messages rather than
+ /// threads. A dry run over tagging rules pairs these with its own rules by
+ /// index, so an entry is never dropped.
+ void messageCountsReady(const QVector<int> &counts, quint64 generation);
+
/// Fields left at -1 are ones notmuch could not answer, which the dialog
/// renders as unknown rather than as zero.
void databaseStatsReady(const DatabaseStats &stats, quint64 generation);