libkpimidentities

identity.h
1 /* -*- mode: C++; c-file-style: "gnu" -*-
2  * User identity information
3  *
4  * Author: Stefan Taferner <taferner@kde.org>
5  * This code is under GPL
6  */
7 #ifndef kpim_identity_h
8 #define kpim_identity_h
9 
10 #include <kleo/enum.h>
11 
12 #include <kdepimmacros.h>
13 
14 #include <tqstring.h>
15 #include <tqcstring.h>
16 #include <tqstringlist.h>
17 
18 class KProcess;
19 namespace KPIM {
20  class Identity;
21  class Signature;
22 }
23 class KConfigBase;
24 class IdentityList;
25 class TQDataStream;
26 
27 namespace KPIM {
28 
33 class KDE_EXPORT Signature {
34  friend class Identity;
35 
36  friend TQDataStream & KPIM::operator<<( TQDataStream & stream, const Signature & sig );
37  friend TQDataStream & KPIM::operator>>( TQDataStream & stream, Signature & sig );
38 
39 public:
41  enum Type { Disabled = 0, Inlined = 1, FromFile = 2, FromCommand = 3 };
42 
44  bool operator==( const Signature & other ) const;
45 
47  Signature();
49  Signature( const TQString & text );
51  Signature( const TQString & url, bool isExecutable );
52 
54  TQString rawText( bool * ok=0 ) const;
55 
58  TQString withSeparator( bool * ok=0 ) const;
59 
62  void setText( const TQString & text ) { mText = text; }
63  TQString text() const { return mText; }
64 
67  void setUrl( const TQString & url, bool isExecutable=false );
68  TQString url() const { return mUrl; }
69 
71  Type type() const { return mType; }
72  void setType( Type type ) { mType = type; }
73 
74 protected:
75  void writeConfig( KConfigBase * config ) const;
76  void readConfig( const KConfigBase * config );
77 
78 private:
79  TQString textFromFile( bool * ok ) const;
80  TQString textFromCommand( bool * ok ) const;
81 
82 private:
83  TQString mUrl;
84  TQString mText;
85  Type mType;
86 };
87 
89 class KDE_EXPORT Identity
90 {
91  // only the identity manager should be able to construct and
92  // destruct us, but then we get into problems with using
93  // TQValueList<Identity> and especially qHeapSort().
94  friend class IdentityManager;
95 
96  friend TQDataStream & operator<<( TQDataStream & stream, const KPIM::Identity & ident );
97  friend TQDataStream & operator>>( TQDataStream & stream, KPIM::Identity & ident );
98 
99 public:
100  typedef TQValueList<Identity> List;
101 
103  bool operator==( const Identity & other ) const;
104 
105  bool operator!=( const Identity & other ) const {
106  return !operator==( other );
107  }
108 
110  bool operator<( const Identity & other ) const {
111  if ( isDefault() ) return true;
112  if ( other.isDefault() ) return false;
113  return identityName() < other.identityName();
114  }
115  bool operator>( const Identity & other ) const {
116  if ( isDefault() ) return false;
117  if ( other.isDefault() ) return true;
118  return identityName() > other.identityName();
119  }
120  bool operator<=( const Identity & other ) const {
121  return !operator>( other );
122  }
123  bool operator>=( const Identity & other ) const {
124  return !operator<( other );
125  }
126 
128  explicit Identity( const TQString & id=TQString(),
129  const TQString & realName=TQString(),
130  const TQString & emailAddr=TQString(),
131  const TQString & organization=TQString(),
132  const TQString & replyToAddress=TQString() );
133 
135  ~Identity();
136 
137 protected:
140  void readConfig( const KConfigBase * );
141 
144  void writeConfig( KConfigBase * ) const;
145 
146 public:
148  bool mailingAllowed() const;
149 
151  TQString identityName() const { return mIdentity; }
152  void setIdentityName( const TQString & name );
153 
155  bool isDefault() const { return mIsDefault; }
156 
158  uint uoid() const { return mUoid; }
159 
160 protected:
170  void setIsDefault( bool flag );
171 
172  void setUoid( uint aUoid ) { mUoid = aUoid; }
173 
174 public:
176  TQString fullName() const { return mFullName; }
177  void setFullName(const TQString&);
178 
180  TQString organization() const { return mOrganization; }
181  void setOrganization(const TQString&);
182 
183  KDE_DEPRECATED TQCString pgpIdentity() const { return pgpEncryptionKey(); }
184  KDE_DEPRECATED void setPgpIdentity( const TQCString & key ) {
185  setPGPEncryptionKey( key );
186  setPGPSigningKey( key );
187  }
188 
190  TQCString pgpEncryptionKey() const { return mPGPEncryptionKey; }
191  void setPGPEncryptionKey( const TQCString & key );
192 
194  TQCString pgpSigningKey() const { return mPGPSigningKey; }
195  void setPGPSigningKey( const TQCString & key );
196 
198  TQCString smimeEncryptionKey() const { return mSMIMEEncryptionKey; }
199  void setSMIMEEncryptionKey( const TQCString & key );
200 
202  TQCString smimeSigningKey() const { return mSMIMESigningKey; }
203  void setSMIMESigningKey( const TQCString & key );
204 
205  Kleo::CryptoMessageFormat preferredCryptoMessageFormat() const { return mPreferredCryptoMessageFormat; }
206  void setPreferredCryptoMessageFormat( Kleo::CryptoMessageFormat format ) { mPreferredCryptoMessageFormat = format; }
207 
209  KDE_DEPRECATED TQString emailAddr() const { return primaryEmailAddress(); }
210  KDE_DEPRECATED void setEmailAddr( const TQString & email ) { setPrimaryEmailAddress( email ); }
211 
214  TQString primaryEmailAddress() const { return mEmailAddr; }
215  void setPrimaryEmailAddress( const TQString & email );
216 
218  const TQStringList & emailAliases() const { return mEmailAliases; }
219  void setEmailAliases( const TQStringList & );
220 
221  bool matchesEmailAddress( const TQString & addr ) const;
222 
224  TQString vCardFile() const { return mVCardFile; }
225  void setVCardFile(const TQString&);
226 
229  TQString fullEmailAddr() const;
230 
232  TQString replyToAddr() const { return mReplyToAddr; }
233  void setReplyToAddr(const TQString&);
234 
236  TQString bcc() const { return mBcc; }
237  void setBcc(const TQString& aBcc) { mBcc = aBcc; }
238 
239  void setSignature( const Signature & sig ) { mSignature = sig; }
240  Signature & signature() /* _not_ const! */ { return mSignature; }
241  const Signature & signature() const { return mSignature; }
242 
243 protected:
245  bool signatureIsCommand() const { return mSignature.type() == Signature::FromCommand; }
247  bool signatureIsPlainFile() const { return mSignature.type() == Signature::FromFile; }
249  bool signatureIsInline() const { return mSignature.type() == Signature::Inlined; }
250 
252  TQString signatureFile() const { return mSignature.url(); }
253  void setSignatureFile(const TQString&);
254 
256  TQString signatureInlineText() const { return mSignature.text();}
257  void setSignatureInlineText(const TQString&);
258 
260  bool useSignatureFile() const { return signatureIsPlainFile() || signatureIsCommand(); }
261 
262 public:
268  TQString signatureText( bool * ok=0) const;
269 
272  TQString transport() const { return mTransport; }
273  void setTransport(const TQString&);
274 
277  TQString fcc() const { return mFcc; }
278  void setFcc(const TQString&);
279 
282  TQString drafts() const { return mDrafts; }
283  void setDrafts(const TQString&);
284 
287  TQString templates() const { return mTemplates; }
288  void setTemplates( const TQString& );
289 
291  TQString dictionary() const { return mDictionary; }
292  void setDictionary( const TQString& );
293 
295  TQString xface() const { return mXFace; }
296  void setXFace( const TQString& );
297  bool isXFaceEnabled() const { return mXFaceEnabled; }
298  void setXFaceEnabled( const bool );
299 
300  static const Identity& null();
301  bool isNull() const;
302 protected:
303  // if you add new members, make sure they have an operator= (or the
304  // compiler can synthesize one) and amend Identity::operator==,
305  // isNull(), readConfig() and writeConfig() as well as operator<<
306  // and operator>> accordingly:
307  uint mUoid;
308  TQString mIdentity, mFullName, mEmailAddr, mOrganization;
309  TQStringList mEmailAliases;
310  TQString mReplyToAddr;
311  TQString mBcc;
312  TQString mVCardFile;
313  TQCString mPGPEncryptionKey, mPGPSigningKey, mSMIMEEncryptionKey, mSMIMESigningKey;
314  TQString mFcc, mDrafts, mTemplates, mTransport;
315  TQString mDictionary;
316  TQString mXFace;
317  bool mXFaceEnabled;
318  Signature mSignature;
319  bool mIsDefault;
320  Kleo::CryptoMessageFormat mPreferredCryptoMessageFormat;
321 };
322 
323 KDE_EXPORT TQDataStream & operator<<( TQDataStream & stream, const KPIM::Signature & sig );
324 KDE_EXPORT TQDataStream & operator>>( TQDataStream & stream, KPIM::Signature & sig );
325 
326 KDE_EXPORT TQDataStream & operator<<( TQDataStream & stream, const KPIM::Identity & ident );
327 KDE_EXPORT TQDataStream & operator>>( TQDataStream & stream, KPIM::Identity & ident );
328 
329 } // namespace KPIM
330 
331 #endif /*kpim_identity_h*/