summaryrefslogtreecommitdiffstats
path: root/src/versit/qversitcontactimporter_p.cpp
diff options
context:
space:
mode:
authorMikko Suonio <mikko.suonio@nokia.com>2012-04-26 11:33:40 +0300
committerQt by Nokia <qt-info@nokia.com>2012-05-07 07:55:39 +0200
commit2a4d4e898748455f396a8243d04b4c051b61a1a9 (patch)
tree2a4376735459680bdb8adf0bba76738077e06286 /src/versit/qversitcontactimporter_p.cpp
parentb0a39f44c4aa09e9a860b4a44efefa12ace22553 (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.cpp38
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(