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() )
173 << i.pgpEncryptionKey()
174 << i.smimeSigningKey()
175 << i.smimeEncryptionKey()
176 << i.primaryEmailAddress()
185 << i.mPropertiesMap[QLatin1String(s_signature)]
188 << i.preferredCryptoMessageFormat()
191 << i.autocorrectionLanguage()
194 << i.defaultDomainName();
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)];
230 i.setProperty( QLatin1String(s_uoid), uoid );
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 signatureInlineText() const
inline signature
QByteArray pgpSigningKey() const
The user's OpenPGP signing key.
QString defaultDomainName() const
KPIMIDENTITIES_DEPRECATED QString emailAddr() const
email address (without the user name - only name@host)
QString signatureText(bool *ok=0) const
QString vCardFile() const
vCard to attach to outgoing emails
QString identityName() const
Identity/nickname for this collection.
QByteArray smimeEncryptionKey() const
The user's S/MIME encryption key.
bool operator>=(const Identity &other) const
used for sorting
QString xface() const
a X-Face header for this identity
QString transport() const
The transport that is set for this identity.
bool useSignatureFile() const
Inline or signature from a file.
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 signatureFile() const
name of the signature file (with path)
bool operator>(const Identity &other) const
used for sorting
void setIdentityName(const QString &name)
Identity/nickname for this collection.
QString autocorrectionLanguage() const
bool operator!=(const Identity &other) const
used for comparison
Identity(const QString &id=QString(), const QString &realName=QString(), const QString &emailAddr=QString(), const QString &organization=QString(), const QString &replyToAddress=QString())
Constructor.
QString organization() const
The user's organization (optional)
bool mailingAllowed() const
Tests if there are enough values set to allow mailing.
bool signatureIsInline() const
bool matchesEmailAddress(const QString &addr) const
bool operator<=(const Identity &other) const
used for sorting
QString dictionary() const
Dictionary which should be used for spell checking.
const QStringList emailAliases() const
email address aliases
Abstraction of a signature (aka "footer").
QString cc() const
email addresses for the CC: field
QString withSeparator(bool *ok=0) const
User identity information.
void setProperty(const QString &key, const QVariant &value)
Set random properties, when value is empty (for QStrings) or null, the property is deleted...
QString replyToAddr() const
email address for the ReplyTo: field
QString fullEmailAddr() const
email address in the format "username <name@host>" suitable for the "From:" field of email messages...
void setUoid(uint aUoid)
set the uiod
QByteArray smimeSigningKey() const
The user's S/MIME signing key.
QString fullName() const
Full name of the user.
QString primaryEmailAddress() const
primary email address (without the user name - only name@host).
void readConfig(const KConfigGroup &)
Read configuration from config.
QString fcc() const
The folder where sent messages from this identity will be stored by default.
uint uoid() const
Unique Object Identifier for this identity.
bool operator==(const Identity &other) const
used for comparison
QString verifyAkonadiId(const QString &str) const
during migration when it failed it can be a string => not a qlonglong akonadi::id => fix it ...
QString bcc() const
email addresses for the BCC: field
QVariant property(const QString &key) const
Get random properties.
void setUrl(const QString &url, bool isExecutable=false)
Set the signature URL and mark this signature as being of "from file" resp.
bool isInlinedHtml() const
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 sorting
bool signatureIsPlainFile() const
QString templates() const
The folder where template messages from this identity will be stored by default.
QByteArray pgpEncryptionKey() const
The user's OpenPGP encryption key.
bool signatureIsCommand() const
bool signatureIsInlinedHtml() const
QString drafts() const
The folder where draft messages from this identity will be stored by default.
void writeConfig(KConfigGroup &) const
Write configuration to config.