diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-09-20 13:45:32 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-09-20 13:45:32 +0000 |
| commit | 3f7103cfa0a6004cce74de81bcdf63f821ab01d4 (patch) | |
| tree | fc0498ad166c95898add857aa28c602893c969c5 /src/QXmppArchiveManager.cpp | |
| parent | ab192b801c6db3e3f33a590f0edf24f5dbcc0551 (diff) | |
| download | qxmpp-3f7103cfa0a6004cce74de81bcdf63f821ab01d4.tar.gz | |
make QXmppArchiveManager a QXmppClientExtension
Diffstat (limited to 'src/QXmppArchiveManager.cpp')
| -rw-r--r-- | src/QXmppArchiveManager.cpp | 58 |
1 files changed, 36 insertions, 22 deletions
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 <QDomElement> + #include "QXmppArchiveIq.h" #include "QXmppArchiveManager.h" #include "QXmppOutgoingClient.h" -#include <QDebug> - -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 |
