7#include "searchlinecommand.h"
8#include <KLocalizedString>
12 {
"subject"_L1, SearchLineCommand::SearchLineType::Subject},
13 {
"to"_L1, SearchLineCommand::SearchLineType::To},
14 {
"cc"_L1, SearchLineCommand::SearchLineType::Cc},
15 {
"bcc"_L1, SearchLineCommand::SearchLineType::Bcc},
16 {
"from"_L1, SearchLineCommand::SearchLineType::From},
17 {
"has:attachment"_L1, SearchLineCommand::SearchLineType::HasAttachment},
18 {
"has:hasinvitation"_L1, SearchLineCommand::SearchLineType::HasInvitation},
19 {
"is:unread"_L1, SearchLineCommand::SearchLineType::IsUnRead},
20 {
"is:read"_L1, SearchLineCommand::SearchLineType::IsRead},
21 {
"is:important"_L1, SearchLineCommand::SearchLineType::IsImportant},
22 {
"is:ignored"_L1, SearchLineCommand::SearchLineType::IsIgnored},
23 {
"is:ham"_L1, SearchLineCommand::SearchLineType::IsHam},
24 {
"is:spam"_L1, SearchLineCommand::SearchLineType::IsSpam},
25 {
"is:watched"_L1, SearchLineCommand::SearchLineType::IsWatched},
26 {
"is:replied"_L1, SearchLineCommand::SearchLineType::IsReplied},
27 {
"is:forwarded"_L1, SearchLineCommand::SearchLineType::IsForwarded},
29SearchLineCommand::SearchLineCommand() =
default;
31SearchLineCommand::~SearchLineCommand() =
default;
33bool SearchLineCommand::hasSubType(
const QString &v)
38QString SearchLineCommand::convertSearchLinetypeToTranslatedString(SearchLineCommand::SearchLineType type)
const
42 case HasStateOrAttachment:
48 return i18n(
"To contains");
50 return i18n(
"BCC contains");
52 return i18n(
"CC contains");
54 return i18n(
"From contains");
56 return i18n(
"Subject contains");
58 return i18n(
"Mail has attachment");
60 return i18n(
"Mail has invitation");
62 return i18n(
"Mail is important");
64 return i18n(
"Mail is read");
66 return i18n(
"Mail is Unread");
68 return i18n(
"Mail is Ignored");
70 return i18n(
"Mail is Ham");
72 return i18n(
"Mail is Spam");
74 return i18n(
"Mail is watched");
76 return i18n(
"Mail is replied");
78 return i18n(
"Mail is forwarded");
83QString SearchLineCommand::generateCommadLineStr()
const
86 for (
const auto &info : mSearchLineInfo) {
90 const QString translatedType = convertSearchLinetypeToTranslatedString(info.type);
91 if (!translatedType.
isEmpty()) {
92 result += translatedType;
94 if (!info.argument.isEmpty()) {
95 if (!translatedType.
isEmpty()) {
98 result += info.argument;
104void SearchLineCommand::parseSearchLineCommand(
const QString &str)
106 mSearchLineInfo.
clear();
110 SearchLineInfo searchLineInfo;
113 for (
int i = 0, total = str.
length(); i < total; ++i) {
121 }
else if (hasSubType(tmp)) {
122 searchLineInfo.type = HasStateOrAttachment;
129 searchLineInfo.type = mKeyList.
value(tmp);
134 if (searchLineInfo.type != Unknown && parentheses == 0) {
135 searchLineInfo.argument = tmp;
140 if (searchLineInfo.isValid() && parentheses == 0) {
141 mSearchLineInfo.append(std::move(searchLineInfo));
142 searchLineInfo.clear();
147 if (parentheses > 1) {
153 if (parentheses > 0) {
157 if (parentheses == 0) {
158 searchLineInfo.argument = tmp;
161 mSearchLineInfo.append(std::move(searchLineInfo));
162 searchLineInfo.clear();
169 if (searchLineInfo.type != Unknown) {
170 if (searchLineInfo.type == HasStateOrAttachment) {
172 searchLineInfo.type = mKeyList.
value(tmp);
173 mSearchLineInfo.append(std::move(searchLineInfo));
177 searchLineInfo.argument = tmp;
178 mSearchLineInfo.
append(std::move(searchLineInfo));
183 searchLineInfo.type = Literal;
184 searchLineInfo.argument = tmp;
185 mSearchLineInfo.
append(std::move(searchLineInfo));
198 return mSearchLineInfo;
203 mSearchLineInfo = newSearchLineInfo;
206void SearchLineCommand::SearchLineInfo::clear()
208 type = SearchLineCommand::SearchLineType::Unknown;
212bool SearchLineCommand::SearchLineInfo::isValid()
const
214 if (type == SearchLineType::Unknown) {
220bool SearchLineCommand::SearchLineInfo::operator==(
const SearchLineInfo &other)
const
222 return type == other.type && argument == other.argument;
227 d <<
" type " << info.type;
228 d <<
" argument " << info.argument;
232#include "moc_searchlinecommand.cpp"
QString i18n(const char *text, const TYPE &arg...)
KTEXTEDITOR_EXPORT QDebug operator<<(QDebug s, const MovingCursor &cursor)
The implementation independent part of the MessageList library.
bool isSpace(char32_t ucs4)
bool contains(const Key &key) const const
T value(const Key &key, const T &defaultValue) const const
QString & append(QChar ch)
const QChar at(qsizetype position) const const
bool isEmpty() const const
qsizetype length() const const
QString trimmed() const const