diff options
author | Mikko Suonio <mikko.suonio@nokia.com> | 2012-04-26 11:33:40 +0300 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-07 07:55:39 +0200 |
commit | 2a4d4e898748455f396a8243d04b4c051b61a1a9 (patch) | |
tree | 2a4376735459680bdb8adf0bba76738077e06286 /src/versit/qversitcontactimporter_p.cpp | |
parent | b0a39f44c4aa09e9a860b4a44efefa12ace22553 (diff) |
Implement contacts versit export/import of extended details
This adds support for exporting and importing extended details
containing string or integer data. Extended details with
other types of data are ignored.
Change-Id: Ib6a1c5a2869ed416e405ed1bde87b51e1f70a617
Reviewed-by: Cristiano di Flora <cristiano.di-flora@nokia.com>
Diffstat (limited to 'src/versit/qversitcontactimporter_p.cpp')
-rw-r--r-- | src/versit/qversitcontactimporter_p.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/versit/qversitcontactimporter_p.cpp b/src/versit/qversitcontactimporter_p.cpp index f5352c1eb..40f6ad2d1 100644 --- a/src/versit/qversitcontactimporter_p.cpp +++ b/src/versit/qversitcontactimporter_p.cpp @@ -210,6 +210,9 @@ void QVersitContactImporterPrivate::importProperty( case QContactDetail::TypeBirthday: success = createBirthday(property, contact, &updatedDetails); break; + case QContactDetail::TypeExtendedDetail: + success = createExtendedDetail(property, contact, &updatedDetails); + break; case QContactDetail::TypeFamily: success = createFamily(property, contact, &updatedDetails); break; @@ -900,6 +903,41 @@ bool QVersitContactImporterPrivate::createGender( } /*! + * Creates a QContactExtendedDetail from \a property + */ +bool QVersitContactImporterPrivate::createExtendedDetail( + const QVersitProperty& property, + QContact* contact, + QList<QContactDetail>* updatedDetails) +{ + Q_UNUSED(contact) + QContactExtendedDetail extendedDetail; + QVariant variant = property.variantValue(); + if (property.valueType() != QVersitProperty::CompoundType + || variant.type() != QVariant::StringList) + return false; + + QStringList values = variant.toStringList(); + QString typeInfo; + + extendedDetail.setName(takeFirst(values)); + typeInfo = takeFirst(values); + if (typeInfo == QStringLiteral("QString")) { + extendedDetail.setData(QVariant(takeFirst(values))); + } else if (typeInfo == QStringLiteral("int")) { + bool conversionSuccessful = true; + extendedDetail.setData(QVariant(takeFirst(values).toInt(&conversionSuccessful))); + if (!conversionSuccessful) + return false; + } else { + return false; + } + + saveDetailWithContext(updatedDetails, extendedDetail, extractContexts(property)); + return true; +} + +/*! * Creates a simple name-value contact detail. */ bool QVersitContactImporterPrivate::createNameValueDetail( |