From d3306c63a55efa9acf172692b7ec636d98da2026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Vr=C3=A1til?= Date: Mon, 18 Sep 2017 18:18:48 +0200 Subject: [PATCH] Fix explicitly applying filters on collections --- agents/mailfilteragent/filtermanager.cpp | 6 +++++- agents/mailfilteragent/filtermanager.h | 3 ++- agents/mailfilteragent/mailfilteragent.cpp | 4 ++-- agents/mailfilteragent/mailfilteragent.h | 2 +- .../org.freedesktop.Akonadi.MailFilterAgent.xml | 1 + 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/agents/mailfilteragent/filtermanager.cpp b/agents/mailfilteragent/filtermanager.cpp index 1c39cbd0f..4cc3e7aaf 100644 --- a/agents/mailfilteragent/filtermanager.cpp +++ b/agents/mailfilteragent/filtermanager.cpp @@ -596,7 +596,10 @@ void FilterManager::dump() const #endif -void FilterManager::applySpecificFilters(const Akonadi::Item::List &selectedMessages, SearchRule::RequiredPart requiredPart, const QStringList &listFilters) +void FilterManager::applySpecificFilters(const Akonadi::Item::List &selectedMessages, + SearchRule::RequiredPart requiredPart, + const QStringList &listFilters, + FilterSet filterSet) { Q_EMIT progressMessage(i18n("Filtering messages")); d->mTotalProgressCount = selectedMessages.size(); @@ -613,6 +616,7 @@ void FilterManager::applySpecificFilters(const Akonadi::Item::List &selectedMess itemFetchJob->fetchScope().setAncestorRetrieval(Akonadi::ItemFetchScope::Parent); itemFetchJob->setProperty("listFilters", QVariant::fromValue(listFilters)); + itemFetchJob->setProperty("filterSet", QVariant::fromValue(static_cast(filterSet))); itemFetchJob->setProperty("needsFullPayload", requiredPart != SearchRule::Envelope); connect(itemFetchJob, SIGNAL(itemsReceived(Akonadi::Item::List)), diff --git a/agents/mailfilteragent/filtermanager.h b/agents/mailfilteragent/filtermanager.h index b9ff540d9..93295873d 100644 --- a/agents/mailfilteragent/filtermanager.h +++ b/agents/mailfilteragent/filtermanager.h @@ -110,7 +110,8 @@ public: void filter(const Akonadi::Item &item, FilterManager::FilterSet set, const QString &resourceId); void filter(const Akonadi::Item &item, const QString &filterId, const QString &resourceId); - void applySpecificFilters(const Akonadi::Item::List &selectedMessages, MailCommon::SearchRule::RequiredPart requiredPart, const QStringList &listFilters); + void applySpecificFilters(const Akonadi::Item::List &selectedMessages, MailCommon::SearchRule::RequiredPart requiredPart, + const QStringList &listFilters, FilterSet set = Explicit); /** * Applies the filters on the given @p messages. diff --git a/agents/mailfilteragent/mailfilteragent.cpp b/agents/mailfilteragent/mailfilteragent.cpp index c3fccc373..a50241bae 100644 --- a/agents/mailfilteragent/mailfilteragent.cpp +++ b/agents/mailfilteragent/mailfilteragent.cpp @@ -341,7 +341,7 @@ void MailFilterAgent::applySpecificFilters(const QList< qint64 > &itemIds, int r m_filterManager->applySpecificFilters(items, static_cast(requires), listFilters); } -void MailFilterAgent::applySpecificFiltersOnCollections(const QList &colIds, const QStringList &listFilters) +void MailFilterAgent::applySpecificFiltersOnCollections(const QList &colIds, const QStringList &listFilters, int filterSet) { // TODO: Actually calculate this based on the listFilters' requirements const auto requires = MailCommon::SearchRule::CompleteMessage; @@ -355,7 +355,7 @@ void MailFilterAgent::applySpecificFiltersOnCollections(const QList &col ifj->setDeliveryOption(Akonadi::ItemFetchJob::EmitItemsInBatches); connect(ifj, &Akonadi::ItemFetchJob::itemsReceived, this, [=](const Akonadi::Item::List &items) { - m_filterManager->applySpecificFilters(items, requires, listFilters); + m_filterManager->applySpecificFilters(items, requires, listFilters, static_cast(filterSet)); }); } } diff --git a/agents/mailfilteragent/mailfilteragent.h b/agents/mailfilteragent/mailfilteragent.h index 5faccf440..4e6caaa1d 100644 --- a/agents/mailfilteragent/mailfilteragent.h +++ b/agents/mailfilteragent/mailfilteragent.h @@ -52,7 +52,7 @@ public: void filter(qint64 item, const QString &filterIdentifier, const QString &resourceId); void filterCollections(const QList &collections, int filterSet); void applySpecificFilters(const QList< qint64 > &itemIds, int requires, const QStringList &listFilters); - void applySpecificFiltersOnCollections(const QList &colIds, const QStringList &listFilters); + void applySpecificFiltersOnCollections(const QList &colIds, const QStringList &listFilters, int filterSet); void reload(); diff --git a/agents/mailfilteragent/org.freedesktop.Akonadi.MailFilterAgent.xml b/agents/mailfilteragent/org.freedesktop.Akonadi.MailFilterAgent.xml index baa5c6386..0c812b827 100644 --- a/agents/mailfilteragent/org.freedesktop.Akonadi.MailFilterAgent.xml +++ b/agents/mailfilteragent/org.freedesktop.Akonadi.MailFilterAgent.xml @@ -34,6 +34,7 @@ +