qtmobility/plugins/contacts/symbian/src/transform/cnttransformavatar.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 11 06b8e2af4411
--- a/qtmobility/plugins/contacts/symbian/src/transform/cnttransformavatar.cpp	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/plugins/contacts/symbian/src/transform/cnttransformavatar.cpp	Mon May 03 13:18:40 2010 +0300
@@ -48,75 +48,59 @@
 
     QList<CContactItemField *> fieldList;
 
-	//cast to avatar
-	const QContactAvatar &avatar(static_cast<const QContactAvatar&>(detail));
-
+    //cast to avatar
+    const QContactAvatar &avatar(static_cast<const QContactAvatar&>(detail));
 
-	//create new field
-	TPtrC fieldText(reinterpret_cast<const TUint16*>(avatar.avatar().utf16()));
-
-	if(fieldText.Length()) {
-	    //supported subTypes
-	    const QString& subTypeImage(QContactAvatar::SubTypeImage);
-	    const QString& subTypeAudioRingtone(QContactAvatar::SubTypeAudioRingtone);
-	    const QString& subTypeVideoRingtone(QContactAvatar::SubTypeVideoRingtone);
+    //create new field
+    QString urlString = avatar.imageUrl().toString();
+    TPtrC fieldText(reinterpret_cast<const TUint16*>(urlString.utf16()));
 
-	    QString subType = avatar.subType();
-	    TUid uid(KNullUid);
-	    if(subType.isEmpty()) {
-            uid = KUidContactFieldCodImage;
-	    } else if (subType.compare(subTypeImage) == 0) {
-	        uid = KUidContactFieldCodImage;
-	    } else if (subType.compare(subTypeAudioRingtone) == 0) {
-	        uid = KUidContactFieldRingTone;
-	    } else if (subType.compare(subTypeVideoRingtone) == 0) {
-	        uid = KUidContactFieldVideoRingTone;
-	    } else {
-	        User::LeaveIfError(KErrNotSupported);
-	    }
-	    CContactItemField* newField = CContactItemField::NewLC(KStorageTypeText, uid);
+    //copy filename and replace slash with a backslash
+    TFileName filename;
+    for(TInt i(0); i < fieldText.Length(); ++i) {
+        if(i >= filename.MaxLength())
+            User::Leave(KErrTooBig);
+        if(fieldText[i] == '/') {
+            filename.Append('\\');
+        } else {
+            filename.Append(fieldText[i]);
+        }
+    }
 
-	    newField->SetMapping(KUidContactFieldVCardMapUnknown);
-	    newField->TextStorage()->SetTextL(fieldText);
+    if(filename.Length()) {
+        TUid uid(KUidContactFieldCodImage);
+
+        CContactItemField* newField = CContactItemField::NewLC(KStorageTypeText, uid);
 
-	    fieldList.append(newField);
-	    CleanupStack::Pop(newField);
-	}
+        newField->SetMapping(KUidContactFieldVCardMapUnknown);
+        newField->TextStorage()->SetTextL(filename);
 
-	return fieldList;
+        fieldList.append(newField);
+        CleanupStack::Pop(newField);
+    }
+
+    return fieldList;
 }
 
 QContactDetail *CntTransformAvatar::transformItemField(const CContactItemField& field, const QContact &contact)
 {
-	Q_UNUSED(contact);
-
-	QContactAvatar *avatar = new QContactAvatar();
-
-	CContactTextField* storage = field.TextStorage();
-	QString avatarString = QString::fromUtf16(storage->Text().Ptr(), storage->Text().Length());
-	avatar->setAvatar(avatarString);
+    Q_UNUSED(contact);
+    QContactAvatar *avatar = new QContactAvatar();
 
-	if (field.ContentType().ContainsFieldType(KUidContactFieldCodImage)) {
-        avatar->setSubType(QContactAvatar::SubTypeImage);
-    }
-	else if (field.ContentType().ContainsFieldType(KUidContactFieldRingTone)) {
-        avatar->setSubType(QContactAvatar::SubTypeAudioRingtone);
-	}
-    else if (field.ContentType().ContainsFieldType(KUidContactFieldVideoRingTone)) {
-        avatar->setSubType(QContactAvatar::SubTypeVideoRingtone);
+    if (field.ContentType().ContainsFieldType(KUidContactFieldCodImage)) {
+        CContactTextField* storage = field.TextStorage();
+        QString avatarString = QString::fromUtf16(storage->Text().Ptr(), storage->Text().Length());
+        avatar->setImageUrl(QUrl(avatarString));
     }
 
-	return avatar;
+    return avatar;
 }
 
 bool CntTransformAvatar::supportsField(TUint32 fieldType) const
 {
     bool ret = false;
-    if (fieldType == KUidContactFieldCodImage.iUid ||
-        fieldType == KUidContactFieldRingTone.iUid ||
-        fieldType == KUidContactFieldVideoRingTone.iUid) {
+    if (fieldType == KUidContactFieldCodImage.iUid)
         ret = true;
-    }
     return ret;
 }
 
@@ -142,12 +126,10 @@
  * \a subType The subtype to be checked
  * \return True if this subtype is supported
  */
-bool CntTransformAvatar::supportsSubType(const QString& subType) const
+bool CntTransformAvatar::supportsSubType(const QString& /*subType*/) const
 {
-    if(QContactAvatar::FieldSubType  == subType)
-      return true;
-    else
-      return false;
+    // XXX todo
+    return false;
 }
 
 /*!
@@ -156,22 +138,10 @@
  * \a fieldName The name of the supported field
  * \return fieldId for the fieldName, 0  if not supported
  */
-quint32 CntTransformAvatar::getIdForField(const QString& fieldName) const
+quint32 CntTransformAvatar::getIdForField(const QString& /*fieldName*/) const
 {
-   if (QContactAvatar::FieldAvatar  == fieldName)
-        return 0;
-    else if (QContactAvatar::SubTypeImage == fieldName)
-        return 0;
-    else if (QContactAvatar::SubTypeVideo == fieldName)
-        return 0;
-    else if (QContactAvatar::SubTypeTexturedMesh == fieldName)
-        return 0;
-    else if (QContactAvatar::SubTypeAudioRingtone == fieldName)
-        return 0;
-    else if (QContactAvatar::SubTypeVideoRingtone == fieldName)
-        return 0;
-    else
-        return 0;
+    // XXX todo
+    return 0;
 }
 
 /*!
@@ -190,15 +160,8 @@
         QContactDetailDefinition d = definitions.value(QContactAvatar::DefinitionName);
         QMap<QString, QContactDetailFieldDefinition> fields = d.fields();
 
-        // Update sub-types
-        QContactDetailFieldDefinition f;
-        f.setDataType(QVariant::String); // only allowed to be a single subtype
-        f.setAllowableValues(QVariantList()
-                << QString(QLatin1String(QContactAvatar::SubTypeImage))
-                << QString(QLatin1String(QContactAvatar::SubTypeAudioRingtone))
-                << QString(QLatin1String(QContactAvatar::SubTypeVideoRingtone)));
-        fields.insert(QContactAvatar::FieldSubType, f);
-
+        // We only support imageUrl
+        fields.remove(QContactAvatar::FieldVideoUrl);
         // Context not supported in symbian back-end, remove
         fields.remove(QContactAvatar::FieldContext);