File indexing completed on 2024-06-23 05:17:57
0001 /* 0002 SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <Akonadi/Item> 0010 0011 #include "mailcommon/searchpattern.h" 0012 #include <Akonadi/MessageStatus> 0013 0014 namespace MailCommon 0015 { 0016 /** 0017 * This class represents a search to be performed against the status of a 0018 * message. The status is represented by a bitfield. 0019 * 0020 * @short This class represents a search pattern rule operating on message 0021 * status. 0022 */ 0023 class MAILCOMMON_EXPORT SearchRuleStatus : public SearchRule 0024 { 0025 public: 0026 explicit SearchRuleStatus(const QByteArray &field = QByteArray(), Function function = FuncContains, const QString &contents = QString()); 0027 0028 explicit SearchRuleStatus(Akonadi::MessageStatus status, Function function = FuncContains); 0029 0030 [[nodiscard]] bool isEmpty() const override; 0031 [[nodiscard]] bool matches(const Akonadi::Item &item) const override; 0032 0033 /** 0034 * @copydoc SearchRule::requiredPart() 0035 */ 0036 [[nodiscard]] RequiredPart requiredPart() const override; 0037 0038 void addQueryTerms(Akonadi::SearchTerm &groupTerm, bool &emptyIsNotAnError) const override; 0039 0040 // Not possible to implement optimized form for status searching 0041 using SearchRule::matches; 0042 0043 static Akonadi::MessageStatus statusFromEnglishName(const QString &); 0044 0045 [[nodiscard]] QString informationAboutNotValidRules() const override; 0046 0047 private: 0048 Akonadi::MessageStatus mStatus; 0049 }; 0050 }