qtmobility/plugins/contacts/symbian/src/cntsymbiandatabase.cpp
changeset 8 71781823f776
parent 4 90517678cc4f
child 11 06b8e2af4411
--- a/qtmobility/plugins/contacts/symbian/src/cntsymbiandatabase.cpp	Fri May 14 16:41:33 2010 +0300
+++ b/qtmobility/plugins/contacts/symbian/src/cntsymbiandatabase.cpp	Thu May 27 13:42:11 2010 +0300
@@ -148,8 +148,18 @@
             changeSet.insertAddedContact(id);
         break;
     case EContactDbObserverEventOwnCardDeleted:
+        if (m_contactsEmitted.contains(id)) {
+            m_contactsEmitted.removeOne(id);
+        } else {
+            // signal selfContactIdChanged (from id to zero)
+            QOwnCardPair ownCard(m_currentOwnCardId, QContactLocalId(0));
+            changeSet.setOldAndNewSelfContactId(ownCard);
+            // signal contactsRemoved (the self contact was deleted)
+            changeSet.insertRemovedContact(id);
+        }
+        // reset own card id
         m_currentOwnCardId = QContactLocalId(0);
-        // ...and send contact deleted event
+        break;
     case EContactDbObserverEventContactDeleted:
         if(m_contactsEmitted.contains(id))
             m_contactsEmitted.removeOne(id);
@@ -218,9 +228,9 @@
         }
         break;
     case EContactDbObserverEventOwnCardChanged:
-        if(m_contactsEmitted.contains(id))
+        if (m_contactsEmitted.contains(id)) {
             m_contactsEmitted.removeOne(id);
-        else {
+        } else {
             QOwnCardPair ownCard(m_currentOwnCardId, QContactLocalId(id));
             changeSet.setOldAndNewSelfContactId(ownCard);
             m_currentOwnCardId = QContactLocalId(id);