00001
00002
00003
00004
00005
00006
00007 #ifndef kpim_identity_h
00008 #define kpim_identity_h
00009
00010 #include <kleo/enum.h>
00011
00012 #include <tdepimmacros.h>
00013
00014 #include <tqstring.h>
00015 #include <tqcstring.h>
00016 #include <tqstringlist.h>
00017
00018 class TDEProcess;
00019 namespace KPIM {
00020 class Identity;
00021 class Signature;
00022 }
00023 class TDEConfigBase;
00024 class IdentityList;
00025 class TQDataStream;
00026
00027 namespace KPIM {
00028
00029 KDE_EXPORT TQDataStream & operator<<( TQDataStream & stream, const KPIM::Signature & sig );
00030 KDE_EXPORT TQDataStream & operator>>( TQDataStream & stream, KPIM::Signature & sig );
00031
00032 KDE_EXPORT TQDataStream & operator<<( TQDataStream & stream, const KPIM::Identity & ident );
00033 KDE_EXPORT TQDataStream & operator>>( TQDataStream & stream, KPIM::Identity & ident );
00034
00039 class KDE_EXPORT Signature {
00040 friend class Identity;
00041
00042 friend TQDataStream & KPIM::operator<<( TQDataStream & stream, const Signature & sig );
00043 friend TQDataStream & KPIM::operator>>( TQDataStream & stream, Signature & sig );
00044
00045 public:
00047 enum Type { Disabled = 0, Inlined = 1, FromFile = 2, FromCommand = 3 };
00048
00050 bool operator==( const Signature & other ) const;
00051
00053 Signature();
00055 Signature( const TQString & text );
00057 Signature( const TQString & url, bool isExecutable );
00058
00060 TQString rawText( bool * ok=0 ) const;
00061
00064 TQString withSeparator( bool * ok=0 ) const;
00065
00068 void setText( const TQString & text ) { mText = text; }
00069 TQString text() const { return mText; }
00070
00073 void setUrl( const TQString & url, bool isExecutable=false );
00074 TQString url() const { return mUrl; }
00075
00077 Type type() const { return mType; }
00078 void setType( Type type ) { mType = type; }
00079
00080 protected:
00081 void writeConfig( TDEConfigBase * config ) const;
00082 void readConfig( const TDEConfigBase * config );
00083
00084 private:
00085 TQString textFromFile( bool * ok ) const;
00086 TQString textFromCommand( bool * ok ) const;
00087
00088 private:
00089 TQString mUrl;
00090 TQString mText;
00091 Type mType;
00092 };
00093
00095 class KDE_EXPORT Identity
00096 {
00097
00098
00099
00100 friend class IdentityManager;
00101
00102 friend TQDataStream & operator<<( TQDataStream & stream, const KPIM::Identity & ident );
00103 friend TQDataStream & operator>>( TQDataStream & stream, KPIM::Identity & ident );
00104
00105 public:
00106 typedef TQValueList<Identity> List;
00107
00109 bool operator==( const Identity & other ) const;
00110
00111 bool operator!=( const Identity & other ) const {
00112 return !operator==( other );
00113 }
00114
00116 bool operator<( const Identity & other ) const {
00117 if ( isDefault() ) return true;
00118 if ( other.isDefault() ) return false;
00119 return identityName() < other.identityName();
00120 }
00121 bool operator>( const Identity & other ) const {
00122 if ( isDefault() ) return false;
00123 if ( other.isDefault() ) return true;
00124 return identityName() > other.identityName();
00125 }
00126 bool operator<=( const Identity & other ) const {
00127 return !operator>( other );
00128 }
00129 bool operator>=( const Identity & other ) const {
00130 return !operator<( other );
00131 }
00132
00134 explicit Identity( const TQString & id=TQString(),
00135 const TQString & realName=TQString(),
00136 const TQString & emailAddr=TQString(),
00137 const TQString & organization=TQString(),
00138 const TQString & replyToAddress=TQString() );
00139
00141 ~Identity();
00142
00143 protected:
00146 void readConfig( const TDEConfigBase * );
00147
00150 void writeConfig( TDEConfigBase * ) const;
00151
00152 public:
00154 bool mailingAllowed() const;
00155
00157 TQString identityName() const { return mIdentity; }
00158 void setIdentityName( const TQString & name );
00159
00161 bool isDefault() const { return mIsDefault; }
00162
00164 uint uoid() const { return mUoid; }
00165
00166 protected:
00176 void setIsDefault( bool flag );
00177
00178 void setUoid( uint aUoid ) { mUoid = aUoid; }
00179
00180 public:
00182 TQString fullName() const { return mFullName; }
00183 void setFullName(const TQString&);
00184
00186 TQString organization() const { return mOrganization; }
00187 void setOrganization(const TQString&);
00188
00189 KDE_DEPRECATED TQCString pgpIdentity() const { return pgpEncryptionKey(); }
00190 KDE_DEPRECATED void setPgpIdentity( const TQCString & key ) {
00191 setPGPEncryptionKey( key );
00192 setPGPSigningKey( key );
00193 }
00194
00196 TQCString pgpEncryptionKey() const { return mPGPEncryptionKey; }
00197 void setPGPEncryptionKey( const TQCString & key );
00198
00200 TQCString pgpSigningKey() const { return mPGPSigningKey; }
00201 void setPGPSigningKey( const TQCString & key );
00202
00204 TQCString smimeEncryptionKey() const { return mSMIMEEncryptionKey; }
00205 void setSMIMEEncryptionKey( const TQCString & key );
00206
00208 TQCString smimeSigningKey() const { return mSMIMESigningKey; }
00209 void setSMIMESigningKey( const TQCString & key );
00210
00211 Kleo::CryptoMessageFormat preferredCryptoMessageFormat() const { return mPreferredCryptoMessageFormat; }
00212 void setPreferredCryptoMessageFormat( Kleo::CryptoMessageFormat format ) { mPreferredCryptoMessageFormat = format; }
00213
00215 KDE_DEPRECATED TQString emailAddr() const { return primaryEmailAddress(); }
00216 KDE_DEPRECATED void setEmailAddr( const TQString & email ) { setPrimaryEmailAddress( email ); }
00217
00220 TQString primaryEmailAddress() const { return mEmailAddr; }
00221 void setPrimaryEmailAddress( const TQString & email );
00222
00224 const TQStringList & emailAliases() const { return mEmailAliases; }
00225 void setEmailAliases( const TQStringList & );
00226
00227 bool matchesEmailAddress( const TQString & addr ) const;
00228
00230 TQString vCardFile() const { return mVCardFile; }
00231 void setVCardFile(const TQString&);
00232
00235 TQString fullEmailAddr() const;
00236
00238 TQString replyToAddr() const { return mReplyToAddr; }
00239 void setReplyToAddr(const TQString&);
00240
00242 TQString bcc() const { return mBcc; }
00243 void setBcc(const TQString& aBcc) { mBcc = aBcc; }
00244
00245 void setSignature( const Signature & sig ) { mSignature = sig; }
00246 Signature & signature() { return mSignature; }
00247 const Signature & signature() const { return mSignature; }
00248
00249 protected:
00251 bool signatureIsCommand() const { return mSignature.type() == Signature::FromCommand; }
00253 bool signatureIsPlainFile() const { return mSignature.type() == Signature::FromFile; }
00255 bool signatureIsInline() const { return mSignature.type() == Signature::Inlined; }
00256
00258 TQString signatureFile() const { return mSignature.url(); }
00259 void setSignatureFile(const TQString&);
00260
00262 TQString signatureInlineText() const { return mSignature.text();}
00263 void setSignatureInlineText(const TQString&);
00264
00266 bool useSignatureFile() const { return signatureIsPlainFile() || signatureIsCommand(); }
00267
00268 public:
00274 TQString signatureText( bool * ok=0) const;
00275
00278 TQString transport() const { return mTransport; }
00279 void setTransport(const TQString&);
00280
00283 TQString fcc() const { return mFcc; }
00284 void setFcc(const TQString&);
00285
00288 TQString drafts() const { return mDrafts; }
00289 void setDrafts(const TQString&);
00290
00293 TQString templates() const { return mTemplates; }
00294 void setTemplates( const TQString& );
00295
00297 TQString dictionary() const { return mDictionary; }
00298 void setDictionary( const TQString& );
00299
00301 TQString xface() const { return mXFace; }
00302 void setXFace( const TQString& );
00303 bool isXFaceEnabled() const { return mXFaceEnabled; }
00304 void setXFaceEnabled( const bool );
00305
00306 static const Identity& null();
00307 bool isNull() const;
00308 protected:
00309
00310
00311
00312
00313 uint mUoid;
00314 TQString mIdentity, mFullName, mEmailAddr, mOrganization;
00315 TQStringList mEmailAliases;
00316 TQString mReplyToAddr;
00317 TQString mBcc;
00318 TQString mVCardFile;
00319 TQCString mPGPEncryptionKey, mPGPSigningKey, mSMIMEEncryptionKey, mSMIMESigningKey;
00320 TQString mFcc, mDrafts, mTemplates, mTransport;
00321 TQString mDictionary;
00322 TQString mXFace;
00323 bool mXFaceEnabled;
00324 Signature mSignature;
00325 bool mIsDefault;
00326 Kleo::CryptoMessageFormat mPreferredCryptoMessageFormat;
00327 };
00328
00329 }
00330
00331 #endif