akonadi
itemdeletejob.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "itemdeletejob.h"
00021 #include "itemmodifyjob.h"
00022 #include "job_p.h"
00023 #include "transactionsequence.h"
00024 #include "expungejob.h"
00025
00026 using namespace Akonadi;
00027
00028 class Akonadi::ItemDeleteJobPrivate : public JobPrivate
00029 {
00030 public:
00031 enum State {
00032 Begin,
00033 Store,
00034 Expunge,
00035 Commit
00036 };
00037
00038 ItemDeleteJobPrivate( ItemDeleteJob *parent )
00039 : JobPrivate( parent )
00040 {
00041 }
00042
00043 void jobDone( KJob* );
00044
00045 Q_DECLARE_PUBLIC( ItemDeleteJob )
00046
00047 Item mItem;
00048 State mState;
00049 };
00050
00051 void ItemDeleteJobPrivate::jobDone( KJob * job )
00052 {
00053 Q_Q( ItemDeleteJob );
00054
00055 if ( !job->error() )
00056 q->emitResult();
00057 }
00058
00059 ItemDeleteJob::ItemDeleteJob( const Item & item, QObject * parent )
00060 : Job( new ItemDeleteJobPrivate( this ), parent )
00061 {
00062 Q_D( ItemDeleteJob );
00063
00064 d->mItem = item;
00065 d->mState = ItemDeleteJobPrivate::Begin;
00066 }
00067
00068 ItemDeleteJob::~ItemDeleteJob()
00069 {
00070 }
00071
00072 void ItemDeleteJob::doStart()
00073 {
00074 Q_D( ItemDeleteJob );
00075
00076 TransactionSequence *transaction = new TransactionSequence( this );
00077 connect( transaction, SIGNAL(result(KJob*)), SLOT(jobDone(KJob*)) );
00078 addSubjob( transaction );
00079
00080 d->mItem.setFlag( "\\Deleted" );
00081 ItemModifyJob* store = new ItemModifyJob( d->mItem, transaction );
00082 store->disableRevisionCheck();
00083
00084 new ExpungeJob( transaction );
00085 transaction->commit();
00086 }
00087
00088 #include "itemdeletejob.moc"