From 3f7103cfa0a6004cce74de81bcdf63f821ab01d4 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Mon, 20 Sep 2010 13:45:32 +0000 Subject: make QXmppArchiveManager a QXmppClientExtension --- src/QXmppArchiveManager.cpp | 58 ++++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 22 deletions(-) (limited to 'src/QXmppArchiveManager.cpp') diff --git a/src/QXmppArchiveManager.cpp b/src/QXmppArchiveManager.cpp index c46e2dc9..db2098f5 100644 --- a/src/QXmppArchiveManager.cpp +++ b/src/QXmppArchiveManager.cpp @@ -21,29 +21,12 @@ * */ +#include + #include "QXmppArchiveIq.h" #include "QXmppArchiveManager.h" #include "QXmppOutgoingClient.h" -#include - -QXmppArchiveManager::QXmppArchiveManager(QXmppOutgoingClient *stream, QObject *parent) - : QObject(parent), - m_stream(stream) -{ - bool check = QObject::connect(m_stream, SIGNAL(archiveChatIqReceived(const QXmppArchiveChatIq&)), - this, SLOT(archiveChatIqReceived(const QXmppArchiveChatIq&))); - Q_ASSERT(check); - - check = QObject::connect(m_stream, SIGNAL(archiveListIqReceived(const QXmppArchiveListIq&)), - this, SLOT(archiveListIqReceived(const QXmppArchiveListIq&))); - Q_ASSERT(check); - - check = QObject::connect(m_stream, SIGNAL(archivePrefIqReceived(const QXmppArchivePrefIq&)), - this, SLOT(archivePrefIqReceived(const QXmppArchivePrefIq&))); - Q_ASSERT(check); -} - void QXmppArchiveManager::archiveChatIqReceived(const QXmppArchiveChatIq &chatIq) { emit archiveChatReceived(chatIq.chat()); @@ -59,6 +42,37 @@ void QXmppArchiveManager::archivePrefIqReceived(const QXmppArchivePrefIq &prefIq Q_UNUSED(prefIq); } +bool QXmppArchiveManager::handleStanza(QXmppStream *stream, const QDomElement &element) +{ + if (element.tagName() != "iq") + return false; + + // XEP-0136: Message Archiving + if(QXmppArchiveChatIq::isArchiveChatIq(element)) + { + QXmppArchiveChatIq archiveIq; + archiveIq.parse(element); + archiveChatIqReceived(archiveIq); + return true; + } + else if(QXmppArchiveListIq::isArchiveListIq(element)) + { + QXmppArchiveListIq archiveIq; + archiveIq.parse(element); + archiveListIqReceived(archiveIq); + return true; + } + else if(QXmppArchivePrefIq::isArchivePrefIq(element)) + { + QXmppArchivePrefIq archiveIq; + archiveIq.parse(element); + archivePrefIqReceived(archiveIq); + return true; + } + + return false; +} + /// Retrieves the list of available collections. Once the results are /// received, the archiveListReceived() signal will be emitted. /// @@ -74,7 +88,7 @@ void QXmppArchiveManager::listCollections(const QString &jid, const QDateTime &s packet.setWith(jid); packet.setStart(start); packet.setEnd(end); - m_stream->sendPacket(packet); + client()->sendPacket(packet); } /// Retrieves the specified collection. Once the results are received, @@ -90,13 +104,13 @@ void QXmppArchiveManager::retrieveCollection(const QString &jid, const QDateTime packet.setMax(max); packet.setStart(start); packet.setWith(jid); - m_stream->sendPacket(packet); + client()->sendPacket(packet); } #if 0 void QXmppArchiveManager::getPreferences() { QXmppArchivePrefIq packet; - m_stream->sendPacket(packet); + client()->sendPacket(packet); } #endif -- cgit v1.2.3