diff options
| author | Olivier Goffart <ogoffart@woboq.com> | 2012-07-06 18:50:46 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-07-16 16:15:27 +0200 |
| commit | 99bd8884bc87fbdbbe3a053f3afda9155b914c0f (patch) | |
| tree | d8aa44f27897dbb6057b3b87cf5bc3167890425e | |
| parent | 1b445c310f9a3978c850c75f4070ba0ad7cb0523 (diff) | |
| download | qxmpp-99bd8884bc87fbdbbe3a053f3afda9155b914c0f.tar.gz | |
Ability to use more complex result set management while getting the archive list
| -rw-r--r-- | src/base/QXmppArchiveIq.cpp | 36 | ||||
| -rw-r--r-- | src/base/QXmppArchiveIq.h | 8 | ||||
| -rw-r--r-- | src/client/QXmppArchiveManager.cpp | 26 | ||||
| -rw-r--r-- | src/client/QXmppArchiveManager.h | 7 | ||||
| -rw-r--r-- | tests/tests.cpp | 2 |
5 files changed, 52 insertions, 27 deletions
diff --git a/src/base/QXmppArchiveIq.cpp b/src/base/QXmppArchiveIq.cpp index ca489cff..8bc6b12d 100644 --- a/src/base/QXmppArchiveIq.cpp +++ b/src/base/QXmppArchiveIq.cpp @@ -265,23 +265,6 @@ void QXmppArchiveListIq::setChats(const QList<QXmppArchiveChat> &chats) m_chats = chats; } -/// Returns the maximum number of results. -/// - -int QXmppArchiveListIq::max() const -{ - return m_rsmQuery.max(); -} - -/// Sets the maximum number of results. -/// -/// \param max - -void QXmppArchiveListIq::setMax(int max) -{ - m_rsmQuery.setMax(max); -} - /// Returns the JID which archived conversations must match. /// @@ -333,6 +316,25 @@ void QXmppArchiveListIq::setEnd(const QDateTime &end) m_end = end; } +QXmppResultSetQuery QXmppArchiveListIq::resultSetQuery() const +{ + return m_rsmQuery; +} +void QXmppArchiveListIq::setResultSetQuery(const QXmppResultSetQuery& rsm) +{ + m_rsmQuery = rsm; +} + +QXmppResultSetReply QXmppArchiveListIq::resultSetReply() const +{ + return m_rsmReply; +} +void QXmppArchiveListIq::setResultSetReply(const QXmppResultSetReply& rsm) +{ + m_rsmReply = rsm; +} + + bool QXmppArchiveListIq::isArchiveListIq(const QDomElement &element) { QDomElement listElement = element.firstChildElement("list"); diff --git a/src/base/QXmppArchiveIq.h b/src/base/QXmppArchiveIq.h index 8c3bccf2..e9618616 100644 --- a/src/base/QXmppArchiveIq.h +++ b/src/base/QXmppArchiveIq.h @@ -133,9 +133,6 @@ public: QList<QXmppArchiveChat> chats() const; void setChats(const QList<QXmppArchiveChat> &chats); - int max() const; - void setMax(int max); - QString with() const; void setWith( const QString &with ); @@ -145,6 +142,11 @@ public: QDateTime end() const; void setEnd(const QDateTime &end ); + QXmppResultSetQuery resultSetQuery() const; + void setResultSetQuery(const QXmppResultSetQuery &rsm); + QXmppResultSetReply resultSetReply() const; + void setResultSetReply(const QXmppResultSetReply &rsm); + /// \cond static bool isArchiveListIq(const QDomElement &element); /// \endcond diff --git a/src/client/QXmppArchiveManager.cpp b/src/client/QXmppArchiveManager.cpp index 75d3fbc7..92b2de1f 100644 --- a/src/client/QXmppArchiveManager.cpp +++ b/src/client/QXmppArchiveManager.cpp @@ -44,7 +44,7 @@ bool QXmppArchiveManager::handleStanza(const QDomElement &element) { QXmppArchiveListIq archiveIq; archiveIq.parse(element); - emit archiveListReceived(archiveIq.chats()); + emit archiveListReceived(archiveIq.chats(), archiveIq.resultSetReply()); return true; } else if(QXmppArchivePrefIq::isArchivePrefIq(element)) @@ -64,18 +64,36 @@ bool QXmppArchiveManager::handleStanza(const QDomElement &element) /// \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. +/// \param rsm Result Set Management query /// -void QXmppArchiveManager::listCollections(const QString &jid, const QDateTime &start, const QDateTime &end, int max) +void QXmppArchiveManager::listCollections(const QString& jid, const QDateTime& start, + const QDateTime& end, const QXmppResultSetQuery &rsm) { QXmppArchiveListIq packet; - packet.setMax(max); + packet.setResultSetQuery(rsm); packet.setWith(jid); packet.setStart(start); packet.setEnd(end); client()->sendPacket(packet); } +/// \overload +/// 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) +{ + QXmppResultSetQuery rsm; + rsm.setMax(max); + listCollections(jid, start, end, rsm); +} + + /// Removes the specified collection(s). /// /// \param jid The JID of the collection diff --git a/src/client/QXmppArchiveManager.h b/src/client/QXmppArchiveManager.h index 01d9f357..fc7b27a9 100644 --- a/src/client/QXmppArchiveManager.h +++ b/src/client/QXmppArchiveManager.h @@ -27,6 +27,7 @@ #include <QDateTime> #include "QXmppClientExtension.h" +#include "QXmppResultSet.h" class QXmppArchiveChat; class QXmppArchiveChatIq; @@ -54,7 +55,9 @@ class QXMPP_EXPORT QXmppArchiveManager : public QXmppClientExtension Q_OBJECT public: - void listCollections(const QString &jid, const QDateTime &start = QDateTime(), const QDateTime &end = QDateTime(), int max = 0); + void listCollections(const QString &jid, const QDateTime &start = QDateTime(), const QDateTime &end = QDateTime(), + const QXmppResultSetQuery &rsm = QXmppResultSetQuery()); + void listCollections(const QString &jid, const QDateTime &start, const QDateTime &end, int max); void removeCollections(const QString &jid, const QDateTime &start = QDateTime(), const QDateTime &end = QDateTime()); void retrieveCollection(const QString &jid, const QDateTime &start, int max = 0); @@ -65,7 +68,7 @@ public: signals: /// This signal is emitted when archive list is received /// after calling listCollections() - void archiveListReceived(const QList<QXmppArchiveChat>&); + void archiveListReceived(const QList<QXmppArchiveChat>&, const QXmppResultSetReply &rsm = QXmppResultSetReply()); /// This signal is emitted when archive chat is received /// after calling retrieveCollection() diff --git a/tests/tests.cpp b/tests/tests.cpp index a97a7255..f67fbc4f 100644 --- a/tests/tests.cpp +++ b/tests/tests.cpp @@ -208,7 +208,7 @@ void TestPackets::testArchiveList() QCOMPARE(iq.with(), QLatin1String("juliet@capulet.com")); QCOMPARE(iq.start(), QDateTime(QDate(1469, 7, 21), QTime(2, 0, 0), Qt::UTC)); QCOMPARE(iq.end(), QDateTime(QDate(1479, 7, 21), QTime(4, 0, 0), Qt::UTC)); - QCOMPARE(iq.max(), 30); + QCOMPARE(iq.resultSetQuery().max(), 30); serializePacket(iq, xml); } |
