diff --git a/src/query.h b/src/query.h --- a/src/query.h +++ b/src/query.h @@ -98,9 +98,14 @@ void addAgents(const QStringList &agents); void addActivities(const QStringList &activities); void addUrlFilters(const QStringList &urlFilters); + void setTypes(const Terms::Type &types); + void setAgents(const Terms::Agent &agents); + void setActivities(const Terms::Activity &activities); + void setUrlFilters(const Terms::Url &urlFilters); void setOrdering(Terms::Order ordering); void setOffset(int offset); void setLimit(int limit); + void setDate(const Terms::Date &date); void setDateStart(QDate date); void setDateEnd(QDate date); diff --git a/src/query.cpp b/src/query.cpp --- a/src/query.cpp +++ b/src/query.cpp @@ -20,6 +20,7 @@ */ #include "query.h" +#include "common/specialvalues.h" #include #include @@ -123,13 +124,19 @@ return !(*this == right); } -#define IMPLEMENT_QUERY_LIST_FIELD(WHAT, What, Default) \ +#define IMPLEMENT_QUERY_LIST_FIELD(WHAT, What, Term, Default) \ void Query::add##WHAT(const QStringList &What) \ { \ d->What << What; \ details::validate##WHAT(d->What); \ } \ \ + void Query::set##WHAT(const Terms::Term &What) \ + { \ + d->What = What.values; \ + details::validate##WHAT(d->What); \ + } \ + \ QStringList Query::What() const \ { \ return d->What.size() ? d->What : Default; \ @@ -140,10 +147,10 @@ d->What.clear(); \ } -IMPLEMENT_QUERY_LIST_FIELD(Types, types, QStringList(QStringLiteral(":any"))) -IMPLEMENT_QUERY_LIST_FIELD(Agents, agents, QStringList(QStringLiteral(":current"))) -IMPLEMENT_QUERY_LIST_FIELD(Activities, activities, QStringList(QStringLiteral(":current"))) -IMPLEMENT_QUERY_LIST_FIELD(UrlFilters, urlFilters, QStringList(QStringLiteral("*"))) +IMPLEMENT_QUERY_LIST_FIELD(Types, types, Type, QStringList(ANY_TYPE_TAG)) +IMPLEMENT_QUERY_LIST_FIELD(Agents, agents, Agent, QStringList(CURRENT_AGENT_TAG)) +IMPLEMENT_QUERY_LIST_FIELD(Activities, activities, Activity, QStringList(CURRENT_ACTIVITY_TAG)) +IMPLEMENT_QUERY_LIST_FIELD(UrlFilters, urlFilters, Url, QStringList(QStringLiteral("*"))) #undef IMPLEMENT_QUERY_LIST_FIELD @@ -167,6 +174,12 @@ d->offset = offset; } +void Query::setDate(const Terms::Date &date) +{ + d->start = date.start; + d->end = date.end; +} + void Query::setDateStart(QDate start) { d->start = start;