qtcontactsmobility/plugins/contacts/symbian/src/cntsymbianengine.cpp
changeset 46 efe85016a067
parent 40 b46a585f6909
--- a/qtcontactsmobility/plugins/contacts/symbian/src/cntsymbianengine.cpp	Fri Jun 11 13:29:23 2010 +0300
+++ b/qtcontactsmobility/plugins/contacts/symbian/src/cntsymbianengine.cpp	Wed Jun 23 18:02:44 2010 +0300
@@ -50,7 +50,6 @@
 #include <driveinfo.h>
 
 #include <qtcontacts.h>
-#include <qcontactname.h>
 
 #include "cntsymbianengine.h"
 #include "qcontactchangeset.h"
@@ -111,6 +110,9 @@
 #endif
         m_relationship     = new CntRelationship(m_dataBase->contactDatabase(), m_managerUri);
         m_displayLabel     = new CntDisplayLabel();
+#ifdef SYMBIAN_BACKEND_USE_SQLITE
+        connect(m_displayLabel, SIGNAL(displayLabelChanged()), this, SIGNAL(dataChanged()));
+#endif
     }
 }
 
@@ -148,6 +150,11 @@
         // Remove possible false positives
         if(!filterSupported && *error == QContactManager::NotSupportedError)
             {
+            //fetch all contacts
+            *error = QContactManager::NoError;
+            result = m_contactFilter->contacts(QContactFilter(),sortOrders, filterSupported, error);
+            
+            //slow filtering
             result = slowFilter(filter, result, error);
             
             //slow sorting until it's supported in SQL requests
@@ -168,7 +175,7 @@
             }
         }
 #endif
-
+    
     return result;
 }
 
@@ -241,13 +248,14 @@
             QContactManagerEngine::setContactRelationships(contact, relationships);
         }
     }
+    
     return *QScopedPointer<QContact>(contact);
 }
 
 bool CntSymbianEngine::saveContact(QContact* contact, QContactManager::Error* error)
 {
     QContactChangeSet changeSet;
-    TBool ret = doSaveContact(contact, changeSet, error);
+    bool ret = doSaveContact(contact, changeSet, error);
     changeSet.emitSignals(this);
     return ret;
 }
@@ -865,6 +873,12 @@
         return false;
     }
 
+    QContactManager::Error e;
+    QContactLocalId selfCntId = selfContactId( &e ); // err ignored
+   
+    QContactChangeSet changeSet;
+    QOwnCardPair ownCard(selfCntId, contactId);
+    
     TContactItemId id(contactId);
     CContactItem* symContact = 0;
     TRAPD(err,
@@ -872,6 +886,15 @@
         m_dataBase->contactDatabase()->SetOwnCardL(*symContact);
         );
     delete symContact;
+    
+    if(err == KErrNone)
+       {
+       m_dataBase->appendContactEmitted(id);
+       
+       changeSet.setOldAndNewSelfContactId(ownCard);
+       changeSet.emitSignals( this );
+       }
+    
     CntSymbianTransformError::transformError(err, error);
     return (err==KErrNone);
 }