70 #include <cntitem.h> |
70 #include <cntitem.h> |
71 #include <cntdef.hrh> // explicitly included because of KUidContactFieldGEOValue |
71 #include <cntdef.hrh> // explicitly included because of KUidContactFieldGEOValue |
72 |
72 |
73 #include <QDebug> |
73 #include <QDebug> |
74 |
74 |
75 CntTransformContact::CntTransformContact() |
75 CntTransformContact::CntTransformContact() : |
|
76 m_tzConverter(0) |
76 { |
77 { |
77 initializeCntTransformContactData(); |
78 initializeCntTransformContactData(); |
78 } |
79 } |
79 |
80 |
80 CntTransformContact::~CntTransformContact() |
81 CntTransformContact::~CntTransformContact() |
81 { |
82 { |
|
83 delete m_tzConverter; |
|
84 m_tzoneServer.Close(); |
|
85 |
82 QMap<ContactData, CntTransformContactData*>::iterator itr; |
86 QMap<ContactData, CntTransformContactData*>::iterator itr; |
83 |
87 |
84 for (itr = m_transformContactData.begin(); itr != m_transformContactData.end(); ++itr) |
88 for (itr = m_transformContactData.begin(); itr != m_transformContactData.end(); ++itr) |
85 { |
89 { |
86 CntTransformContactData* value = itr.value(); |
90 CntTransformContactData* value = itr.value(); |
185 */ |
189 */ |
186 void CntTransformContact::transformPostSaveDetailsL( |
190 void CntTransformContact::transformPostSaveDetailsL( |
187 const CContactItem& contactItem, |
191 const CContactItem& contactItem, |
188 QContact& contact, |
192 QContact& contact, |
189 const CContactDatabase &contactDatabase, |
193 const CContactDatabase &contactDatabase, |
190 QString managerUri) const |
194 QString managerUri) |
191 { |
195 { |
192 // Id |
196 // Id |
193 QContactId contactId; |
197 QContactId contactId; |
194 contactId.setLocalId(contactItem.Id()); |
198 contactId.setLocalId(contactItem.Id()); |
195 contactId.setManagerUri(managerUri); |
199 contactId.setManagerUri(managerUri); |
386 guidDetail->setGuid(guid); |
390 guidDetail->setGuid(guid); |
387 } |
391 } |
388 return guidDetail; |
392 return guidDetail; |
389 } |
393 } |
390 |
394 |
391 QContactDetail* CntTransformContact::transformTimestampItemFieldL(const CContactItem &contactItem, const CContactDatabase &contactDatabase) const |
395 QContactDetail* CntTransformContact::transformTimestampItemFieldL(const CContactItem &contactItem, const CContactDatabase &contactDatabase) |
392 { |
396 { |
393 #ifdef SYMBIAN_CNTMODEL_V2 |
397 #ifdef SYMBIAN_CNTMODEL_V2 |
|
398 |
|
399 // Time zone conversion is needed because contact model uses GMT time stamps |
|
400 if (!m_tzConverter) { |
|
401 User::LeaveIfError(m_tzoneServer.Connect()); |
|
402 m_tzConverter = CTzConverter::NewL(m_tzoneServer); |
|
403 } |
|
404 |
394 QContactTimestamp *timestampDetail = 0; |
405 QContactTimestamp *timestampDetail = 0; |
395 HBufC* guidBuf = contactItem.UidStringL(contactDatabase.MachineId()).AllocLC(); |
406 HBufC* guidBuf = contactItem.UidStringL(contactDatabase.MachineId()).AllocLC(); |
396 TPtr ptr = guidBuf->Des(); |
407 TPtr ptr = guidBuf->Des(); |
397 if (ContactGuid::GetCreationDate(ptr, contactDatabase.MachineId())) |
408 if (ContactGuid::GetCreationDate(ptr, contactDatabase.MachineId())) |
398 { |
409 { |
401 TLex lex(ptr); |
412 TLex lex(ptr); |
402 TInt64 timeValue; |
413 TInt64 timeValue; |
403 if (lex.Val(timeValue, EHex) == 0) |
414 if (lex.Val(timeValue, EHex) == 0) |
404 { |
415 { |
405 timestampDetail = new QContactTimestamp(); |
416 timestampDetail = new QContactTimestamp(); |
406 |
417 const TInt formattedDateLength(14); |
407 //creation date |
418 _LIT(KDateFormat, "%F%Y%M%D%H%T%S"); |
|
419 QString DateFormatQt = QString("yyyyMMddHHmmss"); |
|
420 |
|
421 // creation date |
408 TTime timeCreation(timeValue); |
422 TTime timeCreation(timeValue); |
409 TDateTime dateCreation = timeCreation.DateTime(); |
423 User::LeaveIfError(m_tzConverter->ConvertToLocalTime(timeCreation)); |
410 QDate qDateCreation(dateCreation.Year(), dateCreation.Month() + 1, dateCreation.Day() + 1); |
424 TBuf<formattedDateLength> createdBuf; |
411 QTime qTimeCreation(dateCreation.Hour(), dateCreation.Minute(), dateCreation.Second(), dateCreation.MicroSecond()/1000); |
425 timeCreation.FormatL(createdBuf, KDateFormat); |
412 QDateTime qDateTimeCreation(qDateCreation, qTimeCreation); |
426 QString createdString = QString::fromUtf16(createdBuf.Ptr(), createdBuf.Length()); |
413 timestampDetail->setCreated(qDateTimeCreation); |
427 timestampDetail->setCreated(QDateTime::fromString(createdString, DateFormatQt)); |
414 |
428 |
415 //last modified date |
429 // last modified date |
416 TTime timeModified = contactItem.LastModified(); |
430 TTime timeModified = contactItem.LastModified(); |
417 TDateTime dateModified = timeModified.DateTime(); |
431 User::LeaveIfError(m_tzConverter->ConvertToLocalTime(timeModified)); |
418 QDate qDateModified(dateModified.Year(), dateModified.Month() + 1, dateModified.Day() + 1); |
432 TBuf<formattedDateLength> modifiedBuf; |
419 QTime qTimeModified(dateModified.Hour(), dateModified.Minute(), dateModified.Second(), dateModified.MicroSecond()/1000); |
433 timeModified.FormatL(modifiedBuf, KDateFormat); |
420 QDateTime qDateTimeModified(qDateModified, qTimeModified); |
434 QString modifiedString = QString::fromUtf16(modifiedBuf.Ptr(), modifiedBuf.Length()); |
421 timestampDetail->setLastModified(qDateTimeModified); |
435 timestampDetail->setLastModified(QDateTime::fromString(modifiedString, DateFormatQt)); |
422 } |
436 } |
423 } |
437 } |
424 } |
438 } |
425 CleanupStack::PopAndDestroy(guidBuf); |
439 CleanupStack::PopAndDestroy(guidBuf); |
426 return timestampDetail; |
440 return timestampDetail; |