akonadi/contact
contactgroupsearchjob.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "contactgroupsearchjob.h"
00023
00024 #include <akonadi/itemfetchscope.h>
00025
00026 using namespace Akonadi;
00027
00028 class ContactGroupSearchJob::Private
00029 {
00030 public:
00031 int mLimit;
00032 };
00033
00034 ContactGroupSearchJob::ContactGroupSearchJob( QObject * parent )
00035 : ItemSearchJob( QString(), parent ), d( new Private )
00036 {
00037 fetchScope().fetchFullPayload();
00038 d->mLimit = -1;
00039
00040
00041 ItemSearchJob::setQuery( QLatin1String( ""
00042 "prefix nco:<http://www.semanticdesktop.org/ontologies/2007/03/22/nco#>"
00043 "SELECT ?r WHERE { ?r a nco:ContactGroup }" ) );
00044 }
00045
00046 ContactGroupSearchJob::~ContactGroupSearchJob()
00047 {
00048 delete d;
00049 }
00050
00051 void ContactGroupSearchJob::setQuery( Criterion criterion, const QString &value )
00052 {
00053 QString query = QString::fromLatin1(
00054 "prefix nco:<http://www.semanticdesktop.org/ontologies/2007/03/22/nco#>" );
00055
00056 if ( criterion == Name ) {
00057 query += QString::fromLatin1(
00058 "SELECT DISTINCT ?group "
00059 "WHERE { "
00060 " graph ?g { "
00061 " ?group <" + akonadiItemIdUri().toEncoded() + "> ?itemId . "
00062 " ?group nco:contactGroupName \"%1\"^^<http://www.w3.org/2001/XMLSchema#string>."
00063 " } "
00064 "}" );
00065 }
00066
00067 if ( d->mLimit != -1 )
00068 query += QString::fromLatin1( " LIMIT %1" ).arg( d->mLimit );
00069
00070 query = query.arg( value );
00071
00072 ItemSearchJob::setQuery( query );
00073 }
00074
00075 KABC::ContactGroup::List ContactGroupSearchJob::contactGroups() const
00076 {
00077 KABC::ContactGroup::List contactGroups;
00078
00079 foreach ( const Item &item, items() ) {
00080 if ( item.hasPayload<KABC::ContactGroup>() )
00081 contactGroups.append( item.payload<KABC::ContactGroup>() );
00082 }
00083
00084 return contactGroups;
00085 }
00086
00087 void ContactGroupSearchJob::setLimit( int limit )
00088 {
00089 d->mLimit = limit;
00090 }
00091
00092 #include "contactgroupsearchjob.moc"