KActivitiesStats 5.109.0
query.h
1/*
2 SPDX-FileCopyrightText: 2015, 2016 Ivan Cukic <ivan.cukic(at)kde.org>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#ifndef KACTIVITIES_STATS_QUERY_H
8#define KACTIVITIES_STATS_QUERY_H
9
10#include <initializer_list>
11
12#include <QString>
13#include <QStringList>
14
15#include "kactivitiesstats_export.h"
16
17#include "terms.h"
18
19namespace KActivities
20{
21namespace Stats
22{
23class QueryPrivate;
24
53class KACTIVITIESSTATS_EXPORT Query
54{
55public:
56 Query(Terms::Select selection = Terms::AllResources);
57
58 // The damned rule of five minus one :)
59 Query(Query &&source);
60 Query(const Query &source);
61 Query &operator=(Query source);
62 ~Query();
63
64 // Not all are born equal
65 bool operator==(const Query &right) const;
66 bool operator!=(const Query &right) const;
67
68 Terms::Select selection() const;
69 QStringList types() const;
70 QStringList agents() const;
71 QStringList activities() const;
72
73 QStringList urlFilters() const;
74 Terms::Order ordering() const;
75 int offset() const;
76 int limit() const;
77 QDate dateStart() const;
78 QDate dateEnd() const;
79
80 void setSelection(Terms::Select selection);
81
82 void addTypes(const QStringList &types);
83 void addAgents(const QStringList &agents);
84 void addActivities(const QStringList &activities);
85 void addUrlFilters(const QStringList &urlFilters);
89 void setTypes(const Terms::Type &types);
93 void setAgents(const Terms::Agent &agents);
97 void setActivities(const Terms::Activity &activities);
101 void setUrlFilters(const Terms::Url &urlFilters);
102 void setOrdering(Terms::Order ordering);
103 void setOffset(int offset);
104 void setLimit(int limit);
108 void setDate(const Terms::Date &date);
109 void setDateStart(QDate date);
110 void setDateEnd(QDate date);
111
112 void clearTypes();
113 void clearAgents();
114 void clearActivities();
115 void clearUrlFilters();
116
117 void removeTypes(const QStringList &types);
118 void removeAgents(const QStringList &agents);
119 void removeActivities(const QStringList &activities);
120 void removeUrlFilters(const QStringList &urlFilters);
121
122private:
123 inline void addTerm(const Terms::Type &term)
124 {
125 addTypes(term.values);
126 }
127
128 inline void addTerm(const Terms::Agent &term)
129 {
130 addAgents(term.values);
131 }
132
133 inline void addTerm(const Terms::Activity &term)
134 {
135 addActivities(term.values);
136 }
137
138 inline void addTerm(const Terms::Url &term)
139 {
140 addUrlFilters(term.values);
141 }
142
143 inline void addTerm(Terms::Order ordering)
144 {
145 setOrdering(ordering);
146 }
147
148 inline void addTerm(Terms::Select selection)
149 {
150 setSelection(selection);
151 }
152
153 inline void addTerm(Terms::Limit limit)
154 {
155 setLimit(limit.value);
156 }
157
158 inline void addTerm(Terms::Offset offset)
159 {
160 setOffset(offset.value);
161 }
162
163 inline void addTerm(Terms::Date date)
164 {
165 setDateStart(date.start);
166 setDateEnd(date.end);
167 }
168
169public:
170 template<typename Term>
171 friend inline Query operator|(const Query &query, Term &&term)
172 {
173 Query result(query);
174 result.addTerm(term);
175 return result;
176 }
177
178 template<typename Term>
179 friend inline Query operator|(Query &&query, Term &&term)
180 {
181 query.addTerm(term);
182 return std::move(query);
183 }
184
185private:
186 QueryPrivate *d;
187};
188
189template<typename Term>
190inline Query operator|(Terms::Select selection, Term &&term)
191{
192 return Query(selection) | term;
193}
194
195} // namespace Stats
196} // namespace KActivities
197
198KACTIVITIESSTATS_EXPORT
199QDebug operator<<(QDebug dbg, const KActivities::Stats::Query &query);
200
201#endif // KACTIVITIES_STATS_QUERY_H
The activities system tracks resources (documents, contacts, etc.) that the user has used.
Definition query.h:54
void setAgents(const Terms::Agent &agents)
void setTypes(const Terms::Type &types)
void setUrlFilters(const Terms::Url &urlFilters)
void setDate(const Terms::Date &date)
void setActivities(const Terms::Activity &activities)
Order
Enumerator specifying the ordering in which the results of the query should be listed.
Definition terms.h:32
Select
Which resources should be returned.
Definition terms.h:43
Term to filter the resources according the activity in which they were accessed.
Definition terms.h:140
Term to filter the resources according the agent (application) which accessed it.
Definition terms.h:107
On which start access date do you want to filter ?
Definition terms.h:209
Term to filter the resources according to their types.
Definition terms.h:76
Url filtering.
Definition terms.h:172