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 }