diff --git a/src/query.h b/src/query.h --- a/src/query.h +++ b/src/query.h @@ -98,6 +98,14 @@ void addAgents(const QStringList &agents); void addActivities(const QStringList &activities); void addUrlFilters(const QStringList &urlFilters); + void setTypes(const QStringList &types); + void setAgents(const QStringList &agents); + void setActivities(const QStringList &activities); + void setUrlFilters(const QStringList &urlFilters); + void setType(const Terms::Type &types); + void setAgent(const Terms::Agent &agents); + void setActivity(const Terms::Activity &activities); + void setUrlFilter(const Terms::Url &urlFilters); void setOrdering(Terms::Order ordering); void setOffset(int offset); void setLimit(int limit); 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,25 @@ return !(*this == right); } -#define IMPLEMENT_QUERY_LIST_FIELD(WHAT, What, Default) \ +#define IMPLEMENT_QUERY_LIST_FIELD(WHAT, What, Singular, Term, Default) \ void Query::add##WHAT(const QStringList &What) \ { \ d->What << What; \ details::validate##WHAT(d->What); \ } \ \ + void Query::set##WHAT(const QStringList &What) \ + { \ + d->What = What; \ + details::validate##WHAT(d->What); \ + } \ + \ + void Query::set##Singular(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 +153,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, Type, QStringList(ANY_TYPE_TAG)) +IMPLEMENT_QUERY_LIST_FIELD(Agents, agents, Agent, Agent, QStringList(CURRENT_AGENT_TAG)) +IMPLEMENT_QUERY_LIST_FIELD(Activities, activities, Activity, Activity, QStringList(CURRENT_ACTIVITY_TAG)) +IMPLEMENT_QUERY_LIST_FIELD(UrlFilters, urlFilters, UrlFilter, Url, QStringList(QStringLiteral("*"))) #undef IMPLEMENT_QUERY_LIST_FIELD