diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-01-19 10:51:05 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-01-19 10:51:05 +0000 |
| commit | 7e0e2f4977ffad379dc8b261fcadbd253a03773a (patch) | |
| tree | d05687d31d4e9049c9bedb69686a9ae9434016b9 /src | |
| parent | a6f9d8cf01f924375ce4c245345868b7dc55995c (diff) | |
| download | qxmpp-7e0e2f4977ffad379dc8b261fcadbd253a03773a.tar.gz | |
add QXmppRosterManager::removeRosterEntry()
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppRosterManager.cpp | 19 | ||||
| -rw-r--r-- | src/QXmppRosterManager.h | 1 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/QXmppRosterManager.cpp b/src/QXmppRosterManager.cpp index 8cc1b52e..6adf7d56 100644 --- a/src/QXmppRosterManager.cpp +++ b/src/QXmppRosterManager.cpp @@ -126,6 +126,25 @@ void QXmppRosterManager::presenceReceived(const QXmppPresence& presence) } } +/// Removes a roster entry and cancels subscriptions to and from the contact. +/// +/// As a result, the server will initiate a roster push, causing the +/// rosterChanged() signal to be emitted. +/// +/// \param bareJid + +void QXmppRosterManager::removeRosterEntry(const QString &bareJid) +{ + QXmppRosterIq::Item item; + item.setBareJid(bareJid); + item.setSubscriptionType(QXmppRosterIq::Item::Remove); + + QXmppRosterIq iq; + iq.setType(QXmppIq::Set); + iq.addItem(item); + client()->sendPacket(iq); +} + void QXmppRosterManager::rosterIqReceived(const QXmppRosterIq& rosterIq) { bool isInitial = (m_rosterReqId == rosterIq.id()); diff --git a/src/QXmppRosterManager.h b/src/QXmppRosterManager.h index 9dee4e96..5cd08383 100644 --- a/src/QXmppRosterManager.h +++ b/src/QXmppRosterManager.h @@ -70,6 +70,7 @@ public: bool isRosterReceived(); QStringList getRosterBareJids() const; QXmppRosterIq::Item getRosterEntry(const QString& bareJid) const; + void removeRosterEntry(const QString &bareJid); QStringList getResources(const QString& bareJid) const; QMap<QString, QXmppPresence> getAllPresencesForBareJid( |
