diff options
Diffstat (limited to 'src/notmuchworker.cpp')
| -rw-r--r-- | src/notmuchworker.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/notmuchworker.cpp b/src/notmuchworker.cpp index 2588f4e..d41b54b 100644 --- a/src/notmuchworker.cpp +++ b/src/notmuchworker.cpp @@ -41,6 +41,7 @@ #include "maildirname.h" #include "mimeparser.h" #include "nmraii.h" +#include "searchterm.h" namespace { @@ -1082,6 +1083,27 @@ void NotmuchWorker::applyTagsToThreads(const QStringList &threadIds, applyTags(TagChange{ messageIds, add, remove, description }); } +void NotmuchWorker::applyTagsToQuery(const QString &query, + const QStringList &add, + const QStringList &remove, + const QString &description) +{ + if (!openReadOnly()) + return; + + QStringList messageIds; + if (!collectMessageIds(m_db, SearchTerm::changes(query, add, remove), + &messageIds)) { + emit errorOccurred(QStringLiteral("Cannot resolve the rule's query")); + return; + } + + // Empty is not an error: the rule has nothing left to do. applyTags() + // returns at once on an empty list, and stays silent, as it must + // (CLAUDE.md, item 176). + applyTags(TagChange{ messageIds, add, remove, description }); +} + void NotmuchWorker::applyTags(const TagChange &change) { if (change.messageIds.isEmpty()) |
