summaryrefslogtreecommitdiffstats
path: root/common/query.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/query.cpp')
-rw-r--r--common/query.cpp82
1 files changed, 78 insertions, 4 deletions
diff --git a/common/query.cpp b/common/query.cpp
index a43ef6c..67b74cc 100644
--- a/common/query.cpp
+++ b/common/query.cpp
@@ -19,6 +19,9 @@
19 */ 19 */
20#include "query.h" 20#include "query.h"
21 21
22#include <QList>
23#include <QDataStream>
24
22using namespace Sink; 25using namespace Sink;
23 26
24QDebug operator<<(QDebug dbg, const Sink::Query::Comparator &c) 27QDebug operator<<(QDebug dbg, const Sink::Query::Comparator &c)
@@ -34,19 +37,85 @@ QDebug operator<<(QDebug dbg, const Sink::Query::Comparator &c)
34 return dbg.space(); 37 return dbg.space();
35} 38}
36 39
37Query::Comparator::Comparator() : comparator(Invalid) 40QDataStream & operator<< (QDataStream &stream, const Sink::QueryBase::Comparator &comparator)
41{
42 stream << comparator.comparator;
43 stream << comparator.value;
44 return stream;
45}
46
47QDataStream & operator>> (QDataStream &stream, Sink::QueryBase::Comparator &comparator)
48{
49 int c;
50 stream >> c;
51 comparator.comparator = static_cast<Sink::QueryBase::Comparator::Comparators>(c);
52 stream >> comparator.value;
53 return stream;
54}
55
56QDataStream & operator<< (QDataStream &stream, const Sink::QueryBase::Filter &filter)
57{
58 stream << filter.ids;
59 stream << filter.propertyFilter;
60 return stream;
61}
62
63QDataStream & operator>> (QDataStream &stream, Sink::QueryBase::Filter &filter)
64{
65 stream >> filter.ids;
66 stream >> filter.propertyFilter;
67 return stream;
68}
69
70QDataStream & operator<< (QDataStream &stream, const Sink::QueryBase &query)
71{
72 stream << query.type();
73 stream << query.sortProperty();
74 stream << query.getFilter();
75 return stream;
76}
77
78QDataStream & operator>> (QDataStream &stream, Sink::QueryBase &query)
79{
80 QByteArray type;
81 stream >> type;
82 query.setType(type);
83 QByteArray sortProperty;
84 stream >> sortProperty;
85 query.setSortProperty(sortProperty);
86 Sink::QueryBase::Filter filter;
87 stream >> filter;
88 query.setFilter(filter);
89 return stream;
90}
91
92bool QueryBase::Filter::operator==(const QueryBase::Filter &other) const
93{
94 auto ret = ids == other.ids && propertyFilter == other.propertyFilter;
95 return ret;
96}
97
98bool QueryBase::operator==(const QueryBase &other) const
99{
100 auto ret = mType == other.mType
101 && mSortProperty == other.mSortProperty
102 && mBaseFilterStage == other.mBaseFilterStage;
103 return ret;
104}
105
106QueryBase::Comparator::Comparator() : comparator(Invalid)
38{ 107{
39} 108}
40 109
41Query::Comparator::Comparator(const QVariant &v) : value(v), comparator(Equals) 110QueryBase::Comparator::Comparator(const QVariant &v) : value(v), comparator(Equals)
42{ 111{
43} 112}
44 113
45Query::Comparator::Comparator(const QVariant &v, Comparators c) : value(v), comparator(c) 114QueryBase::Comparator::Comparator(const QVariant &v, Comparators c) : value(v), comparator(c)
46{ 115{
47} 116}
48 117
49bool Query::Comparator::matches(const QVariant &v) const 118bool QueryBase::Comparator::matches(const QVariant &v) const
50{ 119{
51 switch(comparator) { 120 switch(comparator) {
52 case Equals: 121 case Equals:
@@ -73,3 +142,8 @@ bool Query::Comparator::matches(const QVariant &v) const
73 } 142 }
74 return false; 143 return false;
75} 144}
145
146bool Query::Comparator::operator==(const Query::Comparator &other) const
147{
148 return value == other.value && comparator == other.comparator;
149}