diff --git a/src/imports/location/declarativeplaces/qdeclarativeplace.cpp b/src/imports/location/declarativeplaces/qdeclarativeplace.cpp index 0b755b195a6c0f3f2c47899c841281940daf0ccf..05fa3d0123e67942886cc729a4c9fbb184f3fed9 100644 --- a/src/imports/location/declarativeplaces/qdeclarativeplace.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativeplace.cpp @@ -1203,14 +1203,18 @@ QPlaceManager *QDeclarativePlace::manager() */ QString QDeclarativePlace::primaryValue(const QString &contactType) const { - if (m_contactDetails->value(contactType).userType() == QVariant::List) { + QVariant value = m_contactDetails->value(contactType); + if (value.userType() == qMetaTypeId<QJSValue>()) + value = value.value<QJSValue>().toVariant(); + + if (value.userType() == QVariant::List) { QVariantList detailList = m_contactDetails->value(contactType).toList(); if (!detailList.isEmpty()) { QDeclarativeContactDetail *primaryDetail = qobject_cast<QDeclarativeContactDetail *>(detailList.at(0).value<QObject *>()); if (primaryDetail) return primaryDetail->value(); } - } else if (m_contactDetails->value(contactType).userType() == QMetaType::QObjectStar) { + } else if (value.userType() == QMetaType::QObjectStar) { QDeclarativeContactDetail *primaryDetail = qobject_cast<QDeclarativeContactDetail *>(m_contactDetails->value(contactType).value<QObject *>()); if (primaryDetail) return primaryDetail->value();