22 #include "signature.h"
24 #include <sonnet/globals.h>
26 #include <kconfiggroup.h>
27 #include <kpimutils/email.h>
32 using namespace KPIMIdentities;
38 const QString &emailAddr,
const QString &organization,
39 const QString &replyToAddr )
46 setProperty( QLatin1String(s_organization), organization );
47 setProperty( QLatin1String(s_replyto), replyToAddr );
48 setDictionary( Sonnet::defaultLanguageName() );
57 if ( !identityNull ) {
66 QHash<QString, QVariant>::const_iterator i = mPropertiesMap.constBegin();
67 while ( i != mPropertiesMap.constEnd() ) {
70 if ( i.key() == QLatin1String(s_dict) ) {
75 if( i.key() == QLatin1String(s_disabledFcc) && i.value().toBool() == false ) {
80 if ( !( i.key() == QLatin1String(s_uoid) && i.value().toUInt() == 0 ) ) {
81 if ( !i.value().isNull() ||
82 ( i.value().type() == QVariant::String && !i.value().toString().isEmpty() ) ) {
94 QMap<QString, QString> entries = config.entryMap();
95 QMap<QString, QString>::const_iterator i = entries.constBegin();
96 QMap<QString, QString>::const_iterator end = entries.constEnd();
98 if ( i.key() == QLatin1String(s_emailAliases) ) {
100 mPropertiesMap.insert( i.key(), config.readEntry( i.key(), QStringList() ) );
102 mPropertiesMap.insert( i.key(), config.readEntry( i.key() ) );
106 mSignature.readConfig( config );
111 QHash<QString, QVariant>::const_iterator i = mPropertiesMap.constBegin();
112 QHash<QString, QVariant>::const_iterator end = mPropertiesMap.constEnd();
114 config.writeEntry( i.key(), i.value() );
115 kDebug( 5325 ) <<
"Store:" << i.key() <<
":" << i.value();
118 mSignature.writeConfig( config );
123 return !
property( QLatin1String(s_email) ).toString().isEmpty();
126 QString Identity::mimeDataType()
128 return QLatin1String(
"application/x-kmail-identity-drag");
131 bool Identity::canDecode(
const QMimeData*md )
133 return md->hasFormat( mimeDataType() );
136 void Identity::populateMimeData( QMimeData*md )
140 QDataStream s( &a, QIODevice::WriteOnly );
143 md->setData( mimeDataType(), a );
146 Identity Identity::fromMimeData(
const QMimeData*md )
149 if ( canDecode( md ) ) {
150 QByteArray ba = md->data( mimeDataType() );
151 QDataStream s( &ba, QIODevice::ReadOnly );
159 QDataStream &KPIMIdentities::operator<<
162 return stream << static_cast<quint32>( i.
uoid() )
179 << i.mPropertiesMap[QLatin1String(s_signature)]
182 << i.preferredCryptoMessageFormat()
190 QDataStream &KPIMIdentities::operator>>
196 >> i.mPropertiesMap[QLatin1String(s_identity)]
197 >> i.mPropertiesMap[QLatin1String(s_name)]
198 >> i.mPropertiesMap[QLatin1String(s_organization)]
199 >> i.mPropertiesMap[QLatin1String(s_pgps)]
200 >> i.mPropertiesMap[QLatin1String(s_pgpe)]
201 >> i.mPropertiesMap[QLatin1String(s_smimes)]
202 >> i.mPropertiesMap[QLatin1String(s_smimee)]
203 >> i.mPropertiesMap[QLatin1String(s_email)]
204 >> i.mPropertiesMap[QLatin1String(s_emailAliases)]
205 >> i.mPropertiesMap[QLatin1String(s_replyto)]
206 >> i.mPropertiesMap[QLatin1String(s_bcc)]
207 >> i.mPropertiesMap[QLatin1String(s_vcard)]
208 >> i.mPropertiesMap[QLatin1String(s_transport)]
209 >> i.mPropertiesMap[QLatin1String(s_fcc)]
210 >> i.mPropertiesMap[QLatin1String(s_drafts)]
211 >> i.mPropertiesMap[QLatin1String(s_templates)]
212 >> i.mPropertiesMap[QLatin1String(s_signature)]
213 >> i.mPropertiesMap[QLatin1String(s_dict)]
214 >> i.mPropertiesMap[QLatin1String(s_xface)]
215 >> i.mPropertiesMap[QLatin1String(s_prefcrypt)]
216 >> i.mPropertiesMap[QLatin1String(s_cc)]
217 >> i.mPropertiesMap[QLatin1String(s_attachVcard)]
218 >> i.mPropertiesMap[QLatin1String(s_autocorrectionLanguage)]
219 >> i.mPropertiesMap[QLatin1String(s_disabledFcc)]
220 >> i.mPropertiesMap[QLatin1String(s_pgpautosign)];
260 return mPropertiesMap == other.mPropertiesMap &&
261 mSignature == other.mSignature;
273 return mPropertiesMap.value( key );
278 const QString name = mPropertiesMap.value( QLatin1String(s_name) ).toString();
279 const QString mail = mPropertiesMap.value( QLatin1String(s_email) ).toString();
281 if ( name.isEmpty() ) {
285 const QString specials( QLatin1String(
"()<>@,.;:[]") );
290 bool needsQuotes=
false;
291 const int nameLength( name.length() );
292 for (
int i=0; i < nameLength; i++ ) {
293 if ( specials.contains( name[i] ) ) {
295 }
else if ( name[i] == QLatin1Char(
'\\') || name[i] == QLatin1Char(
'"') ) {
297 result += QLatin1Char(
'\\');
303 result.insert( 0, QLatin1Char(
'"') );
304 result += QLatin1Char(
'"');
307 result += QLatin1String(
" <") + mail + QLatin1Char(
'>');
314 return property( QLatin1String( s_identity ) ).toString();
334 return property( QLatin1String( s_uoid ) ).toInt();
339 return property( QLatin1String( s_name ) ).toString();
344 return property( QLatin1String( s_organization ) ).toString();
349 return property( QLatin1String( s_pgpe ) ).toByteArray();
354 return property( QLatin1String( s_pgps ) ).toByteArray();
359 return property( QLatin1String( s_smimee ) ).toByteArray();
364 return property( QLatin1String( s_smimes ) ).toByteArray();
367 QString Identity::preferredCryptoMessageFormat()
const
369 return property( QLatin1String( s_prefcrypt ) ).toString();
379 return property( QLatin1String( s_email ) ).toString();
384 return property( QLatin1String( s_emailAliases ) ).toStringList();
389 return property( QLatin1String( s_vcard ) ).toString();
394 return property( QLatin1String( s_attachVcard ) ).toBool();
399 return property( QLatin1String( s_replyto ) ).toString();
404 return property( QLatin1String( s_bcc ) ).toString();
409 return property( QLatin1String( s_cc ) ).toString();
417 bool Identity::isXFaceEnabled()
const
419 return property( QLatin1String( s_xfaceenabled ) ).toBool();
424 return property( QLatin1String( s_xface ) ).toString();
429 return property( QLatin1String( s_dict ) ).toString();
434 const QString str =
property( QLatin1String( s_templates ) ).toString();
440 const QString str =
property( QLatin1String( s_drafts ) ).toString();
446 const QString str =
property( QLatin1String( s_fcc ) ).toString();
452 return property( QLatin1String( s_transport ) ).toString();
457 return mSignature.
type() == Signature::FromCommand;
462 return mSignature.
type() == Signature::FromFile;
467 return mSignature.
type() == Signature::Inlined;
477 return mSignature.text();
482 return mSignature.url();
487 return property( QLatin1String( s_autocorrectionLanguage ) ).toString();
494 if ( value.isNull() ||
495 ( value.type() == QVariant::String && value.toString().isEmpty() ) ) {
496 mPropertiesMap.remove( key );
498 mPropertiesMap.insert( key, value );
512 void Identity::setFullName(
const QString &str )
517 void Identity::setOrganization(
const QString &str )
522 void Identity::setPGPSigningKey(
const QByteArray &str )
524 setProperty( QLatin1String(s_pgps), QLatin1String( str ) );
527 void Identity::setPGPEncryptionKey(
const QByteArray &str )
529 setProperty( QLatin1String(s_pgpe), QLatin1String( str ) );
532 void Identity::setSMIMESigningKey(
const QByteArray &str )
534 setProperty( QLatin1String(s_smimes), QLatin1String( str ) );
537 void Identity::setSMIMEEncryptionKey(
const QByteArray &str )
539 setProperty( QLatin1String(s_smimee), QLatin1String( str ) );
542 void Identity::setEmailAddr(
const QString &str )
544 setPrimaryEmailAddress( str );
547 void Identity::setPrimaryEmailAddress(
const QString & email )
552 void Identity::setEmailAliases(
const QStringList & aliases )
554 setProperty( QLatin1String(s_emailAliases), aliases );
557 void Identity::setVCardFile(
const QString &str )
562 void Identity::setAttachVcard(
bool attachment)
564 setProperty( QLatin1String(s_attachVcard), attachment );
567 void Identity::setReplyToAddr(
const QString&str )
572 void Identity::setSignatureFile(
const QString &str )
577 void Identity::setSignatureInlineText(
const QString &str )
582 void Identity::setTransport(
const QString &str )
587 void Identity::setFcc(
const QString &str )
592 void Identity::setDrafts(
const QString &str )
597 void Identity::setTemplates(
const QString &str )
602 void Identity::setDictionary(
const QString &str )
607 void Identity::setBcc(
const QString &str )
612 void Identity::setCc(
const QString &str )
622 void Identity::setPreferredCryptoMessageFormat(
const QString &str )
627 void Identity::setXFace(
const QString &str )
629 QString strNew = str;
630 strNew.remove( QLatin1Char(
' ') );
631 strNew.remove( QLatin1Char(
'\n') );
632 strNew.remove( QLatin1Char(
'\r') );
636 void Identity::setXFaceEnabled(
const bool on )
641 void Identity::setSignature(
const Signature &sig )
648 const QString addrSpec = KPIMUtils::extractEmailAddress( addr ).toLower();
654 if ( alias.toLower() == addrSpec ) {
667 const qlonglong val = str.toLongLong(&ok);
676 void Identity::setAutocorrectionLanguage(
const QString& language)
678 setProperty( QLatin1String(s_autocorrectionLanguage), language );
684 const QVariant var =
property(QLatin1String( s_disabledFcc ));
692 void Identity::setDisabledFcc(
bool disable)
694 setProperty( QLatin1String(s_disabledFcc), disable );
699 const QVariant var =
property(QLatin1String( s_pgpautosign ));
707 void Identity::setPgpAutoSign(
bool autoSign)
709 setProperty( QLatin1String(s_pgpautosign), autoSign );
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 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 <name@host>" 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)