qtcontactsmobility/plugins/contacts/symbian/src/transform/cnttransformanniversary.cpp
changeset 37 fd64c38c277d
parent 25 76a2435edfd4
--- a/qtcontactsmobility/plugins/contacts/symbian/src/transform/cnttransformanniversary.cpp	Fri May 14 15:42:23 2010 +0300
+++ b/qtcontactsmobility/plugins/contacts/symbian/src/transform/cnttransformanniversary.cpp	Thu May 27 12:45:19 2010 +0300
@@ -39,8 +39,7 @@
 **
 ****************************************************************************/
 #include "cnttransformanniversary.h"
-
-const char separator = ',';
+#include "cntmodelextuids.h"
 
 QList<CContactItemField *> CntTransformAnniversary::transformDetailL(const QContactDetail &detail)
 {
@@ -52,55 +51,38 @@
 	//cast to anniversary
 	const QContactAnniversary &anniversary(static_cast<const QContactAnniversary&>(detail));
 
-	//create new field
-	QString formattedAnniversary;
-	if (anniversary.originalDate().isValid()) {
-        formattedAnniversary = anniversary.originalDate().toString(Qt::ISODate);
-	}
-	if (formattedAnniversary.length() > 0) {
-        formattedAnniversary.append(separator);
-	}
-	formattedAnniversary.append(anniversary.event());
+    //date field
+	TDateTime dateTime(anniversary.originalDate().year(),
+	    TMonth(anniversary.originalDate().month() - 1),
+	    anniversary.originalDate().day() - 1, 0, 0, 0, 0);
+    CContactItemField* dateField = CContactItemField::NewLC(KStorageTypeDateTime, KUidContactFieldAnniversary);
+    dateField->DateTimeStorage()->SetTime(dateTime);
+    dateField->SetMapping(KUidContactFieldVCardMapAnniversary);
+    fieldList.append(dateField);
+    CleanupStack::Pop(dateField);
 
-	TPtrC fieldText(reinterpret_cast<const TUint16*>(formattedAnniversary.utf16()));
-	CContactItemField* newField = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldAnniversary);
- 	newField->TextStorage()->SetTextL(fieldText);
-	newField->SetMapping(KUidContactFieldVCardMapAnniversary);
-
-	fieldList.append(newField);
-	CleanupStack::Pop(newField);
-
+    //event field
+    transformToTextFieldL(anniversary, fieldList, anniversary.event(), KUidContactFieldAnniversaryEvent, KUidContactFieldVCardMapUnknown, false);
+    
 	return fieldList;
 }
 
 QContactDetail *CntTransformAnniversary::transformItemField(const CContactItemField& field, const QContact &contact)
 {
-	Q_UNUSED(contact);
-
-	QContactAnniversary *anniversary = new QContactAnniversary();
+    QContactAnniversary *anniversaryDetail = new QContactAnniversary(contact.detail<QContactAnniversary>());
+    if (field.StorageType() == KStorageTypeDateTime) {
+        CContactDateField* date = field.DateTimeStorage();
+        TTime time(date->Time());
+        QDate qDate(time.DateTime().Year(), time.DateTime().Month() + 1, time.DateTime().Day() + 1);
+        anniversaryDetail->setOriginalDate(qDate);
+    }
+    else if (field.StorageType() == KStorageTypeText) {
+        CContactTextField* event = field.TextStorage();
+        QString eventString = QString::fromUtf16(event->Text().Ptr(), event->Text().Length());
+        anniversaryDetail->setEvent(eventString);
+    }
 
-	CContactTextField* storage = field.TextStorage();
-	QString unformattedAnniversary = QString::fromUtf16(storage->Text().Ptr(), storage->Text().Length());
-	int separatorPos = unformattedAnniversary.indexOf(separator);
-	bool dateFound = false;
-	if (separatorPos != -1) {
-        // date is probably included
-        QDate date = QDate::fromString(unformattedAnniversary.left(separatorPos), Qt::ISODate);
-        if (date.isValid()) {
-            anniversary->setOriginalDate(date);
-            dateFound = true;
-        }
-	}
-
-	if (dateFound) {
-        if (unformattedAnniversary.length()-separatorPos-1 > 0) {
-            anniversary->setEvent(unformattedAnniversary.right(unformattedAnniversary.length()-separatorPos-1));
-        }
-	}
-	else {
-        anniversary->setEvent(unformattedAnniversary);
-	}
-	return anniversary;
+	return anniversaryDetail;
 }
 
 bool CntTransformAnniversary::supportsField(TUint32 fieldType) const