akonadi
job.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef AKONADI_JOB_H
00023 #define AKONADI_JOB_H
00024
00025 #include "akonadi_export.h"
00026
00027 #include <kcompositejob.h>
00028
00029 class QString;
00030
00031 namespace Akonadi {
00032
00033 class JobPrivate;
00034 class Session;
00035 class SessionPrivate;
00036
00094 class AKONADI_EXPORT Job : public KCompositeJob
00095 {
00096 Q_OBJECT
00097
00098 friend class Session;
00099 friend class SessionPrivate;
00100
00101 public:
00105 typedef QList<Job*> List;
00106
00112 enum Error
00113 {
00114 ConnectionFailed = UserDefinedError,
00115 ProtocolVersionMismatch,
00116 UserCanceled,
00117 Unknown,
00118 UserError = UserDefinedError + 42
00119 };
00120
00130 explicit Job( QObject *parent = 0 );
00131
00135 virtual ~Job();
00136
00141 void start();
00142
00147 virtual QString errorString() const;
00148
00149 Q_SIGNALS:
00155 void aboutToStart( Akonadi::Job *job );
00156
00165 void writeFinished( Akonadi::Job *job );
00166
00167 protected:
00173 virtual void doStart() = 0;
00174
00183 virtual void doHandleResponse( const QByteArray &tag, const QByteArray &data );
00184
00193 virtual bool addSubjob( KJob* job );
00194
00200 virtual bool removeSubjob( KJob* job );
00201
00205 virtual bool doKill();
00206
00211 void emitWriteFinished();
00212
00213 protected Q_SLOTS:
00214 virtual void slotResult( KJob* job );
00215
00216 protected:
00217
00218 Job( JobPrivate *dd, QObject *parent );
00219 JobPrivate* const d_ptr;
00220
00221
00222 private:
00223 Q_DECLARE_PRIVATE( Job )
00224
00225
00226 Q_PRIVATE_SLOT( d_func(), void slotSubJobAboutToStart( Akonadi::Job* ) )
00227 Q_PRIVATE_SLOT( d_func(), void startNext() )
00228
00229 };
00230
00231 }
00232
00233 #endif