qtcontactsmobility/plugins/contacts/symbian/src/transform/cnttransformanniversary.cpp
changeset 37 fd64c38c277d
parent 25 76a2435edfd4
equal deleted inserted replaced
31:2a11b5b00470 37:fd64c38c277d
    37 **
    37 **
    38 ** $QT_END_LICENSE$
    38 ** $QT_END_LICENSE$
    39 **
    39 **
    40 ****************************************************************************/
    40 ****************************************************************************/
    41 #include "cnttransformanniversary.h"
    41 #include "cnttransformanniversary.h"
    42 
    42 #include "cntmodelextuids.h"
    43 const char separator = ',';
       
    44 
    43 
    45 QList<CContactItemField *> CntTransformAnniversary::transformDetailL(const QContactDetail &detail)
    44 QList<CContactItemField *> CntTransformAnniversary::transformDetailL(const QContactDetail &detail)
    46 {
    45 {
    47     if(detail.definitionName() != QContactAnniversary::DefinitionName)
    46     if(detail.definitionName() != QContactAnniversary::DefinitionName)
    48        User::Leave(KErrArgument);
    47        User::Leave(KErrArgument);
    50     QList<CContactItemField *> fieldList;
    49     QList<CContactItemField *> fieldList;
    51 
    50 
    52 	//cast to anniversary
    51 	//cast to anniversary
    53 	const QContactAnniversary &anniversary(static_cast<const QContactAnniversary&>(detail));
    52 	const QContactAnniversary &anniversary(static_cast<const QContactAnniversary&>(detail));
    54 
    53 
    55 	//create new field
    54     //date field
    56 	QString formattedAnniversary;
    55 	TDateTime dateTime(anniversary.originalDate().year(),
    57 	if (anniversary.originalDate().isValid()) {
    56 	    TMonth(anniversary.originalDate().month() - 1),
    58         formattedAnniversary = anniversary.originalDate().toString(Qt::ISODate);
    57 	    anniversary.originalDate().day() - 1, 0, 0, 0, 0);
    59 	}
    58     CContactItemField* dateField = CContactItemField::NewLC(KStorageTypeDateTime, KUidContactFieldAnniversary);
    60 	if (formattedAnniversary.length() > 0) {
    59     dateField->DateTimeStorage()->SetTime(dateTime);
    61         formattedAnniversary.append(separator);
    60     dateField->SetMapping(KUidContactFieldVCardMapAnniversary);
    62 	}
    61     fieldList.append(dateField);
    63 	formattedAnniversary.append(anniversary.event());
    62     CleanupStack::Pop(dateField);
    64 
    63 
    65 	TPtrC fieldText(reinterpret_cast<const TUint16*>(formattedAnniversary.utf16()));
    64     //event field
    66 	CContactItemField* newField = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldAnniversary);
    65     transformToTextFieldL(anniversary, fieldList, anniversary.event(), KUidContactFieldAnniversaryEvent, KUidContactFieldVCardMapUnknown, false);
    67  	newField->TextStorage()->SetTextL(fieldText);
    66     
    68 	newField->SetMapping(KUidContactFieldVCardMapAnniversary);
       
    69 
       
    70 	fieldList.append(newField);
       
    71 	CleanupStack::Pop(newField);
       
    72 
       
    73 	return fieldList;
    67 	return fieldList;
    74 }
    68 }
    75 
    69 
    76 QContactDetail *CntTransformAnniversary::transformItemField(const CContactItemField& field, const QContact &contact)
    70 QContactDetail *CntTransformAnniversary::transformItemField(const CContactItemField& field, const QContact &contact)
    77 {
    71 {
    78 	Q_UNUSED(contact);
    72     QContactAnniversary *anniversaryDetail = new QContactAnniversary(contact.detail<QContactAnniversary>());
       
    73     if (field.StorageType() == KStorageTypeDateTime) {
       
    74         CContactDateField* date = field.DateTimeStorage();
       
    75         TTime time(date->Time());
       
    76         QDate qDate(time.DateTime().Year(), time.DateTime().Month() + 1, time.DateTime().Day() + 1);
       
    77         anniversaryDetail->setOriginalDate(qDate);
       
    78     }
       
    79     else if (field.StorageType() == KStorageTypeText) {
       
    80         CContactTextField* event = field.TextStorage();
       
    81         QString eventString = QString::fromUtf16(event->Text().Ptr(), event->Text().Length());
       
    82         anniversaryDetail->setEvent(eventString);
       
    83     }
    79 
    84 
    80 	QContactAnniversary *anniversary = new QContactAnniversary();
    85 	return anniversaryDetail;
    81 
       
    82 	CContactTextField* storage = field.TextStorage();
       
    83 	QString unformattedAnniversary = QString::fromUtf16(storage->Text().Ptr(), storage->Text().Length());
       
    84 	int separatorPos = unformattedAnniversary.indexOf(separator);
       
    85 	bool dateFound = false;
       
    86 	if (separatorPos != -1) {
       
    87         // date is probably included
       
    88         QDate date = QDate::fromString(unformattedAnniversary.left(separatorPos), Qt::ISODate);
       
    89         if (date.isValid()) {
       
    90             anniversary->setOriginalDate(date);
       
    91             dateFound = true;
       
    92         }
       
    93 	}
       
    94 
       
    95 	if (dateFound) {
       
    96         if (unformattedAnniversary.length()-separatorPos-1 > 0) {
       
    97             anniversary->setEvent(unformattedAnniversary.right(unformattedAnniversary.length()-separatorPos-1));
       
    98         }
       
    99 	}
       
   100 	else {
       
   101         anniversary->setEvent(unformattedAnniversary);
       
   102 	}
       
   103 	return anniversary;
       
   104 }
    86 }
   105 
    87 
   106 bool CntTransformAnniversary::supportsField(TUint32 fieldType) const
    88 bool CntTransformAnniversary::supportsField(TUint32 fieldType) const
   107 {
    89 {
   108     bool ret = false;
    90     bool ret = false;