diff --git a/src/query.h b/src/query.h --- a/src/query.h +++ b/src/query.h @@ -80,6 +80,15 @@ bool operator== (const Query &right) const; bool operator!= (const Query &right) const; + void operator|= (const Terms::Type &right); + void operator|= (const Terms::Agent &right); + void operator|= (const Terms::Activity &right); + void operator|= (const Terms::Url &right); + void operator|= (const Terms::Order &right); + void operator|= (const Terms::Offset &right); + void operator|= (const Terms::Limit &right); + void operator|= (const Terms::Date &right); + Terms::Select selection() const; QStringList types() const; QStringList agents() const; diff --git a/src/query.cpp b/src/query.cpp --- a/src/query.cpp +++ b/src/query.cpp @@ -22,6 +22,7 @@ #include "query.h" #include #include +#include "term.h" namespace KActivities { namespace Stats { @@ -123,13 +124,35 @@ return !(*this == right); } -#define IMPLEMENT_QUERY_LIST_FIELD(WHAT, What, Default) \ +void Query::operator|= (const Terms::Order &right){ + setOrdering(right); +} + +void Query::operator|= (const Terms::Offset &right){ + setOffset(right.value); +} + +void Query::operator|= (const Terms::Limit &right){ + setLimit(right.value); +} + +void Query::operator|= (const Terms::Date &right){ + setDateStart(right.start); + setDateEnd(right.end); +} + +#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::operator|=(const Term &What) \ + { \ + addTerm(What); \ + } \ + \ QStringList Query::What() const \ { \ return d->What.size() ? d->What : Default; \ @@ -140,10 +163,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, Terms::Type, QStringList(QStringLiteral(":any"))) +IMPLEMENT_QUERY_LIST_FIELD(Agents, agents, Terms::Agent, QStringList(QStringLiteral(":current"))) +IMPLEMENT_QUERY_LIST_FIELD(Activities, activities, Terms::Activity, QStringList(QStringLiteral(":current"))) +IMPLEMENT_QUERY_LIST_FIELD(UrlFilters, urlFilters, Terms::Url, QStringList(QStringLiteral("*"))) #undef IMPLEMENT_QUERY_LIST_FIELD