22 #include "signature.h"
24 #include <kdeversion.h>
25 #include <sonnet/globals.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() );
69 if ( !identityNull ) {
78 QHash<QString, QVariant>::const_iterator i = mPropertiesMap.constBegin();
79 while ( i != mPropertiesMap.constEnd() ) {
82 if ( i.key() == s_dict ) {
88 if ( !( i.key() == s_uoid && i.value().toUInt() == 0 ) ) {
89 if ( !i.value().isNull() ||
90 ( i.value().type() == QVariant::String && !i.value().toString().isEmpty() ) ) {
102 QMap<QString,QString> entries = config.entryMap();
103 QMap<QString,QString>::const_iterator i = entries.constBegin();
104 QMap<QString,QString>::const_iterator end = entries.constEnd();
106 if ( i.key() == s_emailAliases ) {
108 mPropertiesMap.insert( i.key(), config.readEntry( i.key(), QStringList() ) );
110 mPropertiesMap.insert( i.key(), config.readEntry( i.key() ) );
114 mSignature.readConfig( config );
119 QHash<QString, QVariant>::const_iterator i = mPropertiesMap.constBegin();
120 QHash<QString, QVariant>::const_iterator end = mPropertiesMap.constEnd();
122 config.writeEntry( i.key(), i.value() );
123 kDebug( 5325 ) <<
"Store:" << i.key() <<
":" << i.value();
126 mSignature.writeConfig( config );
131 return !
property( s_email ).toString().isEmpty();
134 QString Identity::mimeDataType()
136 return "application/x-kmail-identity-drag";
139 bool Identity::canDecode(
const QMimeData*md )
141 return md->hasFormat( mimeDataType() );
144 void Identity::populateMimeData( QMimeData*md )
148 QDataStream s( &a, QIODevice::WriteOnly );
151 md->setData( mimeDataType(), a );
154 Identity Identity::fromMimeData(
const QMimeData*md )
157 if ( canDecode( md ) ) {
158 QByteArray ba = md->data( mimeDataType() );
159 QDataStream s( &ba, QIODevice::ReadOnly );
167 QDataStream &KPIMIdentities::operator<<
170 return stream << static_cast<quint32>( i.
uoid() )
187 << i.mPropertiesMap[s_signature]
190 << i.preferredCryptoMessageFormat()
195 QDataStream &KPIMIdentities::operator>>
202 >> i.mPropertiesMap[s_identity]
203 >> i.mPropertiesMap[s_name]
204 >> i.mPropertiesMap[s_organization]
205 >> i.mPropertiesMap[s_pgps]
206 >> i.mPropertiesMap[s_pgpe]
207 >> i.mPropertiesMap[s_smimes]
208 >> i.mPropertiesMap[s_smimee]
209 >> i.mPropertiesMap[s_email]
210 >> i.mPropertiesMap[s_emailAliases]
211 >> i.mPropertiesMap[s_replyto]
212 >> i.mPropertiesMap[s_bcc]
213 >> i.mPropertiesMap[s_vcard]
214 >> i.mPropertiesMap[s_transport]
215 >> i.mPropertiesMap[s_fcc]
216 >> i.mPropertiesMap[s_drafts]
217 >> i.mPropertiesMap[s_templates]
218 >> i.mPropertiesMap[s_signature]
219 >> i.mPropertiesMap[s_dict]
220 >> i.mPropertiesMap[s_xface]
221 >> i.mPropertiesMap[s_prefcrypt]
222 >> i.mPropertiesMap[s_cc];
262 return mPropertiesMap == other.mPropertiesMap &&
263 mSignature == other.mSignature;
275 return mPropertiesMap.value( key );
280 const QString name = mPropertiesMap.value( s_name ).toString();
281 const QString mail = mPropertiesMap.value( s_email ).toString();
283 if ( name.isEmpty() ) {
287 const QString specials(
"()<>@,.;:[]" );
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] ==
'\\' || name[i] ==
'"' ) {
305 result.insert( 0,
'"' );
309 result +=
" <" + mail +
'>';
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_replyto ) ).toString();
401 return property( QLatin1String( s_bcc ) ).toString();
406 return property( QLatin1String( s_cc ) ).toString();
414 bool Identity::isXFaceEnabled()
const
416 return property( QLatin1String( s_xfaceenabled ) ).toBool();
421 return property( QLatin1String( s_xface ) ).toString();
426 return property( QLatin1String( s_dict ) ).toString();
431 const QString str =
property( QLatin1String( s_templates ) ).toString();
437 const QString str =
property( QLatin1String( s_drafts ) ).toString();
443 const QString str =
property( QLatin1String( s_fcc ) ).toString();
449 return property( QLatin1String( s_transport ) ).toString();
454 return mSignature.
type() == Signature::FromCommand;
459 return mSignature.
type() == Signature::FromFile;
464 return mSignature.
type() == Signature::Inlined;
474 return mSignature.text();
479 return mSignature.url();
486 if ( value.isNull() ||
487 ( value.type() == QVariant::String && value.toString().isEmpty() ) ) {
488 mPropertiesMap.remove( key );
490 mPropertiesMap.insert( key, value );
504 void Identity::setFullName(
const QString &str )
509 void Identity::setOrganization(
const QString &str )
514 void Identity::setPGPSigningKey(
const QByteArray &str )
519 void Identity::setPGPEncryptionKey(
const QByteArray &str )
524 void Identity::setSMIMESigningKey(
const QByteArray &str )
529 void Identity::setSMIMEEncryptionKey(
const QByteArray &str )
534 void Identity::setEmailAddr(
const QString &str )
536 setPrimaryEmailAddress( str );
539 void Identity::setPrimaryEmailAddress(
const QString & email )
544 void Identity::setEmailAliases(
const QStringList & aliases )
549 void Identity::setVCardFile(
const QString &str )
554 void Identity::setReplyToAddr(
const QString&str )
559 void Identity::setSignatureFile(
const QString &str )
564 void Identity::setSignatureInlineText(
const QString &str )
569 void Identity::setTransport(
const QString &str )
574 void Identity::setFcc(
const QString &str )
579 void Identity::setDrafts(
const QString &str )
584 void Identity::setTemplates(
const QString &str )
589 void Identity::setDictionary(
const QString &str )
594 void Identity::setBcc(
const QString &str )
599 void Identity::setCc(
const QString &str )
610 void Identity::setPreferredCryptoMessageFormat(
const QString &str )
615 void Identity::setXFace(
const QString &str )
617 QString strNew = str;
618 strNew.remove(
' ' );
619 strNew.remove(
'\n' );
620 strNew.remove(
'\r' );
624 void Identity::setXFaceEnabled(
const bool on )
629 void Identity::setSignature(
const Signature &sig )
636 const QString addrSpec = KPIMUtils::extractEmailAddress( addr ).toLower();
641 if ( alias.toLower() == addrSpec )
653 const qlonglong val = str.toLongLong(&ok);