summaryrefslogtreecommitdiffstats
path: root/common/query.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-05-01 16:22:55 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-05-01 16:22:55 +0200
commit096d14f20f4dc39d20d35d605ca755b66bd48cf9 (patch)
tree4b28dd3b310ebcfa9cefa1b41992eeefa5456764 /common/query.cpp
parentc1475df297975b403d991f69ef9436cd576c1e46 (diff)
downloadsink-096d14f20f4dc39d20d35d605ca755b66bd48cf9.tar.gz
sink-096d14f20f4dc39d20d35d605ca755b66bd48cf9.zip
Account filter for resources and contains comparator in query
Diffstat (limited to 'common/query.cpp')
-rw-r--r--common/query.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/common/query.cpp b/common/query.cpp
new file mode 100644
index 0000000..a80aecb
--- /dev/null
+++ b/common/query.cpp
@@ -0,0 +1,56 @@
1/*
2 * Copyright (C) 2014 Christian Mollekopf <chrigi_1@fastmail.fm>
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) version 3, or any
8 * later version accepted by the membership of KDE e.V. (or its
9 * successor approved by the membership of KDE e.V.), which shall
10 * act as a proxy defined in Section 6 of version 3 of the license.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
19 */
20#include "query.h"
21
22using namespace Sink;
23
24QDebug operator<<(QDebug dbg, const Sink::Query::Comparator &c)
25{
26 if (c.comparator == Sink::Query::Comparator::Equals) {
27 dbg.nospace() << "== " << c.value;
28 } else if (c.comparator == Sink::Query::Comparator::Contains) {
29 dbg.nospace() << "contains " << c.value;
30 } else {
31 dbg.nospace() << "unknown comparator: " << c.value;
32 }
33
34 return dbg.space();
35}
36
37Query::Comparator::Comparator() : comparator(Invalid)
38{
39}
40
41Query::Comparator::Comparator(const QVariant &v) : value(v), comparator(Equals)
42{
43}
44
45bool Query::Comparator::matches(const QVariant &v) const
46{
47 switch(comparator) {
48 case Equals:
49 return v == value;
50 case Contains:
51 return v.toList().contains(value);
52 default:
53 break;
54 }
55 return false;
56}