You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

57 lines
1.5 KiB

/*
SPDX-FileCopyrightText: 2015-2021 Laurent Montel <montel@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#include <Akonadi/Item>
#include "ki18n_version.h"
#include "mailcommon/searchpattern.h"
#include <Akonadi/KMime/MessageStatus>
#if KI18N_VERSION >= QT_VERSION_CHECK(5, 89, 0)
#include <klazylocalizedstring.h>
#undef I18NC_NOOP
#define I18NC_NOOP kli18nc
#endif
namespace MailCommon
{
/**
* This class represents a search to be performed against the status of a
* message. The status is represented by a bitfield.
*
* @short This class represents a search pattern rule operating on message
* status.
*/
class MAILCOMMON_EXPORT SearchRuleStatus : public SearchRule
{
public:
explicit SearchRuleStatus(const QByteArray &field = QByteArray(), Function function = FuncContains, const QString &contents = QString());
explicit SearchRuleStatus(Akonadi::MessageStatus status, Function function = FuncContains);
bool isEmpty() const override;
bool matches(const Akonadi::Item &item) const override;
/**
* @copydoc SearchRule::requiredPart()
*/
RequiredPart requiredPart() const override;
void addQueryTerms(Akonadi::SearchTerm &groupTerm, bool &emptyIsNotAnError) const override;
// Not possible to implement optimized form for status searching
using SearchRule::matches;
static Akonadi::MessageStatus statusFromEnglishName(const QString &);
QString informationAboutNotValidRules() const override;
private:
Akonadi::MessageStatus mStatus;
};
}