diff options
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( |
