QXmpp  Version: 1.15.1
QXmppArchiveIq.h
1 // SPDX-FileCopyrightText: 2010 Jeremy LainĂ© <jeremy.laine@m4x.org>
2 //
3 // SPDX-License-Identifier: LGPL-2.1-or-later
4 
5 #ifndef QXMPPARCHIVEIQ_H
6 #define QXMPPARCHIVEIQ_H
7 
8 #include "QXmppIq.h"
9 #include "QXmppResultSet.h"
10 
11 #include <QDateTime>
12 
17 class QXMPP_EXPORT QXmppArchiveMessage
18 {
19 public:
21 
22  QString body() const;
23  void setBody(const QString &body);
24 
25  QDateTime date() const;
26  void setDate(const QDateTime &date);
27 
28  bool isReceived() const;
29  void setReceived(bool isReceived);
30 
31 private:
32  QString m_body;
33  QDateTime m_date;
34  bool m_received;
35 };
36 
41 class QXMPP_EXPORT QXmppArchiveChat
42 {
43 public:
45 
46  QList<QXmppArchiveMessage> messages() const;
47  void setMessages(const QList<QXmppArchiveMessage> &messages);
48 
49  QDateTime start() const;
50  void setStart(const QDateTime &start);
51 
52  QString subject() const;
53  void setSubject(const QString &subject);
54 
55  QString thread() const;
56  void setThread(const QString &thread);
57 
58  int version() const;
59  void setVersion(int version);
60 
61  QString with() const;
62  void setWith(const QString &with);
63 
65  static constexpr std::tuple XmlTag = { u"chat", QXmpp::Private::ns_archive };
66  void parse(const QDomElement &element);
67  void toXml(QXmlStreamWriter *writer) const { toXml(writer, {}); }
68  void toXml(QXmlStreamWriter *writer, const QXmppResultSetReply &rsm) const;
70 
71 private:
72  QList<QXmppArchiveMessage> m_messages;
73  QDateTime m_start;
74  QString m_subject;
75  QString m_thread;
76  int m_version;
77  QString m_with;
78 };
79 
87 class QXMPP_EXPORT QXmppArchiveChatIq : public QXmppIq
88 {
89 public:
90  QXmppArchiveChat chat() const;
91  void setChat(const QXmppArchiveChat &chat);
92 
93  QXmppResultSetReply resultSetReply() const;
94  void setResultSetReply(const QXmppResultSetReply &rsm);
95 
97  static constexpr std::tuple PayloadXmlTag = { u"chat", QXmpp::Private::ns_archive };
98  [[deprecated("Use QXmpp::isIqElement()")]]
99  static bool isArchiveChatIq(const QDomElement &element);
100 
101 protected:
102  void parseElementFromChild(const QDomElement &element) override;
103  void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
105 
106 private:
107  QXmppArchiveChat m_chat;
108  QXmppResultSetReply m_rsmReply;
109 };
110 
116 class QXMPP_EXPORT QXmppArchiveListIq : public QXmppIq
117 {
118 public:
120 
121  QList<QXmppArchiveChat> chats() const;
122  void setChats(const QList<QXmppArchiveChat> &chats);
123 
124  QString with() const;
125  void setWith(const QString &with);
126 
127  QDateTime start() const;
128  void setStart(const QDateTime &start);
129 
130  QDateTime end() const;
131  void setEnd(const QDateTime &end);
132 
133  QXmppResultSetQuery resultSetQuery() const;
134  void setResultSetQuery(const QXmppResultSetQuery &rsm);
135 
136  QXmppResultSetReply resultSetReply() const;
137  void setResultSetReply(const QXmppResultSetReply &rsm);
138 
140  static constexpr std::tuple PayloadXmlTag = { u"list", QXmpp::Private::ns_archive };
141  [[deprecated("Use QXmpp::isIqElement()")]]
142  static bool isArchiveListIq(const QDomElement &element);
144 
145 protected:
147  void parseElementFromChild(const QDomElement &element) override;
148  void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
150 
151 private:
152  QString m_with;
153  QDateTime m_start;
154  QDateTime m_end;
155  QList<QXmppArchiveChat> m_chats;
156  QXmppResultSetQuery m_rsmQuery;
157  QXmppResultSetReply m_rsmReply;
158 };
159 
165 class QXMPP_EXPORT QXmppArchiveRemoveIq : public QXmppIq
166 {
167 public:
168  QString with() const;
169  void setWith(const QString &with);
170 
171  QDateTime start() const;
172  void setStart(const QDateTime &start);
173 
174  QDateTime end() const;
175  void setEnd(const QDateTime &end);
176 
178  static constexpr std::tuple PayloadXmlTag = { u"remove", QXmpp::Private::ns_archive };
179  [[deprecated("Use QXmpp::isIqElement()")]]
180  static bool isArchiveRemoveIq(const QDomElement &element);
181 
182 protected:
183  void parseElementFromChild(const QDomElement &element) override;
184  void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
186 
187 private:
188  QString m_with;
189  QDateTime m_start;
190  QDateTime m_end;
191 };
192 
198 class QXMPP_EXPORT QXmppArchiveRetrieveIq : public QXmppIq
199 {
200 public:
202 
203  QDateTime start() const;
204  void setStart(const QDateTime &start);
205 
206  QString with() const;
207  void setWith(const QString &with);
208 
209  QXmppResultSetQuery resultSetQuery() const;
210  void setResultSetQuery(const QXmppResultSetQuery &rsm);
211 
213  static constexpr std::tuple PayloadXmlTag = { u"retrieve", QXmpp::Private::ns_archive };
214  [[deprecated("Use QXmpp::isIqElement()")]]
215  static bool isArchiveRetrieveIq(const QDomElement &element);
216 
217 protected:
218  void parseElementFromChild(const QDomElement &element) override;
219  void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
221 
222 private:
223  QString m_with;
224  QDateTime m_start;
225  QXmppResultSetQuery m_rsmQuery;
226 };
227 
233 class QXMPP_EXPORT QXmppArchivePrefIq : public QXmppIq
234 {
235 public:
237  static constexpr std::tuple PayloadXmlTag = { u"pref", QXmpp::Private::ns_archive };
238  [[deprecated("Use QXmpp::isIqElement()")]]
239  static bool isArchivePrefIq(const QDomElement &element);
240 
241 protected:
242  void parseElementFromChild(const QDomElement &element) override;
243  void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
245 };
246 
247 #endif // QXMPPARCHIVEIQ_H
Represents an archive remove IQ as defined by XEP-0136: Message Archiving.
Definition: QXmppArchiveIq.h:165
The QXmppArchiveMessage class represents an archived message as defined by XEP-0136: Message Archivin...
Definition: QXmppArchiveIq.h:17
The QXmppResultSetQuery class represents a set element in a query as defined by XEP-0059: Result Set ...
Definition: QXmppResultSet.h:17
Represents an archive list as defined by XEP-0136: Message Archiving.
Definition: QXmppArchiveIq.h:116
Represents an archive chat as defined by XEP-0136: Message Archiving.
Definition: QXmppArchiveIq.h:87
Represents an archive preference IQ as defined by XEP-0136: Message Archiving.
Definition: QXmppArchiveIq.h:233
The QXmppArchiveChat class represents an archived conversation as defined by XEP-0136: Message Archiv...
Definition: QXmppArchiveIq.h:41
The QXmppIq class is the base class for all IQs.
Definition: QXmppIq.h:22
The QXmppResultSetReply class represents a set element in a reply as defined by XEP-0059: Result Set ...
Definition: QXmppResultSet.h:52
Represents an archive retrieve IQ as defined by XEP-0136: Message Archiving.
Definition: QXmppArchiveIq.h:198