aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2020-02-06 12:34:22 +0100
committerLNJ <lnj@kaidan.im>2020-02-06 13:08:14 +0100
commit95fe73eb9b734ace8d3a7247f9151d9475fb3ef9 (patch)
tree30426230b3cc7e62428ab7af5a3a8744406e9d36 /src
parenta3cafa142ca0b8944ddcd1ed43fb4ac01e7fcb45 (diff)
downloadqxmpp-95fe73eb9b734ace8d3a7247f9151d9475fb3ef9.tar.gz
Make QXmppMam*Iq use QSharedDataPointers
Diffstat (limited to 'src')
-rw-r--r--src/base/QXmppMamIq.cpp88
-rw-r--r--src/base/QXmppMamIq.h21
2 files changed, 75 insertions, 34 deletions
diff --git a/src/base/QXmppMamIq.cpp b/src/base/QXmppMamIq.cpp
index 75493c9d..69d4f98c 100644
--- a/src/base/QXmppMamIq.cpp
+++ b/src/base/QXmppMamIq.cpp
@@ -27,14 +27,31 @@
#include <QDomElement>
-QXmppMamQueryIq::QXmppMamQueryIq() : QXmppIq(QXmppIq::Set)
+class QXmppMamQueryIqPrivate : public QSharedData
+{
+public:
+ QXmppDataForm form;
+ QXmppResultSetQuery resultSetQuery;
+ QString node;
+ QString queryId;
+};
+
+QXmppMamQueryIq::QXmppMamQueryIq()
+ : QXmppIq(QXmppIq::Set),
+ d(new QXmppMamQueryIqPrivate)
{
}
+QXmppMamQueryIq::QXmppMamQueryIq(const QXmppMamQueryIq &) = default;
+
+QXmppMamQueryIq::~QXmppMamQueryIq() = default;
+
+QXmppMamQueryIq &QXmppMamQueryIq::operator=(const QXmppMamQueryIq &) = default;
+
/// Returns the form that specifies the query.
QXmppDataForm QXmppMamQueryIq::form() const
{
- return m_form;
+ return d->form;
}
/// Sets the data form that specifies the query.
@@ -42,13 +59,13 @@ QXmppDataForm QXmppMamQueryIq::form() const
/// \param form The data form.
void QXmppMamQueryIq::setForm(const QXmppDataForm &form)
{
- m_form = form;
+ d->form = form;
}
/// Returns the result set query for result set management.
QXmppResultSetQuery QXmppMamQueryIq::resultSetQuery() const
{
- return m_resultSetQuery;
+ return d->resultSetQuery;
}
/// Sets the result set query for result set management.
@@ -56,13 +73,13 @@ QXmppResultSetQuery QXmppMamQueryIq::resultSetQuery() const
/// \param resultSetQuery The result set query.
void QXmppMamQueryIq::setResultSetQuery(const QXmppResultSetQuery &resultSetQuery)
{
- m_resultSetQuery = resultSetQuery;
+ d->resultSetQuery = resultSetQuery;
}
/// Returns the node to query.
QString QXmppMamQueryIq::node() const
{
- return m_node;
+ return d->node;
}
/// Sets the node to query.
@@ -70,13 +87,13 @@ QString QXmppMamQueryIq::node() const
/// \param node The node to query.
void QXmppMamQueryIq::setNode(const QString &node)
{
- m_node = node;
+ d->node = node;
}
/// Returns the queryid that will be included in the results.
QString QXmppMamQueryIq::queryId() const
{
- return m_queryId;
+ return d->queryId;
}
/// Sets the queryid that will be included in the results.
@@ -84,7 +101,7 @@ QString QXmppMamQueryIq::queryId() const
/// \param id The query id.
void QXmppMamQueryIq::setQueryId(const QString &id)
{
- m_queryId = id;
+ d->queryId = id;
}
/// \cond
@@ -102,15 +119,15 @@ bool QXmppMamQueryIq::isMamQueryIq(const QDomElement &element)
void QXmppMamQueryIq::parseElementFromChild(const QDomElement &element)
{
QDomElement queryElement = element.firstChildElement("query");
- m_node = queryElement.attribute("node");
- m_queryId = queryElement.attribute("queryId");
+ d->node = queryElement.attribute("node");
+ d->queryId = queryElement.attribute("queryId");
QDomElement resultSetElement = queryElement.firstChildElement("set");
if (!resultSetElement.isNull()) {
- m_resultSetQuery.parse(resultSetElement);
+ d->resultSetQuery.parse(resultSetElement);
}
QDomElement formElement = queryElement.firstChildElement("x");
if (!formElement.isNull()) {
- m_form.parse(formElement);
+ d->form.parse(formElement);
}
}
@@ -118,46 +135,61 @@ void QXmppMamQueryIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
{
writer->writeStartElement("query");
writer->writeDefaultNamespace(ns_mam);
- if (!m_node.isEmpty()) {
- writer->writeAttribute("node", m_node);
+ if (!d->node.isEmpty()) {
+ writer->writeAttribute("node", d->node);
}
- if (!m_queryId.isEmpty()) {
- writer->writeAttribute("queryid", m_queryId);
+ if (!d->queryId.isEmpty()) {
+ writer->writeAttribute("queryid", d->queryId);
}
- m_form.toXml(writer);
- m_resultSetQuery.toXml(writer);
+ d->form.toXml(writer);
+ d->resultSetQuery.toXml(writer);
writer->writeEndElement();
}
/// \endcond
-QXmppMamResultIq::QXmppMamResultIq() : m_complete(false)
+class QXmppMamResultIqPrivate : public QSharedData
{
+public:
+ QXmppResultSetReply resultSetReply;
+ bool complete;
+};
+
+QXmppMamResultIq::QXmppMamResultIq()
+ : d(new QXmppMamResultIqPrivate)
+{
+ d->complete = false;
}
+QXmppMamResultIq::QXmppMamResultIq(const QXmppMamResultIq &) = default;
+
+QXmppMamResultIq::~QXmppMamResultIq() = default;
+
+QXmppMamResultIq &QXmppMamResultIq::operator=(const QXmppMamResultIq &) = default;
+
/// Returns the result set reply for result set management.
QXmppResultSetReply QXmppMamResultIq::resultSetReply() const
{
- return m_resultSetReply;
+ return d->resultSetReply;
}
/// Sets the result set reply for result set management
void QXmppMamResultIq::setResultSetReply(const QXmppResultSetReply &resultSetReply)
{
- m_resultSetReply = resultSetReply;
+ d->resultSetReply = resultSetReply;
}
/// Returns true if the results returned by the server are complete (not
/// limited by the server).
bool QXmppMamResultIq::complete() const
{
- return m_complete;
+ return d->complete;
}
/// Sets if the results returned by the server are complete (not limited by the
/// server).
void QXmppMamResultIq::setComplete(bool complete)
{
- m_complete = complete;
+ d->complete = complete;
}
/// \cond
@@ -175,10 +207,10 @@ bool QXmppMamResultIq::isMamResultIq(const QDomElement &element)
void QXmppMamResultIq::parseElementFromChild(const QDomElement &element)
{
QDomElement finElement = element.firstChildElement("fin");
- m_complete = finElement.attribute("complete") == QString("true");
+ d->complete = finElement.attribute("complete") == QString("true");
QDomElement resultSetElement = finElement.firstChildElement("set");
if (!resultSetElement.isNull()) {
- m_resultSetReply.parse(resultSetElement);
+ d->resultSetReply.parse(resultSetElement);
}
}
@@ -186,10 +218,10 @@ void QXmppMamResultIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
{
writer->writeStartElement("fin");
writer->writeDefaultNamespace(ns_mam);
- if (m_complete) {
+ if (d->complete) {
writer->writeAttribute("complete", "true");
}
- m_resultSetReply.toXml(writer);
+ d->resultSetReply.toXml(writer);
writer->writeEndElement();
}
/// \endcond
diff --git a/src/base/QXmppMamIq.h b/src/base/QXmppMamIq.h
index 115fc289..6f5c251c 100644
--- a/src/base/QXmppMamIq.h
+++ b/src/base/QXmppMamIq.h
@@ -28,12 +28,21 @@
#include "QXmppIq.h"
#include "QXmppResultSet.h"
+#include <QSharedDataPointer>
+
+class QXmppMamQueryIqPrivate;
+class QXmppMamResultIqPrivate;
+
/// \brief The QXmppMamQueryIq class represents the query IQ for
/// XEP-0313: Message Archive Management.
class QXmppMamQueryIq : public QXmppIq
{
public:
QXmppMamQueryIq();
+ QXmppMamQueryIq(const QXmppMamQueryIq &);
+ ~QXmppMamQueryIq();
+
+ QXmppMamQueryIq &operator=(const QXmppMamQueryIq &);
QXmppDataForm form() const;
void setForm(const QXmppDataForm &form);
@@ -51,10 +60,7 @@ protected:
void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
private:
- QXmppDataForm m_form;
- QXmppResultSetQuery m_resultSetQuery;
- QString m_node;
- QString m_queryId;
+ QSharedDataPointer<QXmppMamQueryIqPrivate> d;
};
/// \brief The QXmppMamQueryIq class represents the result IQ for
@@ -63,6 +69,10 @@ class QXmppMamResultIq : public QXmppIq
{
public:
QXmppMamResultIq();
+ QXmppMamResultIq(const QXmppMamResultIq &);
+ ~QXmppMamResultIq();
+
+ QXmppMamResultIq &operator=(const QXmppMamResultIq &);
QXmppResultSetReply resultSetReply() const;
void setResultSetReply(const QXmppResultSetReply &resultSetReply);
@@ -76,8 +86,7 @@ protected:
void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
private:
- QXmppResultSetReply m_resultSetReply;
- bool m_complete;
+ QSharedDataPointer<QXmppMamResultIqPrivate> d;
};
#endif