qtcontactsmobility/plugins/contacts/symbian/src/cntsymbianengine.cpp
changeset 46 efe85016a067
parent 40 b46a585f6909
equal deleted inserted replaced
40:b46a585f6909 46:efe85016a067
    48 
    48 
    49 #include <pathinfo.h>
    49 #include <pathinfo.h>
    50 #include <driveinfo.h>
    50 #include <driveinfo.h>
    51 
    51 
    52 #include <qtcontacts.h>
    52 #include <qtcontacts.h>
    53 #include <qcontactname.h>
       
    54 
    53 
    55 #include "cntsymbianengine.h"
    54 #include "cntsymbianengine.h"
    56 #include "qcontactchangeset.h"
    55 #include "qcontactchangeset.h"
    57 #include "cntsymbiandatabase.h"
    56 #include "cntsymbiandatabase.h"
    58 #include "cnttransformcontact.h"
    57 #include "cnttransformcontact.h"
   109         m_contactFilter    = new CntSymbianFilter(*m_dataBase->contactDatabase());
   108         m_contactFilter    = new CntSymbianFilter(*m_dataBase->contactDatabase());
   110         m_contactSorter    = new CntSymbianSorterDbms(*m_dataBase->contactDatabase(), *m_transformContact);
   109         m_contactSorter    = new CntSymbianSorterDbms(*m_dataBase->contactDatabase(), *m_transformContact);
   111 #endif
   110 #endif
   112         m_relationship     = new CntRelationship(m_dataBase->contactDatabase(), m_managerUri);
   111         m_relationship     = new CntRelationship(m_dataBase->contactDatabase(), m_managerUri);
   113         m_displayLabel     = new CntDisplayLabel();
   112         m_displayLabel     = new CntDisplayLabel();
       
   113 #ifdef SYMBIAN_BACKEND_USE_SQLITE
       
   114         connect(m_displayLabel, SIGNAL(displayLabelChanged()), this, SIGNAL(dataChanged()));
       
   115 #endif
   114     }
   116     }
   115 }
   117 }
   116 
   118 
   117 CntSymbianEngine::~CntSymbianEngine()
   119 CntSymbianEngine::~CntSymbianEngine()
   118 {
   120 {
   146 #ifdef SYMBIAN_BACKEND_USE_SQLITE
   148 #ifdef SYMBIAN_BACKEND_USE_SQLITE
   147     
   149     
   148         // Remove possible false positives
   150         // Remove possible false positives
   149         if(!filterSupported && *error == QContactManager::NotSupportedError)
   151         if(!filterSupported && *error == QContactManager::NotSupportedError)
   150             {
   152             {
       
   153             //fetch all contacts
       
   154             *error = QContactManager::NoError;
       
   155             result = m_contactFilter->contacts(QContactFilter(),sortOrders, filterSupported, error);
       
   156             
       
   157             //slow filtering
   151             result = slowFilter(filter, result, error);
   158             result = slowFilter(filter, result, error);
   152             
   159             
   153             //slow sorting until it's supported in SQL requests
   160             //slow sorting until it's supported in SQL requests
   154             result = slowSort(result, sortOrders, error);
   161             result = slowSort(result, sortOrders, error);
   155             }
   162             }
   166             } else {
   173             } else {
   167                 result = slowSort(result, sortOrders, error);
   174                 result = slowSort(result, sortOrders, error);
   168             }
   175             }
   169         }
   176         }
   170 #endif
   177 #endif
   171 
   178     
   172     return result;
   179     return result;
   173 }
   180 }
   174 
   181 
   175 QList<QContact> CntSymbianEngine::contacts(const QContactFilter& filter, const QList<QContactSortOrder>& sortOrders, const QContactFetchHint& fh, QContactManager::Error* error) const
   182 QList<QContact> CntSymbianEngine::contacts(const QContactFilter& filter, const QList<QContactSortOrder>& sortOrders, const QContactFetchHint& fh, QContactManager::Error* error) const
   176 {
   183 {
   239                 *error = relationshipError;
   246                 *error = relationshipError;
   240             }
   247             }
   241             QContactManagerEngine::setContactRelationships(contact, relationships);
   248             QContactManagerEngine::setContactRelationships(contact, relationships);
   242         }
   249         }
   243     }
   250     }
       
   251     
   244     return *QScopedPointer<QContact>(contact);
   252     return *QScopedPointer<QContact>(contact);
   245 }
   253 }
   246 
   254 
   247 bool CntSymbianEngine::saveContact(QContact* contact, QContactManager::Error* error)
   255 bool CntSymbianEngine::saveContact(QContact* contact, QContactManager::Error* error)
   248 {
   256 {
   249     QContactChangeSet changeSet;
   257     QContactChangeSet changeSet;
   250     TBool ret = doSaveContact(contact, changeSet, error);
   258     bool ret = doSaveContact(contact, changeSet, error);
   251     changeSet.emitSignals(this);
   259     changeSet.emitSignals(this);
   252     return ret;
   260     return ret;
   253 }
   261 }
   254 
   262 
   255 /*! \reimp */
   263 /*! \reimp */
   863     if (contactId <= 0) {
   871     if (contactId <= 0) {
   864         *error = QContactManager::BadArgumentError;
   872         *error = QContactManager::BadArgumentError;
   865         return false;
   873         return false;
   866     }
   874     }
   867 
   875 
       
   876     QContactManager::Error e;
       
   877     QContactLocalId selfCntId = selfContactId( &e ); // err ignored
       
   878    
       
   879     QContactChangeSet changeSet;
       
   880     QOwnCardPair ownCard(selfCntId, contactId);
       
   881     
   868     TContactItemId id(contactId);
   882     TContactItemId id(contactId);
   869     CContactItem* symContact = 0;
   883     CContactItem* symContact = 0;
   870     TRAPD(err,
   884     TRAPD(err,
   871         symContact = m_dataBase->contactDatabase()->ReadContactL(id);
   885         symContact = m_dataBase->contactDatabase()->ReadContactL(id);
   872         m_dataBase->contactDatabase()->SetOwnCardL(*symContact);
   886         m_dataBase->contactDatabase()->SetOwnCardL(*symContact);
   873         );
   887         );
   874     delete symContact;
   888     delete symContact;
       
   889     
       
   890     if(err == KErrNone)
       
   891        {
       
   892        m_dataBase->appendContactEmitted(id);
       
   893        
       
   894        changeSet.setOldAndNewSelfContactId(ownCard);
       
   895        changeSet.emitSignals( this );
       
   896        }
       
   897     
   875     CntSymbianTransformError::transformError(err, error);
   898     CntSymbianTransformError::transformError(err, error);
   876     return (err==KErrNone);
   899     return (err==KErrNone);
   877 }
   900 }
   878 
   901 
   879 QContactLocalId CntSymbianEngine::selfContactId(QContactManager::Error* error) const
   902 QContactLocalId CntSymbianEngine::selfContactId(QContactManager::Error* error) const