aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppRosterManager.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-09-20 14:49:07 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-09-20 14:49:07 +0000
commit020139fb910b56150ab63bb8b8327f210401da81 (patch)
tree3660d69ddbb160acbdbe05d5d7de6dbd2de248af /src/QXmppRosterManager.cpp
parent1754f0061451107f63082e3b57b639dae260e1e9 (diff)
downloadqxmpp-020139fb910b56150ab63bb8b8327f210401da81.tar.gz
make QXmppRosterManager a QXmppClientExtension
Diffstat (limited to 'src/QXmppRosterManager.cpp')
-rw-r--r--src/QXmppRosterManager.cpp50
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;