aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2011-04-29 08:46:28 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2011-04-29 08:46:28 +0000
commitac74e91fc474785391b6be798f527dc3daf2f502 (patch)
treef48310ece3d60a813e5706ef910745c5207aee3a /src
parent94cf9be3c80a80a098c7d9eca931af5e533f3c69 (diff)
downloadqxmpp-ac74e91fc474785391b6be798f527dc3daf2f502.tar.gz
* add QXmppRosterManager::itemAdded() and itemChanged()
* deprecate QXmppRosterManager::rosterChanged()
Diffstat (limited to 'src')
-rw-r--r--src/QXmppRosterManager.cpp16
-rw-r--r--src/QXmppRosterManager.h18
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.