aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppArchiveManager.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-02-08 12:33:41 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2012-02-08 12:33:41 +0000
commit21acd67e9b65bea87902032b12709675905aa922 (patch)
treeed5ae9066b10400c4fe6e67dfaf2f4c37a09c32e /src/client/QXmppArchiveManager.cpp
parentcea7ae1e702b82d2d0d0a851de1aae58270b14f6 (diff)
downloadqxmpp-21acd67e9b65bea87902032b12709675905aa922.tar.gz
start moving client-specific code
Diffstat (limited to 'src/client/QXmppArchiveManager.cpp')
-rw-r--r--src/client/QXmppArchiveManager.cpp117
1 files changed, 117 insertions, 0 deletions
diff --git a/src/client/QXmppArchiveManager.cpp b/src/client/QXmppArchiveManager.cpp
new file mode 100644
index 00000000..75d3fbc7
--- /dev/null
+++ b/src/client/QXmppArchiveManager.cpp
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008-2011 The QXmpp developers
+ *
+ * Author:
+ * Jeremy Lainé
+ *
+ * Source:
+ * http://code.google.com/p/qxmpp
+ *
+ * This file is a part of QXmpp library.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ */
+
+#include <QDomElement>
+
+#include "QXmppArchiveIq.h"
+#include "QXmppArchiveManager.h"
+#include "QXmppClient.h"
+
+bool QXmppArchiveManager::handleStanza(const QDomElement &element)
+{
+ if (element.tagName() != "iq")
+ return false;
+
+ // XEP-0136: Message Archiving
+ if(QXmppArchiveChatIq::isArchiveChatIq(element))
+ {
+ QXmppArchiveChatIq archiveIq;
+ archiveIq.parse(element);
+ emit archiveChatReceived(archiveIq.chat());
+ return true;
+ }
+ else if(QXmppArchiveListIq::isArchiveListIq(element))
+ {
+ QXmppArchiveListIq archiveIq;
+ archiveIq.parse(element);
+ emit archiveListReceived(archiveIq.chats());
+ return true;
+ }
+ else if(QXmppArchivePrefIq::isArchivePrefIq(element))
+ {
+ // TODO: handle preference iq
+ QXmppArchivePrefIq archiveIq;
+ archiveIq.parse(element);
+ return true;
+ }
+
+ return false;
+}
+
+/// Retrieves the list of available collections. Once the results are
+/// received, the archiveListReceived() signal will be emitted.
+///
+/// \param jid Optional JID if you only want conversations with a specific JID.
+/// \param start Optional start time.
+/// \param end Optional end time.
+/// \param max Optional maximum number of collections to list.
+///
+void QXmppArchiveManager::listCollections(const QString &jid, const QDateTime &start, const QDateTime &end, int max)
+{
+ QXmppArchiveListIq packet;
+ packet.setMax(max);
+ packet.setWith(jid);
+ packet.setStart(start);
+ packet.setEnd(end);
+ client()->sendPacket(packet);
+}
+
+/// Removes the specified collection(s).
+///
+/// \param jid The JID of the collection
+/// \param start Optional start time.
+/// \param end Optional end time.
+///
+void QXmppArchiveManager::removeCollections(const QString &jid, const QDateTime &start, const QDateTime &end)
+{
+ QXmppArchiveRemoveIq packet;
+ packet.setType(QXmppIq::Set);
+ packet.setWith(jid);
+ packet.setStart(start);
+ packet.setEnd(end);
+ client()->sendPacket(packet);
+}
+
+/// Retrieves the specified collection. Once the results are received,
+/// the archiveChatReceived() will be emitted.
+///
+/// \param jid The JID of the collection
+/// \param start The start time of the collection.
+/// \param max Optional maximum number of messages to retrieve.
+///
+void QXmppArchiveManager::retrieveCollection(const QString &jid, const QDateTime &start, int max)
+{
+ QXmppArchiveRetrieveIq packet;
+ packet.setMax(max);
+ packet.setStart(start);
+ packet.setWith(jid);
+ client()->sendPacket(packet);
+}
+
+#if 0
+void QXmppArchiveManager::getPreferences()
+{
+ QXmppArchivePrefIq packet;
+ client()->sendPacket(packet);
+}
+#endif