22 #include "signature.h"
24 #include <sonnet/globals.h>
26 #include <kconfiggroup.h>
27 #include <kpimutils/email.h>
39 const QString &emailAddr,
const QString &organization,
40 const QString &replyToAddr )
47 setProperty( QLatin1String(s_organization), organization );
48 setProperty( QLatin1String(s_replyto), replyToAddr );
49 setDictionary( Sonnet::defaultLanguageName() );
51 setProperty( QLatin1String(s_defaultDomainName), QHostInfo::localHostName());
59 if ( !identityNull ) {
68 QHash<QString, QVariant>::const_iterator i = mPropertiesMap.constBegin();
69 while ( i != mPropertiesMap.constEnd() ) {
71 if ( i.key() == QLatin1String(s_defaultDomainName) ) {
76 if ( i.key() == QLatin1String(s_dict) ) {
81 if( i.key() == QLatin1String(s_disabledFcc) && i.value().toBool() == false ) {
86 if ( !( i.key() == QLatin1String(s_uoid) && i.value().toUInt() == 0 ) ) {
87 if ( !i.value().isNull() ||
88 ( i.value().type() == QVariant::String && !i.value().toString().isEmpty() ) ) {
100 QMap<QString, QString> entries = config.entryMap();
101 QMap<QString, QString>::const_iterator i = entries.constBegin();
102 QMap<QString, QString>::const_iterator end = entries.constEnd();
104 if ( i.key() == QLatin1String(s_emailAliases) ) {
106 mPropertiesMap.insert( i.key(), config.readEntry( i.key(), QStringList() ) );
108 mPropertiesMap.insert( i.key(), config.readEntry( i.key() ) );
112 mSignature.readConfig( config );
117 QHash<QString, QVariant>::const_iterator i = mPropertiesMap.constBegin();
118 QHash<QString, QVariant>::const_iterator end = mPropertiesMap.constEnd();
120 config.writeEntry( i.key(), i.value() );
121 kDebug( 5325 ) <<
"Store:" << i.key() <<
":" << i.value();
124 mSignature.writeConfig( config );
129 return !
property( QLatin1String(s_email) ).toString().isEmpty();
132 QString Identity::mimeDataType()
134 return QLatin1String(
"application/x-kmail-identity-drag");
137 bool Identity::canDecode(
const QMimeData*md )
139 return md->hasFormat( mimeDataType() );
142 void Identity::populateMimeData( QMimeData*md )
146 QDataStream s( &a, QIODevice::WriteOnly );
149 md->setData( mimeDataType(), a );
152 Identity Identity::fromMimeData(
const QMimeData*md )
155 if ( canDecode( md ) ) {
156 QByteArray ba = md->data( mimeDataType() );
157 QDataStream s( &ba, QIODevice::ReadOnly );
165 QDataStream &KPIMIdentities::operator<<
168 return stream << static_cast<quint32>( i.
uoid() )
185 << i.mPropertiesMap[QLatin1String(s_signature)]
188 << i.preferredCryptoMessageFormat()
197 QDataStream &KPIMIdentities::operator>>
203 >> i.mPropertiesMap[QLatin1String(s_identity)]
204 >> i.mPropertiesMap[QLatin1String(s_name)]
205 >> i.mPropertiesMap[QLatin1String(s_organization)]
206 >> i.mPropertiesMap[QLatin1String(s_pgps)]
207 >> i.mPropertiesMap[QLatin1String(s_pgpe)]
208 >> i.mPropertiesMap[QLatin1String(s_smimes)]
209 >> i.mPropertiesMap[QLatin1String(s_smimee)]
210 >> i.mPropertiesMap[QLatin1String(s_email)]
211 >> i.mPropertiesMap[QLatin1String(s_emailAliases)]
212 >> i.mPropertiesMap[QLatin1String(s_replyto)]
213 >> i.mPropertiesMap[QLatin1String(s_bcc)]
214 >> i.mPropertiesMap[QLatin1String(s_vcard)]
215 >> i.mPropertiesMap[QLatin1String(s_transport)]
216 >> i.mPropertiesMap[QLatin1String(s_fcc)]
217 >> i.mPropertiesMap[QLatin1String(s_drafts)]
218 >> i.mPropertiesMap[QLatin1String(s_templates)]
219 >> i.mPropertiesMap[QLatin1String(s_signature)]
220 >> i.mPropertiesMap[QLatin1String(s_dict)]
221 >> i.mPropertiesMap[QLatin1String(s_xface)]
222 >> i.mPropertiesMap[QLatin1String(s_prefcrypt)]
223 >> i.mPropertiesMap[QLatin1String(s_cc)]
224 >> i.mPropertiesMap[QLatin1String(s_attachVcard)]
225 >> i.mPropertiesMap[QLatin1String(s_autocorrectionLanguage)]
226 >> i.mPropertiesMap[QLatin1String(s_disabledFcc)]
227 >> i.mPropertiesMap[QLatin1String(s_pgpautosign)]
228 >> i.mPropertiesMap[QLatin1String(s_defaultDomainName)];
268 return mPropertiesMap == other.mPropertiesMap &&
269 mSignature == other.mSignature;
281 return mPropertiesMap.value( key );
286 const QString name = mPropertiesMap.value( QLatin1String(s_name) ).toString();
287 const QString mail = mPropertiesMap.value( QLatin1String(s_email) ).toString();
289 if ( name.isEmpty() ) {
293 const QString specials( QLatin1String(
"()<>@,.;:[]") );
298 bool needsQuotes=
false;
299 const int nameLength( name.length() );
300 for (
int i=0; i < nameLength; i++ ) {
301 if ( specials.contains( name[i] ) ) {
303 }
else if ( name[i] == QLatin1Char(
'\\') || name[i] == QLatin1Char(
'"') ) {
305 result += QLatin1Char(
'\\');
311 result.insert( 0, QLatin1Char(
'"') );
312 result += QLatin1Char(
'"');
315 result += QLatin1String(
" <") + mail + QLatin1Char(
'>');
322 return property( QLatin1String( s_identity ) ).toString();
342 return property( QLatin1String( s_uoid ) ).toInt();
347 return property( QLatin1String( s_name ) ).toString();
352 return property( QLatin1String( s_organization ) ).toString();
357 return property( QLatin1String( s_pgpe ) ).toByteArray();
362 return property( QLatin1String( s_pgps ) ).toByteArray();
367 return property( QLatin1String( s_smimee ) ).toByteArray();
372 return property( QLatin1String( s_smimes ) ).toByteArray();
375 QString Identity::preferredCryptoMessageFormat()
const
377 return property( QLatin1String( s_prefcrypt ) ).toString();
387 return property( QLatin1String( s_email ) ).toString();
392 return property( QLatin1String( s_emailAliases ) ).toStringList();
397 return property( QLatin1String( s_vcard ) ).toString();
402 return property( QLatin1String( s_attachVcard ) ).toBool();
407 return property( QLatin1String( s_replyto ) ).toString();
412 return property( QLatin1String( s_bcc ) ).toString();
417 return property( QLatin1String( s_cc ) ).toString();
425 bool Identity::isXFaceEnabled()
const
427 return property( QLatin1String( s_xfaceenabled ) ).toBool();
432 return property( QLatin1String( s_xface ) ).toString();
437 return property( QLatin1String( s_dict ) ).toString();
442 const QString str =
property( QLatin1String( s_templates ) ).toString();
448 const QString str =
property( QLatin1String( s_drafts ) ).toString();
454 const QString str =
property( QLatin1String( s_fcc ) ).toString();
460 return property( QLatin1String( s_transport ) ).toString();
465 return mSignature.
type() == Signature::FromCommand;
470 return mSignature.
type() == Signature::FromFile;
475 return mSignature.
type() == Signature::Inlined;
485 return mSignature.text();
490 return mSignature.url();
495 return property( QLatin1String( s_autocorrectionLanguage ) ).toString();
502 if ( value.isNull() ||
503 ( value.type() == QVariant::String && value.toString().isEmpty() ) ) {
504 mPropertiesMap.remove( key );
506 mPropertiesMap.insert( key, value );
520 void Identity::setFullName(
const QString &str )
525 void Identity::setOrganization(
const QString &str )
530 void Identity::setPGPSigningKey(
const QByteArray &str )
532 setProperty( QLatin1String(s_pgps), QLatin1String( str ) );
535 void Identity::setPGPEncryptionKey(
const QByteArray &str )
537 setProperty( QLatin1String(s_pgpe), QLatin1String( str ) );
540 void Identity::setSMIMESigningKey(
const QByteArray &str )
542 setProperty( QLatin1String(s_smimes), QLatin1String( str ) );
545 void Identity::setSMIMEEncryptionKey(
const QByteArray &str )
547 setProperty( QLatin1String(s_smimee), QLatin1String( str ) );
550 void Identity::setEmailAddr(
const QString &str )
552 setPrimaryEmailAddress( str );
555 void Identity::setPrimaryEmailAddress(
const QString & email )
560 void Identity::setEmailAliases(
const QStringList & aliases )
562 setProperty( QLatin1String(s_emailAliases), aliases );
565 void Identity::setVCardFile(
const QString &str )
570 void Identity::setAttachVcard(
bool attachment)
572 setProperty( QLatin1String(s_attachVcard), attachment );
575 void Identity::setReplyToAddr(
const QString&str )
580 void Identity::setSignatureFile(
const QString &str )
585 void Identity::setSignatureInlineText(
const QString &str )
590 void Identity::setTransport(
const QString &str )
595 void Identity::setFcc(
const QString &str )
600 void Identity::setDrafts(
const QString &str )
605 void Identity::setTemplates(
const QString &str )
610 void Identity::setDictionary(
const QString &str )
615 void Identity::setBcc(
const QString &str )
620 void Identity::setCc(
const QString &str )
630 void Identity::setPreferredCryptoMessageFormat(
const QString &str )
635 void Identity::setXFace(
const QString &str )
637 QString strNew = str;
638 strNew.remove( QLatin1Char(
' ') );
639 strNew.remove( QLatin1Char(
'\n') );
640 strNew.remove( QLatin1Char(
'\r') );
644 void Identity::setXFaceEnabled(
const bool on )
649 void Identity::setSignature(
const Signature &sig )
656 const QString addrSpec = KPIMUtils::extractEmailAddress( addr ).toLower();
662 if ( alias.toLower() == addrSpec ) {
675 const qlonglong val = str.toLongLong(&ok);
684 void Identity::setAutocorrectionLanguage(
const QString& language)
686 setProperty( QLatin1String(s_autocorrectionLanguage), language );
692 const QVariant var =
property(QLatin1String( s_disabledFcc ));
700 void Identity::setDisabledFcc(
bool disable)
702 setProperty( QLatin1String(s_disabledFcc), disable );
707 const QVariant var =
property(QLatin1String( s_pgpautosign ));
715 void Identity::setPgpAutoSign(
bool autoSign)
717 setProperty( QLatin1String(s_pgpautosign), autoSign );
722 return property( QLatin1String( s_defaultDomainName ) ).toString();
725 void Identity::setDefaultDomainName(
const QString &domainName)
727 setProperty( QLatin1String(s_defaultDomainName), domainName );
QString drafts() const
The folder where draft messages from this identity will be stored by default.
bool signatureIsPlainFile() const
QString identityName() const
Identity/nickname for this collection.
bool signatureIsCommand() const
QString xface() const
a X-Face header for this identity
QString transport() const
The transport that is set for this identity.
QString fcc() const
The folder where sent messages from this identity will be stored by default.
QByteArray smimeSigningKey() const
The user's S/MIME signing key.
KPIMIDENTITIES_DEPRECATED QString emailAddr() const
email address (without the user name - only name@host)
QString signatureInlineText() const
inline signature
QString vCardFile() const
vCard to attach to outgoing emails
void setIsDefault(bool flag)
Set whether this identity is the default identity.
void setText(const QString &text)
Set the signature text and mark this signature as being of "inline text" type.
QString signatureText(bool *ok=0) const
void setIdentityName(const QString &name)
Identity/nickname for this collection.
bool operator>=(const Identity &other) const
used for sorting
bool operator<=(const Identity &other) const
used for sorting
QString primaryEmailAddress() const
primary email address (without the user name - only name@host).
bool operator<(const Identity &other) const
used for sorting
uint uoid() const
Unique Object Identifier for this identity.
QString signatureFile() const
name of the signature file (with path)
QByteArray pgpEncryptionKey() const
The user's OpenPGP encryption key.
QString fullName() const
Full name of the user.
Identity(const QString &id=QString(), const QString &realName=QString(), const QString &emailAddr=QString(), const QString &organization=QString(), const QString &replyToAddress=QString())
Constructor.
bool isInlinedHtml() const
QString autocorrectionLanguage() const
QString defaultDomainName() const
QString verifyAkonadiId(const QString &str) const
during migration when it failed it can be a string => not a qlonglong akonadi::id => fix it ...
bool operator>(const Identity &other) const
used for sorting
QString cc() const
email addresses for the CC: field
bool signatureIsInline() const
Abstraction of a signature (aka "footer").
bool signatureIsInlinedHtml() const
bool mailingAllowed() const
Tests if there are enough values set to allow mailing.
bool matchesEmailAddress(const QString &addr) const
const QStringList emailAliases() const
email address aliases
QString templates() const
The folder where template messages from this identity will be stored by default.
User identity information.
QString dictionary() const
Dictionary which should be used for spell checking.
void setProperty(const QString &key, const QVariant &value)
Set random properties, when value is empty (for QStrings) or null, the property is deleted...
bool isNull() const
Returns true when the identity contains no values, all null values or only empty values.
bool operator==(const Identity &other) const
used for comparison
void setUoid(uint aUoid)
set the uiod
void writeConfig(KConfigGroup &) const
Write configuration to config.
QByteArray pgpSigningKey() const
The user's OpenPGP signing key.
QString replyToAddr() const
email address for the ReplyTo: field
QString bcc() const
email addresses for the BCC: field
void readConfig(const KConfigGroup &)
Read configuration from config.
QString withSeparator(bool *ok=0) const
QString fullEmailAddr() const
email address in the format "username " suitable for the "From:" field of email messages...
bool useSignatureFile() const
Inline or signature from a file.
QByteArray smimeEncryptionKey() const
The user's S/MIME encryption key.
void setUrl(const QString &url, bool isExecutable=false)
Set the signature URL and mark this signature as being of "from file" resp.
QVariant property(const QString &key) const
Get random properties.
bool operator!=(const Identity &other) const
used for comparison
QString organization() const
The user's organization (optional)