diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-04-29 08:46:28 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-04-29 08:46:28 +0000 |
| commit | ac74e91fc474785391b6be798f527dc3daf2f502 (patch) | |
| tree | f48310ece3d60a813e5706ef910745c5207aee3a /src | |
| parent | 94cf9be3c80a80a098c7d9eca931af5e533f3c69 (diff) | |
| download | qxmpp-ac74e91fc474785391b6be798f527dc3daf2f502.tar.gz | |
* add QXmppRosterManager::itemAdded() and itemChanged()
* deprecate QXmppRosterManager::rosterChanged()
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppRosterManager.cpp | 16 | ||||
| -rw-r--r-- | src/QXmppRosterManager.h | 18 |
2 files changed, 28 insertions, 6 deletions
diff --git a/src/QXmppRosterManager.cpp b/src/QXmppRosterManager.cpp index fd948e99..92b150ea 100644 --- a/src/QXmppRosterManager.cpp +++ b/src/QXmppRosterManager.cpp @@ -163,12 +163,22 @@ void QXmppRosterManager::rosterIqReceived(const QXmppRosterIq& rosterIq) 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)) + if (m_entries.remove(bareJid)) { + // notify the user that the item was removed emit itemRemoved(bareJid); + } } else { - // notify the user that the item changed + const bool added = !m_entries.contains(bareJid); m_entries.insert(bareJid, item); + if (added) { + // notify the user that the item was added + emit itemAdded(bareJid); + } else { + // notify the user that the item changed + emit itemChanged(bareJid); + } + + // FIXME: remove legacy signal emit rosterChanged(bareJid); } } diff --git a/src/QXmppRosterManager.h b/src/QXmppRosterManager.h index 04f05061..2ddf6445 100644 --- a/src/QXmppRosterManager.h +++ b/src/QXmppRosterManager.h @@ -55,8 +55,10 @@ class QXmppRosterIq; /// Function QXmppRosterManager::isRosterReceived() tells whether the roster has been /// received or not. /// -/// Signals presenceChanged() or rosterChanged() are emitted whenever presence -/// or roster changes respectively. +/// The itemAdded(), itemChanged() and itemRemoved() signals are emitted whenever roster +/// entries are added, changed or removed. +/// +/// The presenceChanged() signal is emitted whenever the presence for a roster item changes. /// /// \ingroup Managers @@ -98,8 +100,18 @@ signals: /// This signal is emitted when the presence of a particular bareJid and resource changes. void presenceChanged(const QString& bareJid, const QString& resource); - /// This signal is emitted when the roster entry of a particular bareJid changes. + /// \cond + // deprecated in release 0.4.0 void rosterChanged(const QString& bareJid); + /// \endcond + + /// This signal is emitted when the roster entry of a particular bareJid is + /// added as a result of roster push. + void itemAdded(const QString& bareJid); + + /// This signal is emitted when the roster entry of a particular bareJid + /// changes as a result of roster push. + void itemChanged(const QString& bareJid); /// This signal is emitted when the roster entry of a particular bareJid is /// removed as a result of roster push. |
