20 #include "invalidatecachejob_p.h"
22 #include "collectionfetchjob.h"
23 #include "itemfetchjob.h"
24 #include "itemmodifyjob.h"
26 #include <klocalizedstring.h>
28 using namespace Akonadi;
32 class InvalidateCacheJobPrivate : JobPrivate
35 InvalidateCacheJobPrivate( InvalidateCacheJob* qq ) : JobPrivate( qq ) {}
36 Collection collection;
38 void collectionFetchResult( KJob *job );
39 void itemFetchResult( KJob *job );
40 void itemStoreResult( KJob *job );
42 Q_DECLARE_PUBLIC( InvalidateCacheJob )
47 void InvalidateCacheJobPrivate::collectionFetchResult(KJob* job)
49 Q_Q( InvalidateCacheJob );
53 CollectionFetchJob* fetchJob = qobject_cast<CollectionFetchJob*>( job );
55 if ( fetchJob->collections().size() == 1 )
56 collection = fetchJob->collections().first();
58 if ( !collection.isValid() ) {
59 q->setError( Job::Unknown );
60 q->setErrorText( i18n(
"Invalid collection." ) );
66 ItemFetchJob *itemFetch =
new ItemFetchJob( collection, q );
67 QObject::connect( itemFetch, SIGNAL(result(KJob*)), q, SLOT(itemFetchResult(KJob*)) );
70 void InvalidateCacheJobPrivate::itemFetchResult(KJob* job)
72 Q_Q( InvalidateCacheJob );
75 ItemFetchJob *fetchJob = qobject_cast<ItemFetchJob*>( job );
77 if ( fetchJob->items().size() == 0 ) {
82 ItemModifyJob *modJob = 0;
83 foreach ( Item item, fetchJob->items() ) {
85 modJob =
new ItemModifyJob( item, q );
87 QObject::connect( modJob, SIGNAL(result(KJob*)), q, SLOT(itemStoreResult(KJob*)) );
90 void InvalidateCacheJobPrivate::itemStoreResult(KJob* job)
92 Q_Q( InvalidateCacheJob );
99 InvalidateCacheJob::InvalidateCacheJob(
const Collection &collection, QObject *parent ) :
100 Job( new InvalidateCacheJobPrivate( this ), parent )
103 d->collection = collection;
106 void InvalidateCacheJob::doStart()
111 connect( job, SIGNAL(result(KJob*)), SLOT(collectionFetchResult(KJob*)) );
114 #include "invalidatecachejob_p.moc"