qtmobility/plugins/contacts/symbian/src/transform/cnttransformcontact.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 5 453da2cfceef
equal deleted inserted replaced
1:2b40d63a9c3d 4:90517678cc4f
    49 #include "cnttransformaddress.h"
    49 #include "cnttransformaddress.h"
    50 #include "cnttransformbirthday.h"
    50 #include "cnttransformbirthday.h"
    51 #include "cnttransformonlineaccount.h"
    51 #include "cnttransformonlineaccount.h"
    52 #include "cnttransformorganisation.h"
    52 #include "cnttransformorganisation.h"
    53 #include "cnttransformavatar.h"
    53 #include "cnttransformavatar.h"
    54 #include "cnttransformavatarsimple.h"
    54 #include "cnttransformringtone.h"
       
    55 #include "cnttransformthumbnail.h"
    55 #include "cnttransformsynctarget.h"
    56 #include "cnttransformsynctarget.h"
    56 #include "cnttransformgender.h"
    57 #include "cnttransformgender.h"
    57 #include "cnttransformanniversary.h"
    58 #include "cnttransformanniversary.h"
    58 #include "cnttransformanniversarysimple.h"
    59 #include "cnttransformanniversarysimple.h"
    59 #include "cnttransformgeolocation.h"
    60 #include "cnttransformgeolocation.h"
   106 	m_transformContactData.insert(Birthday, new CntTransformBirthday);
   107 	m_transformContactData.insert(Birthday, new CntTransformBirthday);
   107 	m_transformContactData.insert(Organisation, new CntTransformOrganisation);
   108 	m_transformContactData.insert(Organisation, new CntTransformOrganisation);
   108 	m_transformContactData.insert(SyncTarget, new CntTransformSyncTarget);
   109 	m_transformContactData.insert(SyncTarget, new CntTransformSyncTarget);
   109 	m_transformContactData.insert(Note, new CntTransformNote);
   110 	m_transformContactData.insert(Note, new CntTransformNote);
   110 	m_transformContactData.insert(Family, new CntTransformFamily);
   111 	m_transformContactData.insert(Family, new CntTransformFamily);
       
   112     m_transformContactData.insert(Ringtone, new CntTransformRingtone);
       
   113     m_transformContactData.insert(Avatar, new CntTransformAvatar);
   111 
   114 
   112 #ifdef SYMBIAN_BACKEND_USE_SQLITE
   115 #ifdef SYMBIAN_BACKEND_USE_SQLITE
   113 	// variated transform classes
   116 	// variated transform classes
   114     m_transformContactData.insert(Avatar, new CntTransformAvatar);
       
   115     m_transformContactData.insert(Anniversary, new CntTransformAnniversary);
   117     m_transformContactData.insert(Anniversary, new CntTransformAnniversary);
   116 
   118 
   117     // not supported on pre-10.1
   119     // not supported on pre-10.1
   118 	m_transformContactData.insert(Geolocation, new CntTransformGeolocation);
   120 	m_transformContactData.insert(Geolocation, new CntTransformGeolocation);
   119     m_transformContactData.insert(Gender, new CntTransformGender);
   121     m_transformContactData.insert(Gender, new CntTransformGender);
   126 
   128 
   127 #else
   129 #else
   128     // Empty transform class for removing unsupported detail definitions
   130     // Empty transform class for removing unsupported detail definitions
   129     m_transformContactData.insert(Empty, new CntTransformEmpty);
   131     m_transformContactData.insert(Empty, new CntTransformEmpty);
   130 
   132 
       
   133     m_transformContactData.insert(Thumbnail, new CntTransformThumbnail);
       
   134 
   131     // variated transform classes
   135     // variated transform classes
   132     m_transformContactData.insert(Anniversary, new CntTransformAnniversarySimple);
   136     m_transformContactData.insert(Anniversary, new CntTransformAnniversarySimple);
   133     m_transformContactData.insert(Avatar, new CntTransformAvatarSimple);
       
   134 #endif
   137 #endif
   135 }
   138 }
   136 
   139 
   137 /*!
   140 /*!
   138  * Converts Symbian contact item to QContact. Note that the contact is not
   141  * Converts Symbian contact item to QContact. Note that the contact is not
   327     }
   330     }
   328 
   331 
   329 void CntTransformContact::detailDefinitions(
   332 void CntTransformContact::detailDefinitions(
   330         QMap<QString, QContactDetailDefinition>& defaultSchema,
   333         QMap<QString, QContactDetailDefinition>& defaultSchema,
   331         const QString& contactType,
   334         const QString& contactType,
   332         QContactManager::Error& error) const
   335         QContactManager::Error* error) const
   333 {
   336 {
   334     Q_UNUSED(error);
   337     Q_UNUSED(error);
   335 
   338 
   336     // Ask leaf classes to do the modifications required to the default schema
   339     // Ask leaf classes to do the modifications required to the default schema
   337     QMap<ContactData, CntTransformContactData*>::const_iterator i = m_transformContactData.constBegin();
   340     QMap<ContactData, CntTransformContactData*>::const_iterator i = m_transformContactData.constBegin();
   338     while (i != m_transformContactData.constEnd()) {
   341     while (i != m_transformContactData.constEnd()) {
   339         i.value()->detailDefinitions(defaultSchema, contactType);
   342         i.value()->detailDefinitions(defaultSchema, contactType);
   340         i++;
   343         i++;
   341     }
   344     }
       
   345     
       
   346 #ifndef SYMBIAN_CNTMODEL_V2
       
   347     // Cannot support timestamp
       
   348     defaultSchema.remove(QContactTimestamp::DefinitionName);
       
   349 #endif
   342 }
   350 }
   343 
   351 
   344 QList<CContactItemField *> CntTransformContact::transformDetailL(const QContactDetail &detail) const
   352 QList<CContactItemField *> CntTransformContact::transformDetailL(const QContactDetail &detail) const
   345 {
   353 {
   346 	QList<CContactItemField *> itemFieldList;
   354 	QList<CContactItemField *> itemFieldList;
   390     return guidDetail;
   398     return guidDetail;
   391 }
   399 }
   392 
   400 
   393 QContactDetail* CntTransformContact::transformTimestampItemFieldL(const CContactItem &contactItem, const CContactDatabase &contactDatabase) const
   401 QContactDetail* CntTransformContact::transformTimestampItemFieldL(const CContactItem &contactItem, const CContactDatabase &contactDatabase) const
   394 {
   402 {
       
   403 #ifdef SYMBIAN_CNTMODEL_V2
   395     QContactTimestamp *timestampDetail = 0;
   404     QContactTimestamp *timestampDetail = 0;
   396 
       
   397     // NOTE: In S60 3.1 we cannot use ContactGuid::GetCreationDate() because
       
   398     // it is not exported.
       
   399     // TODO: Make sure SYMBIAN_CNTMODEL_V2 is the right flag for this.
       
   400 #ifdef SYMBIAN_CNTMODEL_V2
       
   401     HBufC* guidBuf = contactItem.UidStringL(contactDatabase.MachineId()).AllocLC();
   405     HBufC* guidBuf = contactItem.UidStringL(contactDatabase.MachineId()).AllocLC();
   402     TPtr ptr = guidBuf->Des();
   406     TPtr ptr = guidBuf->Des();
   403     if (ContactGuid::GetCreationDate(ptr, contactDatabase.MachineId()))
   407     if (ContactGuid::GetCreationDate(ptr, contactDatabase.MachineId()))
   404     {
   408     {
   405         if (ptr.Length() > 0)
   409         if (ptr.Length() > 0)
   427                 timestampDetail->setLastModified(qDateTimeModified);
   431                 timestampDetail->setLastModified(qDateTimeModified);
   428             }
   432             }
   429         }
   433         }
   430     }
   434     }
   431     CleanupStack::PopAndDestroy(guidBuf);
   435     CleanupStack::PopAndDestroy(guidBuf);
       
   436     return timestampDetail;
       
   437 #else
       
   438     // NOTE: In S60 3.1 we cannot use ContactGuid::GetCreationDate() because
       
   439     // it is not exported.
       
   440     // TODO: Make sure SYMBIAN_CNTMODEL_V2 is the right flag for this.
       
   441     Q_UNUSED(contactItem);
       
   442     Q_UNUSED(contactDatabase)
       
   443     return 0;
   432 #endif
   444 #endif
   433     return timestampDetail;
       
   434 }
   445 }
   435 
   446 
   436 void CntTransformContact::transformPreferredDetailL(const QContact& contact,
   447 void CntTransformContact::transformPreferredDetailL(const QContact& contact,
   437         const QContactDetail& detail, QList<CContactItemField*> &fieldList) const
   448         const QContactDetail& detail, QList<CContactItemField*> &fieldList) const
   438 {
   449 {