cryptobackendfactory.h
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_CRYPTOBACKENDFACTORY_H__
00034 #define __KLEO_CRYPTOBACKENDFACTORY_H__
00035
00036 #include <qobject.h>
00037
00038 #include "cryptobackend.h"
00039
00040 #include <vector>
00041 #include <map>
00042
00043 namespace Kleo {
00044 class BackendConfigWidget;
00045 }
00046
00047 class QString;
00048 class KConfig;
00049
00050 namespace Kleo {
00051
00052 struct lt_i_str {
00053 bool operator()( const char * one, const char * two ) const {
00054 return qstricmp( one, two ) < 0;
00055 }
00056 };
00057
00058 class CryptoBackendFactory : public QObject {
00059 Q_OBJECT
00060 protected:
00061 CryptoBackendFactory();
00062 ~CryptoBackendFactory();
00063 public:
00064 static CryptoBackendFactory * instance();
00065
00066 const CryptoBackend::Protocol * smime() const;
00067 const CryptoBackend::Protocol * openpgp() const;
00068 const CryptoBackend::Protocol * protocol( const char * name ) const;
00069 CryptoConfig * config() const;
00070
00071 const CryptoBackend * backend( unsigned int idx ) const;
00072
00073 bool hasBackends() const;
00074
00075 Kleo::BackendConfigWidget * configWidget( QWidget * parent=0, const char * name=0 ) const;
00076
00077 KConfig* configObject() const;
00078
00079
00080
00081
00082
00083
00084
00085
00086 void setSMIMEBackend( const CryptoBackend* backend );
00087 void setOpenPGPBackend( const CryptoBackend* backend );
00088 void setProtocolBackend( const char * name, const CryptoBackend * backend );
00089
00090 void scanForBackends( QStringList * reasons=0 );
00091
00092 const char * enumerateProtocols( int i ) const;
00093
00094 bool knowsAboutProtocol( const char * name ) const;
00095
00096 protected:
00097 std::vector<CryptoBackend*> mBackendList;
00098 mutable KConfig* mConfigObject;
00099 typedef std::map<const char *, const CryptoBackend*, lt_i_str> BackendMap;
00100 BackendMap mBackends;
00101 typedef std::vector<const char *> ProtocolSet;
00102 ProtocolSet mAvailableProtocols;
00103
00104 private:
00105 const CryptoBackend * backendByName( const QString& name ) const;
00106 void readConfig();
00107 CryptoBackendFactory( const CryptoBackendFactory & );
00108 void operator=( const CryptoBackendFactory & );
00109
00110 static CryptoBackendFactory * mSelf;
00111 };
00112
00113
00114 }
00115
00116 #endif // __KLEO_CRYPTOBACKENDFACTORY_H__
This file is part of the documentation for certmanager Library Version 3.3.2.