00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef __KLEO_TQGPGMEJOB_H__
00034 #define __KLEO_TQGPGMEJOB_H__
00035
00036 #include <gpgmepp/interfaces/progressprovider.h>
00037 #include <gpgmepp/interfaces/passphraseprovider.h>
00038
00039 #include <gpgmepp/key.h>
00040 #include <gpgmepp/context.h>
00041
00042 #include <tqcstring.h>
00043 #include <tqstring.h>
00044
00045 #include <vector>
00046 #include <kdepimmacros.h>
00047
00048 namespace GpgME {
00049 class Data;
00050 }
00051
00052 namespace Kleo {
00053 class Job;
00054 }
00055
00056 namespace QGpgME {
00057 class TQByteArrayDataProvider;
00058 }
00059
00060 class TQString;
00061 class TQStringList;
00062
00063 namespace Kleo {
00064
00078 class KDE_EXPORT QGpgMEJob : public GpgME::ProgressProvider, public GpgME::PassphraseProvider {
00079 public:
00080 QGpgMEJob( Kleo::Job * _this, GpgME::Context * context );
00081 ~QGpgMEJob();
00082
00083 protected:
00086 virtual void doOperationDoneEvent( const GpgME::Error & e ) = 0;
00088 void hookupContextToEventLoopInteractor();
00090 void setPatterns( const TQStringList & sl, bool allowEmpty=false );
00092 unsigned int numPatterns() const { return mNumPatterns; }
00094 const char* * nextChunk();
00096 const char* * patterns() const;
00098 void setChunkSize( unsigned int size );
00100 unsigned int chunkSize() const { return mChunkSize; }
00102 void createOutData();
00105 void createInData( const TQByteArray & in );
00107 GpgME::Error setSigningKeys( const std::vector<GpgME::Key> & signers );
00109 void doSlotOperationDoneEvent( GpgME::Context * context, const GpgME::Error & e );
00111 void getAuditLog();
00112
00113
00114
00115
00116
00117 protected:
00118 virtual void doEmitProgressSignal( const TQString & what, int current, int total ) = 0;
00119 virtual void doEmitDoneSignal() = 0;
00120 void doSlotCancel();
00121 TQString auditLogAsHtml() const { return mAuditLogAsHtml; }
00122 GpgME::Error auditLogError() const { return mAuditLogError; }
00123
00124 private:
00126 void showProgress( const char * what, int type, int current, int total );
00127 char * getPassphrase( const char * useridHint, const char * description,
00128 bool previousWasBad, bool & canceled );
00129 void deleteAllPatterns();
00130
00131 public:
00132 void checkInvariants() const;
00133
00134 protected:
00135 Kleo::Job * mThis;
00136 GpgME::Context * mCtx;
00137 GpgME::Data * mInData;
00138 QGpgME::TQByteArrayDataProvider * mInDataDataProvider;
00139 GpgME::Data * mOutData;
00140 QGpgME::TQByteArrayDataProvider * mOutDataDataProvider;
00141 private:
00142 const char* * mPatterns;
00143
00144
00145 const char * mReplacedPattern;
00146 unsigned int mNumPatterns;
00147 unsigned int mChunkSize;
00148 unsigned int mPatternStartIndex, mPatternEndIndex;
00149 GpgME::Error mAuditLogError;
00150 TQString mAuditLogAsHtml;
00151 };
00152
00153 }
00154
00155 #define make_slot_cancel private: void slotCancel() { QGpgMEJob::doSlotCancel(); }
00156 #define make_progress_emitter private: void doEmitProgressSignal( const TQString & what, int cur, int tot ) { emit progress( what, cur, tot ); }
00157 #define make_done_emitter private: void doEmitDoneSignal() { emit done(); }
00158 #define make_auditLogAsHtml private: TQString auditLogAsHtml() const { return QGpgMEJob::auditLogAsHtml(); } GpgME::Error auditLogError() const { return QGpgMEJob::auditLogError(); }
00159 #define TQGPGME_JOB make_slot_cancel make_progress_emitter make_done_emitter make_auditLogAsHtml
00160
00161 #endif // __KLEO_TQGPGMEJOB_H__