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; |