diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-09-20 14:49:07 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-09-20 14:49:07 +0000 |
| commit | 020139fb910b56150ab63bb8b8327f210401da81 (patch) | |
| tree | 3660d69ddbb160acbdbe05d5d7de6dbd2de248af /src/QXmppRosterManager.cpp | |
| parent | 1754f0061451107f63082e3b57b639dae260e1e9 (diff) | |
| download | qxmpp-020139fb910b56150ab63bb8b8327f210401da81.tar.gz | |
make QXmppRosterManager a QXmppClientExtension
Diffstat (limited to 'src/QXmppRosterManager.cpp')
| -rw-r--r-- | src/QXmppRosterManager.cpp | 50 |
1 files changed, 30 insertions, 20 deletions
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 <QDomElement> +#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<QXmppRosterIq::Item> 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; |
