From 8804a75ae561a7e504fdce8aea58d3ddc8670b71 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Sat, 31 Oct 2026 11:41:08 +0100 Subject: feat: build the query for what a tag change would move Co-Authored-By: Claude Opus 5.5 --- src/searchterm.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/searchterm.cpp') diff --git a/src/searchterm.cpp b/src/searchterm.cpp index 16936df..06d03be 100644 --- a/src/searchterm.cpp +++ b/src/searchterm.cpp @@ -18,6 +18,8 @@ #include "searchterm.h" +#include "config.h" + #include namespace SearchTerm { @@ -108,4 +110,23 @@ QString exclude(const QString &existing, const QString &addition) return QStringLiteral("(%1) AND NOT (%2)").arg(left, right); } +QString changes(const QString &query, const QStringList &add, + const QStringList &remove) +{ + QStringList terms; + for (const QString &name : add) { + const QString term = tag(name); + if (!term.isEmpty()) + terms.append(QStringLiteral("not ") + term); + } + for (const QString &name : remove) { + const QString term = tag(name); + if (!term.isEmpty()) + terms.append(term); + } + if (query.trimmed().isEmpty() || terms.isEmpty()) + return Config::matchNothingQuery(); + return extend(query, terms.join(QStringLiteral(" or "))); +} + } // namespace SearchTerm -- cgit v1.2.3