qTox
Version: nightly | Commit: bc751c8e1cac455f9690654fcfe0f560d2d7dfdd
src
widget
searchtypes.h
Go to the documentation of this file.
1
/*
2
Copyright © 2019 by The qTox Project Contributors
3
4
This file is part of qTox, a Qt-based graphical interface for Tox.
5
6
qTox is libre software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
qTox is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with qTox. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#pragma once
21
22
#include <QDate>
23
#include <QRegularExpression>
24
25
enum class
FilterSearch
{
26
None
,
27
Register
,
28
WordsOnly
,
29
Regular
,
30
RegisterAndWordsOnly
,
31
RegisterAndRegular
32
};
33
34
enum class
PeriodSearch
{
35
None
,
36
WithTheEnd
,
37
WithTheFirst
,
38
AfterDate
,
39
BeforeDate
40
};
41
42
enum class
SearchDirection
{
43
Up
,
44
Down
45
};
46
47
struct
ParameterSearch
{
48
FilterSearch
filter
{
FilterSearch::None
};
49
PeriodSearch
period
{
PeriodSearch::None
};
50
QDate
date
;
51
bool
isUpdate
{
false
};
52
53
bool
operator ==
(
const
ParameterSearch
& other) {
54
return
filter
== other.
filter
&&
55
period
== other.
period
&&
56
date
== other.
date
;
57
}
58
59
bool
operator !=
(
const
ParameterSearch
& other) {
60
return
!(*
this
== other);
61
}
62
};
63
64
class
SearchExtraFunctions
{
65
public
:
72
static
QString
generateFilterWordsOnly
(
const
QString &phrase) {
73
QString filter = QRegularExpression::escape(phrase);
74
75
const
QString symbols = QStringLiteral(
"\\[]/^$.|?*+(){}"
);
76
77
if
(filter != phrase) {
78
if
(filter.left(1) != QLatin1String(
"\\"
)) {
79
filter = QLatin1String(
"\\b"
) + filter;
80
}
else
{
81
filter = QLatin1String(
"(^|\\s)"
) + filter;
82
}
83
if
(!symbols.contains(filter.right(1))) {
84
filter += QLatin1String(
"\\b"
);
85
}
else
{
86
filter += QLatin1String(
"($|\\s)"
);
87
}
88
}
else
{
89
filter = QStringLiteral(
"\\b%1\\b"
).arg(filter);
90
}
91
92
return
filter;
93
}
94
};
SearchDirection::Down
@ Down
FilterSearch
FilterSearch
Definition:
searchtypes.h:25
FilterSearch::Register
@ Register
ParameterSearch::date
QDate date
Definition:
searchtypes.h:50
SearchDirection
SearchDirection
Definition:
searchtypes.h:42
FilterSearch::RegisterAndWordsOnly
@ RegisterAndWordsOnly
ParameterSearch::filter
FilterSearch filter
Definition:
searchtypes.h:48
PeriodSearch::AfterDate
@ AfterDate
PeriodSearch::BeforeDate
@ BeforeDate
SearchDirection::Up
@ Up
ParameterSearch
Definition:
searchtypes.h:47
ParameterSearch::operator==
bool operator==(const ParameterSearch &other)
Definition:
searchtypes.h:53
PeriodSearch::WithTheEnd
@ WithTheEnd
FilterSearch::None
@ None
PeriodSearch::None
@ None
ParameterSearch::period
PeriodSearch period
Definition:
searchtypes.h:49
PeriodSearch::WithTheFirst
@ WithTheFirst
SearchExtraFunctions
Definition:
searchtypes.h:64
FilterSearch::WordsOnly
@ WordsOnly
ParameterSearch::isUpdate
bool isUpdate
Definition:
searchtypes.h:51
FilterSearch::RegisterAndRegular
@ RegisterAndRegular
SearchExtraFunctions::generateFilterWordsOnly
static QString generateFilterWordsOnly(const QString &phrase)
generateFilterWordsOnly generate string for filter "Whole words only" for correct search phrase conta...
Definition:
searchtypes.h:72
ParameterSearch::operator!=
bool operator!=(const ParameterSearch &other)
Definition:
searchtypes.h:59
FilterSearch::Regular
@ Regular
PeriodSearch
PeriodSearch
Definition:
searchtypes.h:34
Generated by
1.8.17