From 020139fb910b56150ab63bb8b8327f210401da81 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Mon, 20 Sep 2010 14:49:07 +0000 Subject: make QXmppRosterManager a QXmppClientExtension --- src/QXmppRosterManager.cpp | 50 +++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 20 deletions(-) (limited to 'src/QXmppRosterManager.cpp') diff --git a/src/QXmppRosterManager.cpp b/src/QXmppRosterManager.cpp index fadfaccd..4ca9f011 100644 --- a/src/QXmppRosterManager.cpp +++ b/src/QXmppRosterManager.cpp @@ -22,33 +22,28 @@ * */ +#include +#include "QXmppClient.h" +#include "QXmppPresence.h" +#include "QXmppRosterIq.h" #include "QXmppRosterManager.h" #include "QXmppUtils.h" -#include "QXmppRosterIq.h" -#include "QXmppPresence.h" -#include "QXmppOutgoingClient.h" -QXmppRosterManager::QXmppRosterManager(QXmppOutgoingClient* stream, QObject *parent) - : QObject(parent), - m_stream(stream), - m_isRosterReceived(false) +QXmppRosterManager::QXmppRosterManager(QXmppClient* client) + : m_isRosterReceived(false) { - bool check = QObject::connect(m_stream, SIGNAL(connected()), + bool check = QObject::connect(client, SIGNAL(connected()), this, SLOT(connected())); Q_ASSERT(check); - check = QObject::connect(m_stream, SIGNAL(disconnected()), + check = QObject::connect(client, SIGNAL(disconnected()), this, SLOT(disconnected())); Q_ASSERT(check); - check = QObject::connect(m_stream, SIGNAL(presenceReceived(const QXmppPresence&)), + check = QObject::connect(client, SIGNAL(presenceReceived(const QXmppPresence&)), this, SLOT(presenceReceived(const QXmppPresence&))); Q_ASSERT(check); - - check = QObject::connect(m_stream, SIGNAL(rosterIqReceived(const QXmppRosterIq&)), - this, SLOT(rosterIqReceived(const QXmppRosterIq&))); - Q_ASSERT(check); } QXmppRosterManager::~QXmppRosterManager() @@ -62,9 +57,9 @@ void QXmppRosterManager::connected() { QXmppRosterIq roster; roster.setType(QXmppIq::Get); - roster.setFrom(m_stream->configuration().jid()); + roster.setFrom(client()->configuration().jid()); m_rosterReqId = roster.id(); - m_stream->sendPacket(roster); + client()->sendPacket(roster); } void QXmppRosterManager::disconnected() @@ -74,6 +69,21 @@ void QXmppRosterManager::disconnected() m_isRosterReceived = false; } +bool QXmppRosterManager::handleStanza(QXmppStream *stream, const QDomElement &element) +{ + Q_UNUSED(stream); + + if(element.tagName() == "iq" && QXmppRosterIq::isRosterIq(element)) + { + QXmppRosterIq rosterIq; + rosterIq.parse(element); + rosterIqReceived(rosterIq); + return true; + } + + return false; +} + void QXmppRosterManager::presenceReceived(const QXmppPresence& presence) { QString jid = presence.from(); @@ -94,12 +104,12 @@ void QXmppRosterManager::presenceReceived(const QXmppPresence& presence) emit presenceChanged(bareJid, resource); break; case QXmppPresence::Subscribe: - if (m_stream->configuration().autoAcceptSubscriptions()) + if (client()->configuration().autoAcceptSubscriptions()) { QXmppPresence presence; presence.setTo(jid); presence.setType(QXmppPresence::Subscribed); - m_stream->sendPacket(presence); + client()->sendPacket(presence); } break; default: @@ -118,7 +128,7 @@ void QXmppRosterManager::rosterIqReceived(const QXmppRosterIq& rosterIq) // send result iq QXmppIq returnIq(QXmppIq::Result); returnIq.setId(rosterIq.id()); - m_stream->sendPacket(returnIq); + client()->sendPacket(returnIq); // store updated entries and notify changes const QList items = rosterIq.items(); @@ -141,7 +151,7 @@ void QXmppRosterManager::rosterIqReceived(const QXmppRosterIq& rosterIq) QXmppPresence presence; presence.setTo(item.bareJid()); presence.setType(QXmppPresence::Subscribe); - m_stream->sendPacket(presence); + client()->sendPacket(presence); } } break; -- cgit v1.2.3