qtmobility/plugins/contacts/symbian/src/transform/cnttransformcontact.cpp
changeset 8 71781823f776
parent 5 453da2cfceef
child 11 06b8e2af4411
equal deleted inserted replaced
5:453da2cfceef 8:71781823f776
    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;