22 #include "signature.h"
24 #include <kdeversion.h>
25 #include <sonnet/globals.h>
27 #include <klocalizedstring.h>
28 #include <kmessagebox.h>
29 #include <kconfiggroup.h>
32 #include <kpimutils/kfileio.h>
33 #include <kpimutils/email.h>
39 #include <sys/types.h>
45 using namespace KPIMIdentities;
51 const QString &emailAddr,
const QString &organization,
52 const QString &replyToAddr )
61 setDictionary( Sonnet::defaultLanguageName() );
70 if ( !identityNull ) {
79 QHash<QString, QVariant>::const_iterator i = mPropertiesMap.constBegin();
80 while ( i != mPropertiesMap.constEnd() ) {
83 if ( i.key() == s_dict ) {
88 if( i.key() == s_disabledFcc && i.value().toBool() == false ) {
93 if ( !( i.key() == s_uoid && i.value().toUInt() == 0 ) ) {
94 if ( !i.value().isNull() ||
95 ( i.value().type() == QVariant::String && !i.value().toString().isEmpty() ) ) {
107 QMap<QString, QString> entries = config.entryMap();
108 QMap<QString, QString>::const_iterator i = entries.constBegin();
109 QMap<QString, QString>::const_iterator end = entries.constEnd();
111 if ( i.key() == s_emailAliases ) {
113 mPropertiesMap.insert( i.key(), config.readEntry( i.key(), QStringList() ) );
115 mPropertiesMap.insert( i.key(), config.readEntry( i.key() ) );
119 mSignature.readConfig( config );
124 QHash<QString, QVariant>::const_iterator i = mPropertiesMap.constBegin();
125 QHash<QString, QVariant>::const_iterator end = mPropertiesMap.constEnd();
127 config.writeEntry( i.key(), i.value() );
128 kDebug( 5325 ) <<
"Store:" << i.key() <<
":" << i.value();
131 mSignature.writeConfig( config );
136 return !
property( s_email ).toString().isEmpty();
139 QString Identity::mimeDataType()
141 return "application/x-kmail-identity-drag";
144 bool Identity::canDecode(
const QMimeData*md )
146 return md->hasFormat( mimeDataType() );
149 void Identity::populateMimeData( QMimeData*md )
153 QDataStream s( &a, QIODevice::WriteOnly );
156 md->setData( mimeDataType(), a );
159 Identity Identity::fromMimeData(
const QMimeData*md )
162 if ( canDecode( md ) ) {
163 QByteArray ba = md->data( mimeDataType() );
164 QDataStream s( &ba, QIODevice::ReadOnly );
172 QDataStream &KPIMIdentities::operator<<
175 return stream << static_cast<quint32>( i.
uoid() )
192 << i.mPropertiesMap[s_signature]
195 << i.preferredCryptoMessageFormat()
204 QDataStream &KPIMIdentities::operator>>
210 >> i.mPropertiesMap[s_identity]
211 >> i.mPropertiesMap[s_name]
212 >> i.mPropertiesMap[s_organization]
213 >> i.mPropertiesMap[s_pgps]
214 >> i.mPropertiesMap[s_pgpe]
215 >> i.mPropertiesMap[s_smimes]
216 >> i.mPropertiesMap[s_smimee]
217 >> i.mPropertiesMap[s_email]
218 >> i.mPropertiesMap[s_emailAliases]
219 >> i.mPropertiesMap[s_replyto]
220 >> i.mPropertiesMap[s_bcc]
221 >> i.mPropertiesMap[s_vcard]
222 >> i.mPropertiesMap[s_transport]
223 >> i.mPropertiesMap[s_fcc]
224 >> i.mPropertiesMap[s_drafts]
225 >> i.mPropertiesMap[s_templates]
226 >> i.mPropertiesMap[s_signature]
227 >> i.mPropertiesMap[s_dict]
228 >> i.mPropertiesMap[s_xface]
229 >> i.mPropertiesMap[s_prefcrypt]
230 >> i.mPropertiesMap[s_cc]
231 >> i.mPropertiesMap[s_attachVcard]
232 >> i.mPropertiesMap[s_autocorrectionLanguage]
233 >> i.mPropertiesMap[s_disabledFcc];
273 return mPropertiesMap == other.mPropertiesMap &&
274 mSignature == other.mSignature;
286 return mPropertiesMap.value( key );
291 const QString name = mPropertiesMap.value( s_name ).toString();
292 const QString mail = mPropertiesMap.value( s_email ).toString();
294 if ( name.isEmpty() ) {
298 const QString specials(
"()<>@,.;:[]" );
303 bool needsQuotes=
false;
304 const int nameLength( name.length() );
305 for (
int i=0; i < nameLength; i++ ) {
306 if ( specials.contains( name[i] ) ) {
308 }
else if ( name[i] ==
'\\' || name[i] ==
'"' ) {
316 result.insert( 0,
'"' );
320 result +=
" <" + mail +
'>';
327 return property( QLatin1String( s_identity ) ).toString();
347 return property( QLatin1String( s_uoid ) ).toInt();
352 return property( QLatin1String( s_name ) ).toString();
357 return property( QLatin1String( s_organization ) ).toString();
362 return property( QLatin1String( s_pgpe ) ).toByteArray();
367 return property( QLatin1String( s_pgps ) ).toByteArray();
372 return property( QLatin1String( s_smimee ) ).toByteArray();
377 return property( QLatin1String( s_smimes ) ).toByteArray();
380 QString Identity::preferredCryptoMessageFormat()
const
382 return property( QLatin1String( s_prefcrypt ) ).toString();
392 return property( QLatin1String( s_email ) ).toString();
397 return property( QLatin1String( s_emailAliases ) ).toStringList();
402 return property( QLatin1String( s_vcard ) ).toString();
407 return property( QLatin1String( s_attachVcard ) ).toBool();
412 return property( QLatin1String( s_replyto ) ).toString();
417 return property( QLatin1String( s_bcc ) ).toString();
422 return property( QLatin1String( s_cc ) ).toString();
430 bool Identity::isXFaceEnabled()
const
432 return property( QLatin1String( s_xfaceenabled ) ).toBool();
437 return property( QLatin1String( s_xface ) ).toString();
442 return property( QLatin1String( s_dict ) ).toString();
447 const QString str =
property( QLatin1String( s_templates ) ).toString();
453 const QString str =
property( QLatin1String( s_drafts ) ).toString();
459 const QString str =
property( QLatin1String( s_fcc ) ).toString();
465 return property( QLatin1String( s_transport ) ).toString();
470 return mSignature.
type() == Signature::FromCommand;
475 return mSignature.
type() == Signature::FromFile;
480 return mSignature.
type() == Signature::Inlined;
490 return mSignature.text();
495 return mSignature.url();
500 return property( QLatin1String( s_autocorrectionLanguage ) ).toString();
507 if ( value.isNull() ||
508 ( value.type() == QVariant::String && value.toString().isEmpty() ) ) {
509 mPropertiesMap.remove( key );
511 mPropertiesMap.insert( key, value );
525 void Identity::setFullName(
const QString &str )
530 void Identity::setOrganization(
const QString &str )
535 void Identity::setPGPSigningKey(
const QByteArray &str )
540 void Identity::setPGPEncryptionKey(
const QByteArray &str )
545 void Identity::setSMIMESigningKey(
const QByteArray &str )
550 void Identity::setSMIMEEncryptionKey(
const QByteArray &str )
555 void Identity::setEmailAddr(
const QString &str )
557 setPrimaryEmailAddress( str );
560 void Identity::setPrimaryEmailAddress(
const QString & email )
565 void Identity::setEmailAliases(
const QStringList & aliases )
570 void Identity::setVCardFile(
const QString &str )
575 void Identity::setAttachVcard(
bool attachment)
580 void Identity::setReplyToAddr(
const QString&str )
585 void Identity::setSignatureFile(
const QString &str )
590 void Identity::setSignatureInlineText(
const QString &str )
595 void Identity::setTransport(
const QString &str )
600 void Identity::setFcc(
const QString &str )
605 void Identity::setDrafts(
const QString &str )
610 void Identity::setTemplates(
const QString &str )
615 void Identity::setDictionary(
const QString &str )
620 void Identity::setBcc(
const QString &str )
625 void Identity::setCc(
const QString &str )
635 void Identity::setPreferredCryptoMessageFormat(
const QString &str )
640 void Identity::setXFace(
const QString &str )
642 QString strNew = str;
643 strNew.remove(
' ' );
644 strNew.remove(
'\n' );
645 strNew.remove(
'\r' );
649 void Identity::setXFaceEnabled(
const bool on )
654 void Identity::setSignature(
const Signature &sig )
661 const QString addrSpec = KPIMUtils::extractEmailAddress( addr ).toLower();
667 if ( alias.toLower() == addrSpec ) {
680 const qlonglong val = str.toLongLong(&ok);
689 void Identity::setAutocorrectionLanguage(
const QString& language)
697 const QVariant var =
property(QLatin1String( s_disabledFcc ));
705 void Identity::setDisabledFcc(
bool disable)