8#include "common/specialvalues.h"
12constexpr int s_defaultCacheSize = 50;
20inline void validateTypes(QStringList &types)
26inline void validateAgents(QStringList &agents)
32inline void validateActivities(QStringList &activities)
38inline void validateFilters(QStringList &filters)
40 for (
auto it = filters.
begin(), end = filters.
end(); it != end; ++it) {
41 it->replace(QLatin1String(
"'"), QLatin1String(
""));
44inline void validateUrlFilters(QStringList &urlFilters)
46 validateFilters(urlFilters);
49inline void validateTitleFilters(QStringList &titleFilters)
51 validateFilters(titleFilters);
60 : ordering(Terms::HighScoredFirst)
61 , limit(s_defaultCacheSize)
66 Terms::Select selection;
69 QStringList activities;
70 QStringList urlFilters;
71 QStringList titleFilters;
72 Terms::Order ordering;
78Query::Query(Terms::Select selection)
79 : d(new QueryPrivate())
81 d->selection = selection;
84Query::Query(Query &&source)
87 std::swap(d, source.d);
90Query::Query(
const Query &source)
91 : d(new QueryPrivate(*source.d))
95Query &Query::operator=(Query source)
97 std::swap(d, source.d);
106bool Query::operator==(
const Query &right)
const
108 return selection() ==
right.selection()
109 && types() ==
right.types()
110 && agents() ==
right.agents()
111 && activities() ==
right.activities()
112 && selection() ==
right.selection()
113 && urlFilters() ==
right.urlFilters()
114 && dateStart() ==
right.dateStart()
115 && dateEnd() ==
right.dateEnd();
118bool Query::operator!=(
const Query &right)
const
120 return !(*
this ==
right);
123#define IMPLEMENT_QUERY_LIST_FIELD(WHAT, What, Term, Default) \
124 void Query::add##WHAT(const QStringList &What) \
127 details::validate##WHAT(d->What); \
130 void Query::set##WHAT(const Terms::Term &What) \
132 d->What = What.values; \
133 details::validate##WHAT(d->What); \
136 QStringList Query::What() const \
138 return d->What.size() ? d->What : Default; \
141 void Query::clear##WHAT() \
146IMPLEMENT_QUERY_LIST_FIELD(Types, types, Type,
QStringList(ANY_TYPE_TAG))
147IMPLEMENT_QUERY_LIST_FIELD(Agents, agents,
Agent,
QStringList(CURRENT_AGENT_TAG))
148IMPLEMENT_QUERY_LIST_FIELD(Activities, activities, Activity,
QStringList(CURRENT_ACTIVITY_TAG))
149IMPLEMENT_QUERY_LIST_FIELD(UrlFilters, urlFilters, Url,
QStringList(QStringLiteral(
"*")))
150IMPLEMENT_QUERY_LIST_FIELD(TitleFilters, titleFilters, Title,
QStringList(QStringLiteral(
"*")))
152#undef IMPLEMENT_QUERY_LIST_FIELD
154void Query::setOrdering(Terms::Order ordering)
156 d->ordering = ordering;
159void Query::setSelection(Terms::Select selection)
161 d->selection = selection;
164void Query::setLimit(
int limit)
169void Query::setOffset(
int offset)
176 d->start = date.start;
185void Query::setDateEnd(
QDate end)
190Terms::Order Query::ordering()
const
195Terms::Select Query::selection()
const
200int Query::limit()
const
205int Query::offset()
const
207 Q_ASSERT_X(d->limit > 0,
"Query::offset",
"Offset can only be specified if limit is set");
211QDate Query::dateStart()
const
216QDate Query::dateEnd()
const
223namespace KAStats = KActivities::Stats;
233 <<
", " << Type(
query.types())
235 <<
", " << Activity(
query.activities())
236 <<
", " << Url(
query.urlFilters())
237 <<
", " << Date(
query.dateStart(),
query.dateEnd())
238 <<
", " <<
query.ordering()
239 <<
", Limit: " <<
query.limit()
The activities system tracks resources (documents, contacts, etc.) that the user has used.
void setDate(const Terms::Date &date)
Q_SCRIPTABLE QString start(QString train="")
Provides enums and strucss to use.for building queries with Query.
KSERVICE_EXPORT KService::List query(FilterFunc filterFunc)
QTextStream & right(QTextStream &stream)
On which start access date do you want to filter ?