--- 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);