00001
00002
00003
00004
00005
00006
00007
#ifndef kmidentity_h
00008
#define kmidentity_h
00009
00010
#include <qstring.h>
00011
#include <qcstring.h>
00012
#include <qstringlist.h>
00013
00014
class KMIdentity;
00015
class KConfigBase;
00016
class IdentityList;
00017
class QDataStream;
00018
namespace KMail {
00019
class SignatureConfigurator;
00020 }
00021
00026 class Signature {
00027
friend class KMIdentity;
00028
friend class KMail::SignatureConfigurator;
00029
00030
friend QDataStream & operator<<( QDataStream & stream,
const Signature & sig );
00031
friend QDataStream & operator>>( QDataStream & stream,
Signature & sig );
00032
00033
public:
00035 enum Type { Disabled = 0, Inlined = 1, FromFile = 2, FromCommand = 3 };
00036
00038
bool operator==(
const Signature & other )
const;
00039
00041
Signature();
00043
Signature(
const QString & text );
00045
Signature(
const QString & url,
bool isExecutable );
00046
00048 QString rawText(
bool * ok=0 )
const;
00049
00052 QString withSeparator(
bool * ok=0 )
const;
00053
00056 void setText(
const QString & text ) { mText = text; mType = Inlined; }
00059
void setUrl(
const QString & url,
bool isExecutable=
false );
00060
00061
protected:
00062
void writeConfig( KConfigBase * config )
const;
00063
void readConfig(
const KConfigBase * config );
00064
00065 Type type()
const {
return mType; }
00066
00067 QString url()
const {
return mUrl; }
00068 QString text()
const {
return mText; }
00069
00070
protected:
00071 QString mUrl;
00072 QString mText;
00073
Type mType;
00074
00075
private:
00076 QString textFromFile(
bool * ok )
const;
00077 QString textFromCommand(
bool * ok )
const;
00078 };
00079
00081 class KMIdentity
00082 {
00083
00084
00085
00086
friend class IdentityManager;
00087
00088
friend QDataStream & operator<<( QDataStream & stream,
const KMIdentity & ident );
00089
friend QDataStream & operator>>( QDataStream & stream,
KMIdentity & ident );
00090
00091
public:
00092
typedef QValueList<KMIdentity> List;
00093
00095
bool operator==(
const KMIdentity & other )
const;
00096
00097
bool operator!=(
const KMIdentity & other )
const {
00098
return !
operator==( other );
00099 }
00100
00102 bool operator<(
const KMIdentity & other )
const {
00103
if (
isDefault() )
return true;
00104
if ( other.
isDefault() )
return false;
00105
return identityName() < other.
identityName();
00106 }
00107
bool operator>(
const KMIdentity & other )
const {
00108
if (
isDefault() )
return false;
00109
if ( other.
isDefault() )
return true;
00110
return identityName() > other.
identityName();
00111 }
00112
bool operator<=(
const KMIdentity & other )
const {
00113
return !operator>( other );
00114 }
00115
bool operator>=(
const KMIdentity & other )
const {
00116
return !
operator<( other );
00117 }
00118
00120
explicit KMIdentity(
const QString &
id=QString::null,
00121
const QString & realName=QString::null,
00122
const QString & emailAddr=QString::null,
00123
const QString & organization=QString::null,
00124
const QString & replyToAddress=QString::null );
00125
00127
~KMIdentity();
00128
00129
protected:
00132
void readConfig(
const KConfigBase * );
00133
00136
void writeConfig( KConfigBase * ) const;
00137
00138 public:
00140
bool mailingAllowed() const;
00141
00143 QString identityName()
const {
return mIdentity; }
00144
void setIdentityName(
const QString & name );
00145
00147 bool isDefault()
const {
return mIsDefault; }
00148
00149 uint uoid()
const {
return mUoid; }
00150
00151
protected:
00161
void setIsDefault(
bool flag );
00162
00163
void setUoid( uint aUoid ) { mUoid = aUoid; }
00164
00165
public:
00167 QString
fullName()
const {
return mFullName; }
00168
void setFullName(
const QString&);
00169
00171 QString
organization()
const {
return mOrganization; }
00172
void setOrganization(
const QString&);
00173
00175 QCString
pgpIdentity()
const {
return mPgpIdentity; }
00176
void setPgpIdentity(
const QCString&);
00177
00179 QString
emailAddr()
const {
return mEmailAddr; }
00180
void setEmailAddr(
const QString&);
00181
00183 QString
vCardFile()
const {
return mVCardFile; }
00184
void setVCardFile(
const QString&);
00185
00188 QString
fullEmailAddr() const;
00189
00191 QString replyToAddr()
const {
return mReplyToAddr; }
00192
void setReplyToAddr(
const QString&);
00193
00195 QString
bcc()
const {
return mBcc; }
00196
void setBcc(
const QString& aBcc) { mBcc = aBcc; }
00197
00198
void setSignature(
const Signature & sig ) { mSignature = sig; }
00199
Signature & signature() {
return mSignature; }
00200
00201
protected:
00203 bool signatureIsCommand()
const {
return mSignature.
type() == Signature::FromCommand; }
00205 bool signatureIsPlainFile()
const {
return mSignature.
type() == Signature::FromFile; }
00207 bool signatureIsInline()
const {
return mSignature.
type() == Signature::Inlined; }
00208
00210 QString
signatureFile()
const {
return mSignature.
url(); }
00211
void setSignatureFile(
const QString&);
00212
00214 QString
signatureInlineText()
const {
return mSignature.
text();}
00215
void setSignatureInlineText(
const QString&);
00216
00218 bool useSignatureFile()
const {
return signatureIsPlainFile() ||
signatureIsCommand(); }
00219
00220
public:
00226 QString signatureText(
bool * ok=0)
const;
00227
00230 QString
transport()
const {
return mTransport; }
00231
void setTransport(
const QString&);
00232
00235 QString
fcc()
const {
return mFcc; }
00236
void setFcc(
const QString&);
00237
00240 QString
drafts()
const {
return mDrafts; }
00241
void setDrafts(
const QString&);
00242
00244 QString
dictionary()
const {
return mDictionary; }
00245
void setDictionary(
const QString& );
00246
00247
static KMIdentity null;
00248
bool isNull() const;
00249 protected:
00250
00251
00252
00253
00254 uint mUoid;
00255 QString mIdentity, mFullName, mEmailAddr, mOrganization;
00256 QString mReplyToAddr;
00257 QString mBcc;
00258 QString mVCardFile;
00259 QCString mPgpIdentity;
00260 QString mFcc, mDrafts, mTransport;
00261 QString mDictionary;
00262
Signature mSignature;
00263
bool mIsDefault;
00264 };
00265
00266 QDataStream & operator<<( QDataStream & stream, const
Signature & sig );
00267 QDataStream & operator>>( QDataStream & stream,
Signature & sig );
00268
00269 QDataStream & operator<<( QDataStream & stream, const
KMIdentity & ident );
00270 QDataStream & operator>>( QDataStream & stream,
KMIdentity & ident );
00271
00272
00273 #endif