diff options
Diffstat (limited to 'certmanager/certmanager.h')
-rw-r--r-- | certmanager/certmanager.h | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/certmanager/certmanager.h b/certmanager/certmanager.h new file mode 100644 index 000000000..915e079eb --- /dev/null +++ b/certmanager/certmanager.h @@ -0,0 +1,217 @@ +/* -*- mode: c++; c-basic-offset:4 -*- + certmanager.h + + This file is part of Kleopatra, the KDE keymanager + Copyright (c) 2001,2002,2004 Klarälvdalens Datakonsult AB + + Kleopatra is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Kleopatra is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. +*/ + +#ifndef _CERTMANAGER_H_ +#define _CERTMANAGER_H_ + +//#include <gpgme.h> + +#include <kmainwindow.h> +#include <kdepimmacros.h> +#include <kurl.h> +#include <qcstring.h> +#include <qptrlist.h> + +#include <set> +#include <string> + +namespace Kleo { + class KeyListView; + class KeyListViewItem; + class ProgressBar; + class Job; +} + +namespace KIO { + class Job; +} +class KProcess; +class KToolBar; +class KAction; + +class CRLView; +class HierarchyAnalyser; + +class LineEditAction; +class ComboAction; + +class KURL; +class QFile; +class QStringList; +class QLabel; + +namespace GpgME { + class ImportResult; + class KeyListResult; + class Error; + class Key; +} + +class KDE_EXPORT CertManager : public KMainWindow { + Q_OBJECT +public: + CertManager( bool remote = false, const QString& query = QString::null, + const QString& import=QString::null, + QWidget * parent=0, const char * name=0, WFlags f=0 ); + ~CertManager(); + + bool isRemote() const { return mRemote; } + +signals: + void stopOperations(); + void enableOperations( bool ); + +private slots: + void slotStartCertificateDownload( const QString & fingerprint, const QString& displayName ); + void newCertificate(); + void revokeCertificate(); + void extendCertificate(); + void slotDeleteCertificate(); + void slotExportSecretKey(); + void slotExportCertificate(); + void slotUploadResult( KIO::Job* job ); + + void slotImportCertFromFile(); + void slotImportCertFromFile( const KURL & filename ); + void slotImportResult( KIO::Job* ); + + void slotCertificateImportResult( const GpgME::ImportResult & result ); + void slotCertificateDownloadResult( const GpgME::Error & error, const QByteArray & keyData ); + void slotKeyListResult( const GpgME::KeyListResult & result ); + void slotDeleteResult( const GpgME::Error & error, const GpgME::Key & ); + void slotSecretKeyExportResult( const GpgME::Error & error, const QByteArray & keyData ); + void slotCertificateExportResult( const GpgME::Error & error, const QByteArray & keyData ); + void slotClearCRLsResult(); + + void importCRLFromFile(); + void importCRLFromLDAP(); + void slotImportCRLJobFinished( KIO::Job * ); + + void slotDirmngrExited(); + void slotStderr( KProcess*, char*, int ); + + void slotToggleRemote(int idx); + void slotToggleHierarchicalView( bool ); + + void slotViewCRLs(); + void slotClearCRLs(); + + void slotViewDetails(); + void slotViewDetails( Kleo::KeyListViewItem * item ); + void slotSelectionChanged(); + void slotDownloadCertificate(); + void slotStartWatchGnuPG(); + + void slotEditKeybindings(); + void slotShowConfigurationDialog(); + void slotConfigureGpgME(); + void slotContextMenu(Kleo::KeyListViewItem*, const QPoint& point); + void slotDropped(const KURL::List&); + /** Schedule a repaint for the listview items. E.g. when the + colour config has changed */ + void slotRepaint(); + /** Schedule a validating keylisting for the selected items (or + all items, if none is selected). */ + void slotValidate() { startRedisplay( true ); } + /** Schedule a non-validating keylisting for the selected items + (or all items, if none are selected). */ + void slotRedisplay() { startRedisplay( false ); } + /** Start a keylisting with the current value of the query text as + pattern. */ + void slotSearch(); + + void slotExpandAll(); + void slotCollapseAll(); + void slotRefreshKeys(); + void slotRefreshKeysResult( const GpgME::Error & ); + +private: + void createStatusBar(); + void createActions(); + void updateStatusBarLabels(); + void updateImportActions( bool enable ); + void startKeyListing( bool, bool, const QStringList & ); + void startKeyListing( bool, bool, const std::set<std::string> & ); + void startCertificateImport( const QByteArray & keyData, const QString& certDisplayName ); + void startImportCRL( const QString& fileName, bool isTempFile ); + void startClearCRLs(); + void startSecretKeyExport( const QString & fingerprint ); + void startCertificateExport( const QStringList & fingerprints ); + bool connectAndStartDirmngr( const char*, const char* ); + void connectJobToStatusBarProgress( Kleo::Job * job, const QString & initialText ); + void disconnectJobFromStatusBarProgress( const GpgME::Error & err ); + void importNextURLOrRedisplay(); + void startRedisplay( bool validating ); + QString displayNameForJob( const Kleo::Job *job ); + void readConfig( bool noQueryGiven ); + void writeConfig(); + +private: + Kleo::KeyListView * mKeyListView; + CRLView * mCrlView; + Kleo::ProgressBar * mProgressBar; + QLabel * mStatusLabel; + + KProcess * mDirmngrProc; + QString mErrorbuffer; + QPtrList<Kleo::KeyListViewItem> mItemsToDelete; + KURL::List mURLsToImport; + typedef QMap<const Kleo::Job *, QString> JobsDisplayNameMap; + JobsDisplayNameMap mJobsDisplayNameMap; + HierarchyAnalyser * mHierarchyAnalyser; + + LineEditAction * mLineEditAction; + ComboAction * mComboAction; + KAction * mFindAction; + KAction * mImportCertFromFileAction; + KAction * mImportCRLFromFileAction; + KAction * mExportCertificateAction; + KAction * mViewCertDetailsAction; + KAction * mDeleteCertificateAction; +#ifdef NOT_IMPLEMENTED_ANYWAY + KAction * mRevokeCertificateAction; + KAction * mExtendCertificateAction; +#endif + KAction * mExportSecretKeyAction; + KAction * mDownloadCertificateAction; + KAction * mValidateCertificateAction; + + QString mImportCRLTempFile; + QString mCurrentQuery; + std::set<std::string> mPreviouslySelectedFingerprints; + bool mNextFindRemote : 1; // state of the combo, i.e. whether the next find action will be remote + bool mRemote : 1; // whether the currently displayed items are from a remote listing + bool mDirMngrFound : 1; + bool mHierarchicalView : 1; // whether to display the list view in hierarchical mode +}; + +#endif // _CERTMANAGER_H_ |