22 #include "signature.h"
24 #include <sonnet/globals.h>
26 #include <kconfiggroup.h>
27 #include <kpimutils/email.h>
33 using namespace KPIMIdentities;
39 const QString &emailAddr,
const QString &organization,
40 const QString &replyToAddr )
50 setProperty( QLatin1String(s_defaultDomainName), QHostInfo::localHostName());
58 if ( !identityNull ) {
67 QHash<QString, QVariant>::const_iterator i = mPropertiesMap.constBegin();
68 while ( i != mPropertiesMap.constEnd() ) {
70 if ( i.key() == QLatin1String(s_defaultDomainName) ) {
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()
191 QDataStream &KPIMIdentities::operator>>
197 >> i.mPropertiesMap[QLatin1String(s_identity)]
198 >> i.mPropertiesMap[QLatin1String(s_name)]
199 >> i.mPropertiesMap[QLatin1String(s_organization)]
200 >> i.mPropertiesMap[QLatin1String(s_pgps)]
201 >> i.mPropertiesMap[QLatin1String(s_pgpe)]
202 >> i.mPropertiesMap[QLatin1String(s_smimes)]
203 >> i.mPropertiesMap[QLatin1String(s_smimee)]
204 >> i.mPropertiesMap[QLatin1String(s_email)]
205 >> i.mPropertiesMap[QLatin1String(s_emailAliases)]
206 >> i.mPropertiesMap[QLatin1String(s_replyto)]
207 >> i.mPropertiesMap[QLatin1String(s_bcc)]
208 >> i.mPropertiesMap[QLatin1String(s_vcard)]
209 >> i.mPropertiesMap[QLatin1String(s_transport)]
210 >> i.mPropertiesMap[QLatin1String(s_fcc)]
211 >> i.mPropertiesMap[QLatin1String(s_drafts)]
212 >> i.mPropertiesMap[QLatin1String(s_templates)]
213 >> i.mPropertiesMap[QLatin1String(s_signature)]
214 >> i.mPropertiesMap[QLatin1String(s_dict)]
215 >> i.mPropertiesMap[QLatin1String(s_xface)]
216 >> i.mPropertiesMap[QLatin1String(s_prefcrypt)]
217 >> i.mPropertiesMap[QLatin1String(s_cc)]
218 >> i.mPropertiesMap[QLatin1String(s_attachVcard)]
219 >> i.mPropertiesMap[QLatin1String(s_autocorrectionLanguage)]
220 >> i.mPropertiesMap[QLatin1String(s_disabledFcc)]
221 >> i.mPropertiesMap[QLatin1String(s_pgpautosign)]
222 >> i.mPropertiesMap[QLatin1String(s_defaultDomainName)];
262 return mPropertiesMap == other.mPropertiesMap &&
263 mSignature == other.mSignature;
275 return mPropertiesMap.value( key );
280 const QString name = mPropertiesMap.value( QLatin1String(s_name) ).toString();
281 const QString mail = mPropertiesMap.value( QLatin1String(s_email) ).toString();
283 if ( name.isEmpty() ) {
287 const QString specials( QLatin1String(
"()<>@,.;:[]") );
292 bool needsQuotes=
false;
293 const int nameLength( name.length() );
294 for (
int i=0; i < nameLength; i++ ) {
295 if ( specials.contains( name[i] ) ) {
297 }
else if ( name[i] == QLatin1Char(
'\\') || name[i] == QLatin1Char(
'"') ) {
299 result += QLatin1Char(
'\\');
305 result.insert( 0, QLatin1Char(
'"') );
306 result += QLatin1Char(
'"');
309 result += QLatin1String(
" <") + mail + QLatin1Char(
'>');
316 return property( QLatin1String( s_identity ) ).toString();
336 return property( QLatin1String( s_uoid ) ).toInt();
341 return property( QLatin1String( s_name ) ).toString();
346 return property( QLatin1String( s_organization ) ).toString();
351 return property( QLatin1String( s_pgpe ) ).toByteArray();
356 return property( QLatin1String( s_pgps ) ).toByteArray();
361 return property( QLatin1String( s_smimee ) ).toByteArray();
366 return property( QLatin1String( s_smimes ) ).toByteArray();
369 QString Identity::preferredCryptoMessageFormat()
const
371 return property( QLatin1String( s_prefcrypt ) ).toString();
381 return property( QLatin1String( s_email ) ).toString();
386 return property( QLatin1String( s_emailAliases ) ).toStringList();
391 return property( QLatin1String( s_vcard ) ).toString();
396 return property( QLatin1String( s_attachVcard ) ).toBool();
401 return property( QLatin1String( s_replyto ) ).toString();
406 return property( QLatin1String( s_bcc ) ).toString();
411 return property( QLatin1String( s_cc ) ).toString();
419 bool Identity::isXFaceEnabled()
const
421 return property( QLatin1String( s_xfaceenabled ) ).toBool();
426 return property( QLatin1String( s_xface ) ).toString();
431 const QString dict =
property( QLatin1String( s_dict ) ).toString();
432 if (dict.isEmpty()) {
433 return Sonnet::defaultLanguageName();
440 const QString str =
property( QLatin1String( s_templates ) ).toString();
446 const QString str =
property( QLatin1String( s_drafts ) ).toString();
452 const QString str =
property( QLatin1String( s_fcc ) ).toString();
458 return property( QLatin1String( s_transport ) ).toString();
463 return mSignature.
type() == Signature::FromCommand;
468 return mSignature.
type() == Signature::FromFile;
473 return mSignature.
type() == Signature::Inlined;
483 return mSignature.text();
488 return mSignature.url();
493 return property( QLatin1String( s_autocorrectionLanguage ) ).toString();
500 if ( value.isNull() ||
501 ( value.type() == QVariant::String && value.toString().isEmpty() ) ) {
502 mPropertiesMap.remove( key );
504 mPropertiesMap.insert( key, value );
518 void Identity::setFullName(
const QString &str )
523 void Identity::setOrganization(
const QString &str )
528 void Identity::setPGPSigningKey(
const QByteArray &str )
530 setProperty( QLatin1String(s_pgps), QLatin1String( str ) );
533 void Identity::setPGPEncryptionKey(
const QByteArray &str )
535 setProperty( QLatin1String(s_pgpe), QLatin1String( str ) );
538 void Identity::setSMIMESigningKey(
const QByteArray &str )
540 setProperty( QLatin1String(s_smimes), QLatin1String( str ) );
543 void Identity::setSMIMEEncryptionKey(
const QByteArray &str )
545 setProperty( QLatin1String(s_smimee), QLatin1String( str ) );
548 void Identity::setEmailAddr(
const QString &str )
550 setPrimaryEmailAddress( str );
553 void Identity::setPrimaryEmailAddress(
const QString & email )
558 void Identity::setEmailAliases(
const QStringList & aliases )
560 setProperty( QLatin1String(s_emailAliases), aliases );
563 void Identity::setVCardFile(
const QString &str )
568 void Identity::setAttachVcard(
bool attachment)
570 setProperty( QLatin1String(s_attachVcard), attachment );
573 void Identity::setReplyToAddr(
const QString&str )
578 void Identity::setSignatureFile(
const QString &str )
583 void Identity::setSignatureInlineText(
const QString &str )
588 void Identity::setTransport(
const QString &str )
593 void Identity::setFcc(
const QString &str )
598 void Identity::setDrafts(
const QString &str )
603 void Identity::setTemplates(
const QString &str )
608 void Identity::setDictionary(
const QString &str )
613 void Identity::setBcc(
const QString &str )
618 void Identity::setCc(
const QString &str )
628 void Identity::setPreferredCryptoMessageFormat(
const QString &str )
633 void Identity::setXFace(
const QString &str )
635 QString strNew = str;
636 strNew.remove( QLatin1Char(
' ') );
637 strNew.remove( QLatin1Char(
'\n') );
638 strNew.remove( QLatin1Char(
'\r') );
642 void Identity::setXFaceEnabled(
const bool on )
647 void Identity::setSignature(
const Signature &sig )
654 const QString addrSpec = KPIMUtils::extractEmailAddress( addr ).toLower();
660 if ( alias.toLower() == addrSpec ) {
673 const qlonglong val = str.toLongLong(&ok);
682 void Identity::setAutocorrectionLanguage(
const QString& language)
684 setProperty( QLatin1String(s_autocorrectionLanguage), language );
690 const QVariant var =
property(QLatin1String( s_disabledFcc ));
698 void Identity::setDisabledFcc(
bool disable)
700 setProperty( QLatin1String(s_disabledFcc), disable );
705 const QVariant var =
property(QLatin1String( s_pgpautosign ));
713 void Identity::setPgpAutoSign(
bool autoSign)
715 setProperty( QLatin1String(s_pgpautosign), autoSign );
720 return property( QLatin1String( s_defaultDomainName ) ).toString();
723 void Identity::setDefaultDomainName(
const QString &domainName)
725 setProperty( QLatin1String(s_defaultDomainName), domainName );