certmanager/lib
qgpgmejob.h00001
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_QGPGMEJOB_H__
00034 #define __KLEO_QGPGMEJOB_H__
00035
00036 #include <gpgmepp/interfaces/progressprovider.h>
00037 #include <gpgmepp/interfaces/passphraseprovider.h>
00038
00039 #include <gpgmepp/key.h>
00040
00041 #include <qcstring.h>
00042
00043 #include <vector>
00044 #include <kdepimmacros.h>
00045
00046 namespace GpgME {
00047 class Error;
00048 class Context;
00049 class Data;
00050 }
00051
00052 namespace Kleo {
00053 class Job;
00054 }
00055
00056 namespace QGpgME {
00057 class QByteArrayDataProvider;
00058 }
00059
00060 class QString;
00061 class QStringList;
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 QStringList & 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 QByteArray & in );
00107 GpgME::Error setSigningKeys( const std::vector<GpgME::Key> & signers );
00109 void doSlotOperationDoneEvent( GpgME::Context * context, const GpgME::Error & e );
00110
00111
00112
00113
00114
00115 protected:
00116 virtual void doEmitProgressSignal( const QString & what, int current, int total ) = 0;
00117 virtual void doEmitDoneSignal() = 0;
00118 void doSlotCancel();
00119
00120 private:
00122 void showProgress( const char * what, int type, int current, int total );
00123 char * getPassphrase( const char * useridHint, const char * description,
00124 bool previousWasBad, bool & canceled );
00125 void deleteAllPatterns();
00126
00127 public:
00128 void checkInvariants() const;
00129
00130 protected:
00131 Kleo::Job * mThis;
00132 GpgME::Context * mCtx;
00133 GpgME::Data * mInData;
00134 QGpgME::QByteArrayDataProvider * mInDataDataProvider;
00135 GpgME::Data * mOutData;
00136 QGpgME::QByteArrayDataProvider * mOutDataDataProvider;
00137 private:
00138 const char* * mPatterns;
00139
00140
00141 const char * mReplacedPattern;
00142 unsigned int mNumPatterns;
00143 unsigned int mChunkSize;
00144 unsigned int mPatternStartIndex, mPatternEndIndex;
00145 };
00146
00147 }
00148
00149 #define make_slot_cancel private: void slotCancel() { QGpgMEJob::doSlotCancel(); }
00150 #define make_progress_emitter private: void doEmitProgressSignal( const QString & what, int cur, int tot ) { emit progress( what, cur, tot ); }
00151 #define make_done_emitter private: void doEmitDoneSignal() { emit done(); }
00152 #define QGPGME_JOB make_slot_cancel make_progress_emitter make_done_emitter
00153
00154 #endif // __KLEO_QGPGMEJOB_H__
|