aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppRosterManager.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2011-04-29 08:23:59 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2011-04-29 08:23:59 +0000
commit94cf9be3c80a80a098c7d9eca931af5e533f3c69 (patch)
treeb9326654cff4589d4df8f654fa02b2d37c93c93c /src/QXmppRosterManager.cpp
parentbe96e7c461ca6af5fbb49a9556ad534a9b4d0c54 (diff)
downloadqxmpp-94cf9be3c80a80a098c7d9eca931af5e533f3c69.tar.gz
make QXmppRosterManager emit itemRemoved(jid) when an item is removed (thanks Georg, fixes: #94)
Diffstat (limited to 'src/QXmppRosterManager.cpp')
-rw-r--r--src/QXmppRosterManager.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/QXmppRosterManager.cpp b/src/QXmppRosterManager.cpp
index 07cffef6..fd948e99 100644
--- a/src/QXmppRosterManager.cpp
+++ b/src/QXmppRosterManager.cpp
@@ -160,11 +160,17 @@ void QXmppRosterManager::rosterIqReceived(const QXmppRosterIq& rosterIq)
// store updated entries and notify changes
const QList<QXmppRosterIq::Item> items = rosterIq.items();
- for (int i = 0; i < items.count(); i++)
- {
- QString bareJid = items.at(i).bareJid();
- m_entries[bareJid] = items.at(i);
- emit rosterChanged(bareJid);
+ foreach (const QXmppRosterIq::Item &item, items) {
+ const QString bareJid = item.bareJid();
+ if (item.subscriptionType() == QXmppRosterIq::Item::Remove) {
+ // notify the user that the item was removed if we previously had it
+ if (m_entries.remove(bareJid))
+ emit itemRemoved(bareJid);
+ } else {
+ // notify the user that the item changed
+ m_entries.insert(bareJid, item);
+ emit rosterChanged(bareJid);
+ }
}
}
break;