aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppArchiveManager.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-09-20 13:45:32 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-09-20 13:45:32 +0000
commit3f7103cfa0a6004cce74de81bcdf63f821ab01d4 (patch)
treefc0498ad166c95898add857aa28c602893c969c5 /src/QXmppArchiveManager.cpp
parentab192b801c6db3e3f33a590f0edf24f5dbcc0551 (diff)
downloadqxmpp-3f7103cfa0a6004cce74de81bcdf63f821ab01d4.tar.gz
make QXmppArchiveManager a QXmppClientExtension
Diffstat (limited to 'src/QXmppArchiveManager.cpp')
-rw-r--r--src/QXmppArchiveManager.cpp58
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