libkpimidentities
identity.h00001
00002
00003
00004
00005
00006
00007 #ifndef kpim_identity_h
00008 #define kpim_identity_h
00009
00010 #include <kleo/enum.h>
00011
00012 #include <kdepimmacros.h>
00013
00014 #include <qstring.h>
00015 #include <qcstring.h>
00016 #include <qstringlist.h>
00017
00018 class KProcess;
00019 namespace KPIM {
00020 class Identity;
00021 class Signature;
00022 }
00023 class KConfigBase;
00024 class IdentityList;
00025 class QDataStream;
00026
00027 namespace KPIM {
00028
00033 class KDE_EXPORT Signature {
00034 friend class Identity;
00035
00036 friend QDataStream & KPIM::operator<<( QDataStream & stream, const Signature & sig );
00037 friend QDataStream & KPIM::operator>>( QDataStream & stream, Signature & sig );
00038
00039 public:
00041 enum Type { Disabled = 0, Inlined = 1, FromFile = 2, FromCommand = 3 };
00042
00044 bool operator==( const Signature & other ) const;
00045
00047 Signature();
00049 Signature( const QString & text );
00051 Signature( const QString & url, bool isExecutable );
00052
00054 QString rawText( bool * ok=0 ) const;
00055
00058 QString withSeparator( bool * ok=0 ) const;
00059
00062 void setText( const QString & text ) { mText = text; }
00063 QString text() const { return mText; }
00064
00067 void setUrl( const QString & url, bool isExecutable=false );
00068 QString url() const { return mUrl; }
00069
00071 Type type() const { return mType; }
00072 void setType( Type type ) { mType = type; }
00073
00074 protected:
00075 void writeConfig( KConfigBase * config ) const;
00076 void readConfig( const KConfigBase * config );
00077
00078 private:
00079 QString textFromFile( bool * ok ) const;
00080 QString textFromCommand( bool * ok ) const;
00081
00082 private:
00083 QString mUrl;
00084 QString mText;
00085 Type mType;
00086 };
00087
00089 class KDE_EXPORT Identity
00090 {
00091
00092
00093
00094 friend class IdentityManager;
00095
00096 friend QDataStream & operator<<( QDataStream & stream, const KPIM::Identity & ident );
00097 friend QDataStream & operator>>( QDataStream & stream, KPIM::Identity & ident );
00098
00099 public:
00100 typedef QValueList<Identity> List;
00101
00103 bool operator==( const Identity & other ) const;
00104
00105 bool operator!=( const Identity & other ) const {
00106 return !operator==( other );
00107 }
00108
00110 bool operator<( const Identity & other ) const {
00111 if ( isDefault() ) return true;
00112 if ( other.isDefault() ) return false;
00113 return identityName() < other.identityName();
00114 }
00115 bool operator>( const Identity & other ) const {
00116 if ( isDefault() ) return false;
00117 if ( other.isDefault() ) return true;
00118 return identityName() > other.identityName();
00119 }
00120 bool operator<=( const Identity & other ) const {
00121 return !operator>( other );
00122 }
00123 bool operator>=( const Identity & other ) const {
00124 return !operator<( other );
00125 }
00126
00128 explicit Identity( const QString & id=QString::null,
00129 const QString & realName=QString::null,
00130 const QString & emailAddr=QString::null,
00131 const QString & organization=QString::null,
00132 const QString & replyToAddress=QString::null );
00133
00135 ~Identity();
00136
00137 protected:
00140 void readConfig( const KConfigBase * );
00141
00144 void writeConfig( KConfigBase * ) const;
00145
00146 public:
00148 bool mailingAllowed() const;
00149
00151 QString identityName() const { return mIdentity; }
00152 void setIdentityName( const QString & name );
00153
00155 bool isDefault() const { return mIsDefault; }
00156
00158 uint uoid() const { return mUoid; }
00159
00160 protected:
00170 void setIsDefault( bool flag );
00171
00172 void setUoid( uint aUoid ) { mUoid = aUoid; }
00173
00174 public:
00176 QString fullName() const { return mFullName; }
00177 void setFullName(const QString&);
00178
00180 QString organization() const { return mOrganization; }
00181 void setOrganization(const QString&);
00182
00183 KDE_DEPRECATED QCString pgpIdentity() const { return pgpEncryptionKey(); }
00184 KDE_DEPRECATED void setPgpIdentity( const QCString & key ) {
00185 setPGPEncryptionKey( key );
00186 setPGPSigningKey( key );
00187 }
00188
00190 QCString pgpEncryptionKey() const { return mPGPEncryptionKey; }
00191 void setPGPEncryptionKey( const QCString & key );
00192
00194 QCString pgpSigningKey() const { return mPGPSigningKey; }
00195 void setPGPSigningKey( const QCString & key );
00196
00198 QCString smimeEncryptionKey() const { return mSMIMEEncryptionKey; }
00199 void setSMIMEEncryptionKey( const QCString & key );
00200
00202 QCString smimeSigningKey() const { return mSMIMESigningKey; }
00203 void setSMIMESigningKey( const QCString & key );
00204
00205 Kleo::CryptoMessageFormat preferredCryptoMessageFormat() const { return mPreferredCryptoMessageFormat; }
00206 void setPreferredCryptoMessageFormat( Kleo::CryptoMessageFormat format ) { mPreferredCryptoMessageFormat = format; }
00207
00209 QString emailAddr() const { return mEmailAddr; }
00210 void setEmailAddr(const QString&);
00211
00213 QString vCardFile() const { return mVCardFile; }
00214 void setVCardFile(const QString&);
00215
00218 QString fullEmailAddr() const;
00219
00221 QString replyToAddr() const { return mReplyToAddr; }
00222 void setReplyToAddr(const QString&);
00223
00225 QString bcc() const { return mBcc; }
00226 void setBcc(const QString& aBcc) { mBcc = aBcc; }
00227
00228 void setSignature( const Signature & sig ) { mSignature = sig; }
00229 Signature & signature() { return mSignature; }
00230 const Signature & signature() const { return mSignature; }
00231
00232 protected:
00234 bool signatureIsCommand() const { return mSignature.type() == Signature::FromCommand; }
00236 bool signatureIsPlainFile() const { return mSignature.type() == Signature::FromFile; }
00238 bool signatureIsInline() const { return mSignature.type() == Signature::Inlined; }
00239
00241 QString signatureFile() const { return mSignature.url(); }
00242 void setSignatureFile(const QString&);
00243
00245 QString signatureInlineText() const { return mSignature.text();}
00246 void setSignatureInlineText(const QString&);
00247
00249 bool useSignatureFile() const { return signatureIsPlainFile() || signatureIsCommand(); }
00250
00251 public:
00257 QString signatureText( bool * ok=0) const;
00258
00261 QString transport() const { return mTransport; }
00262 void setTransport(const QString&);
00263
00266 QString fcc() const { return mFcc; }
00267 void setFcc(const QString&);
00268
00271 QString drafts() const { return mDrafts; }
00272 void setDrafts(const QString&);
00273
00276 QString templates() const { return mTemplates; }
00277 void setTemplates( const QString& );
00278
00280 QString dictionary() const { return mDictionary; }
00281 void setDictionary( const QString& );
00282
00284 QString xface() const { return mXFace; }
00285 void setXFace( const QString& );
00286 bool isXFaceEnabled() const { return mXFaceEnabled; }
00287 void setXFaceEnabled( const bool );
00288
00289 static const Identity& null();
00290 bool isNull() const;
00291 protected:
00292
00293
00294
00295
00296 uint mUoid;
00297 QString mIdentity, mFullName, mEmailAddr, mOrganization;
00298 QString mReplyToAddr;
00299 QString mBcc;
00300 QString mVCardFile;
00301 QCString mPGPEncryptionKey, mPGPSigningKey, mSMIMEEncryptionKey, mSMIMESigningKey;
00302 QString mFcc, mDrafts, mTemplates, mTransport;
00303 QString mDictionary;
00304 QString mXFace;
00305 bool mXFaceEnabled;
00306 Signature mSignature;
00307 bool mIsDefault;
00308 Kleo::CryptoMessageFormat mPreferredCryptoMessageFormat;
00309 };
00310
00311 KDE_EXPORT QDataStream & operator<<( QDataStream & stream, const KPIM::Signature & sig );
00312 KDE_EXPORT QDataStream & operator>>( QDataStream & stream, KPIM::Signature & sig );
00313
00314 KDE_EXPORT QDataStream & operator<<( QDataStream & stream, const KPIM::Identity & ident );
00315 KDE_EXPORT QDataStream & operator>>( QDataStream & stream, KPIM::Identity & ident );
00316
00317 }
00318
00319 #endif
|