00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef KPGPUI_H
00020 #define KPGPUI_H
00021
00022 #include <kdialogbase.h>
00023 #include <tqwidget.h>
00024 #include <tqcheckbox.h>
00025 #include <kdebug.h>
00026 #include <tqcstring.h>
00027 #include <tqstring.h>
00028 #include <tqvaluevector.h>
00029
00030 #include "kpgp.h"
00031
00032 #include <tdepimmacros.h>
00033
00034 class TQString;
00035 class TQRegExp;
00036 class TQCString;
00037 class TQCheckBox;
00038 class TQMultiLineEdit;
00039 class TQComboBox;
00040 class TQPixmap;
00041 class TQPushButton;
00042 class TQTimer;
00043
00044 class TDEListView;
00045 class KPasswordEdit;
00046
00047 namespace Kpgp {
00048
00049 class Module;
00050 class KeyList;
00051 class Key;
00052 class KeyIDList;
00053
00055 class KDE_EXPORT PassphraseDialog : public KDialogBase
00056 {
00057 Q_OBJECT
00058
00059
00060 public:
00061 PassphraseDialog( TQWidget *parent=0, const TQString &caption=TQString(),
00062 bool modal=true, const TQString &keyID=TQString());
00063 virtual ~PassphraseDialog();
00064
00065 const char * passphrase();
00066
00067 private:
00068 KPasswordEdit *lineedit;
00069 };
00070
00071
00072
00076 class KDE_EXPORT Config : public TQWidget
00077 {
00078 Q_OBJECT
00079
00080
00081 public:
00082 Config(TQWidget *parent = 0, const char *name = 0, bool encrypt =true);
00083 virtual ~Config();
00084
00085 virtual void setValues();
00086 virtual void applySettings();
00087 TQGroupBox* optionsGroupBox() { return mpOptionsGroupBox; };
00088 signals:
00089 void changed();
00090
00091 protected:
00092 Module *pgp;
00093 TQCheckBox *storePass;
00094 TQCheckBox *encToSelf;
00095 TQCheckBox *showCipherText;
00096 TQCheckBox *showKeyApprovalDlg;
00097 TQComboBox *toolCombo;
00098 TQGroupBox* mpOptionsGroupBox;
00099 };
00100
00101
00102
00103 #define KeySelectionDialogSuper KDialogBase
00104 class KDE_EXPORT KeySelectionDialog: public KeySelectionDialogSuper
00105 {
00106 Q_OBJECT
00107
00108
00109 enum TrustCheckMode { NoExpensiveTrustCheck,
00110 AllowExpensiveTrustCheck,
00111 ForceTrustCheck
00112 };
00113
00114 public:
00117 KeySelectionDialog( const KeyList& keyList,
00118 const TQString& title,
00119 const TQString& text = TQString(),
00120 const KeyIDList& keyIds = KeyIDList(),
00121 const bool rememberChoice = false,
00122 const unsigned int allowedKeys = AllKeys,
00123 const bool extendedSelection = false,
00124 TQWidget *parent=0, const char *name=0,
00125 bool modal=true );
00126 virtual ~KeySelectionDialog();
00127
00130 virtual KeyID key() const;
00131
00133 virtual KeyIDList keys() const
00134 { return mKeyIds; };
00135
00136 virtual bool rememberSelection() const
00137 { if( mRememberCB )
00138 return mRememberCB->isChecked();
00139 else
00140 return false;
00141 };
00142
00143 protected slots:
00144 virtual void slotRereadKeys();
00145 virtual void slotSelectionChanged( TQListViewItem* );
00146 virtual void slotSelectionChanged();
00147 virtual void slotCheckSelection( TQListViewItem* = 0 );
00148 virtual void slotRMB( TQListViewItem*, const TQPoint&, int );
00149 virtual void slotRecheckKey();
00150 virtual void slotOk();
00151 virtual void slotCancel();
00152 virtual void slotSearch( const TQString & text );
00153 virtual void slotFilter();
00154
00155 private:
00156 void filterByKeyID( const TQString & keyID );
00157 void filterByKeyIDOrUID( const TQString & keyID );
00158 void filterByUID( const TQString & uid );
00159 void showAllItems();
00160 bool anyChildMatches( const TQListViewItem * item, TQRegExp & rx ) const;
00161
00162 void initKeylist( const KeyList& keyList, const KeyIDList& keyIds );
00163
00164 TQString keyInfo( const Kpgp::Key* ) const;
00165
00166 TQString beautifyFingerprint( const TQCString& ) const;
00167
00168
00169 KeyID getKeyId( const TQListViewItem* ) const;
00170
00171
00172 int keyValidity( const Kpgp::Key* ) const;
00173
00174
00175 void updateKeyInfo( const Kpgp::Key*, TQListViewItem* ) const;
00176
00184 int keyAdmissibility( TQListViewItem*,
00185 TrustCheckMode = NoExpensiveTrustCheck ) const;
00186
00187
00188 bool checkKeys( const TQValueList<TQListViewItem*>& ) const;
00189
00190 private:
00191 TDEListView *mListView;
00192 TQCheckBox *mRememberCB;
00193 TQPixmap *mKeyGoodPix, *mKeyBadPix, *mKeyUnknownPix, *mKeyValidPix;
00194 KeyIDList mKeyIds;
00195 unsigned int mAllowedKeys;
00196 TQTimer* mCheckSelectionTimer;
00197 TQTimer* mStartSearchTimer;
00198 TQString mSearchText;
00199 TQListViewItem* mCurrentContextMenuItem;
00200
00201 static const int sCheckSelectionDelay;
00202 };
00203
00204 class KDE_EXPORT KeyRequester: public TQWidget
00205 {
00206 Q_OBJECT
00207
00208
00209 public:
00210 KeyRequester( TQWidget * parent=0, bool multipleKeys=false,
00211 unsigned int allowedKeys=AllKeys, const char * name=0 );
00212 virtual ~KeyRequester();
00213
00214 KeyIDList keyIDs() const;
00215 void setKeyIDs( const KeyIDList & keyIDs );
00216
00217 TQPushButton * eraseButton() const { return mEraseButton; }
00218 TQPushButton * dialogButton() const { return mDialogButton; }
00219
00220 void setDialogCaption( const TQString & caption );
00221 void setDialogMessage( const TQString & message );
00222
00223 bool isMultipleKeysEnabled() const;
00224 void setMultipleKeysEnabled( bool enable );
00225
00226 int allowedKeys() const;
00227 void setAllowedKeys( int allowed );
00228
00229 protected:
00231 virtual KeyIDList keyRequestHook( Module * pgp ) const = 0;
00232
00233 protected:
00234 TQLabel * mLabel;
00235 TQPushButton * mEraseButton;
00236 TQPushButton * mDialogButton;
00237 TQString mDialogCaption, mDialogMessage;
00238 bool mMulti;
00239 int mAllowedKeys;
00240 KeyIDList mKeys;
00241
00242 protected slots:
00243 void slotDialogButtonClicked();
00244 void slotEraseButtonClicked();
00245
00246 signals:
00247 void changed();
00248
00249 private:
00250 class Private;
00251 Private * d;
00252 protected:
00253 virtual void virtual_hook( int, void* );
00254 };
00255
00256
00257 class KDE_EXPORT PublicKeyRequester : public KeyRequester {
00258 Q_OBJECT
00259
00260 public:
00261 PublicKeyRequester( TQWidget * parent=0, bool multipleKeys=false,
00262 unsigned int allowedKeys=PublicKeys, const char * name=0 );
00263 virtual ~PublicKeyRequester();
00264
00265 protected:
00266 KeyIDList keyRequestHook( Module * pgp ) const;
00267
00268 private:
00269 typedef KeyRequester base;
00270 class Private;
00271 Private * d;
00272 protected:
00273 virtual void virtual_hook( int, void* );
00274 };
00275
00276
00277 class KDE_EXPORT SecretKeyRequester : public KeyRequester {
00278 Q_OBJECT
00279
00280 public:
00281 SecretKeyRequester( TQWidget * parent=0, bool multipleKeys=false,
00282 unsigned int allowedKeys=SecretKeys, const char * name=0 );
00283 virtual ~SecretKeyRequester();
00284
00285 protected:
00286 KeyIDList keyRequestHook( Module * pgp ) const;
00287
00288 private:
00289 typedef KeyRequester base;
00290 class Private;
00291 Private * d;
00292 protected:
00293 virtual void virtual_hook( int, void* );
00294 };
00295
00296
00297
00298 class KDE_EXPORT KeyApprovalDialog: public KDialogBase
00299 {
00300 Q_OBJECT
00301
00302
00303 public:
00304 KeyApprovalDialog( const TQStringList&,
00305 const TQValueVector<KeyIDList>&,
00306 const int allowedKeys,
00307 TQWidget *parent = 0, const char *name = 0,
00308 bool modal = true );
00309 virtual ~KeyApprovalDialog() {};
00310
00311 TQValueVector<KeyIDList> keys() const { return mKeys; };
00312
00313 bool preferencesChanged() const { return mPrefsChanged; }
00314
00315 protected slots:
00316 void slotPrefsChanged( int ) { mPrefsChanged = true; };
00317 void slotChangeEncryptionKey( int );
00318 virtual void slotOk();
00319 virtual void slotCancel();
00320
00321 private:
00322 TQValueVector<KeyIDList> mKeys;
00323 int mAllowedKeys;
00324 int mEncryptToSelf;
00325 bool mPrefsChanged;
00326 TQPtrVector<TQLabel> mAddressLabels;
00327 TQPtrVector<TQLabel> mKeyIdsLabels;
00328
00329 TQPtrVector<TQComboBox> mEncrPrefCombos;
00330 };
00331
00332
00333
00334 class KDE_EXPORT CipherTextDialog: public KDialogBase
00335 {
00336 Q_OBJECT
00337
00338
00339 public:
00340 CipherTextDialog( const TQCString & text, const TQCString & charset=0,
00341 TQWidget *parent=0, const char *name=0, bool modal=true );
00342 virtual ~CipherTextDialog() {};
00343
00344 private:
00345 void setMinimumSize();
00346 TQMultiLineEdit *mEditBox;
00347 };
00348
00349 }
00350
00351 #endif