aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppOmemoData.cpp
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2021-09-02 23:27:45 +0200
committerLinus Jahn <lnj@kaidan.im>2021-09-03 16:16:14 +0200
commit2ccc8d2d7033bb7180638ec8f980b904cfe3d686 (patch)
tree89b6bf5d82bb95e9070a04dd0dd45382f28e2544 /src/base/QXmppOmemoData.cpp
parent7587dfafe8917fccf5917682a7e5e9657cfa6d08 (diff)
downloadqxmpp-2ccc8d2d7033bb7180638ec8f980b904cfe3d686.tar.gz
Add QXmppOmemoDeviceList
Co-authored-by: Germán Márquez Mejía <mancho@olomono.de>
Diffstat (limited to 'src/base/QXmppOmemoData.cpp')
-rw-r--r--src/base/QXmppOmemoData.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/base/QXmppOmemoData.cpp b/src/base/QXmppOmemoData.cpp
index c714e8f0..b095ac24 100644
--- a/src/base/QXmppOmemoData.cpp
+++ b/src/base/QXmppOmemoData.cpp
@@ -24,6 +24,7 @@
#include "QXmppConstants_p.h"
#include "QXmppOmemoDeviceElement.h"
+#include "QXmppOmemoDeviceList.h"
#include "QXmppUtils.h"
#include <QDomElement>
@@ -160,3 +161,73 @@ bool QXmppOmemoDeviceElement::isOmemoDeviceElement(const QDomElement &element)
return element.tagName() == QStringLiteral("device") &&
element.namespaceURI() == ns_omemo_1;
}
+
+///
+/// \class QXmppOmemoDeviceList
+///
+/// \brief The QXmppOmemoDeviceList class represents an OMEMO device list
+/// as defined by \xep{0384, OMEMO Encryption}.
+///
+/// \since QXmpp 1.5
+///
+
+///
+/// Constructs an OMEMO device list.
+///
+QXmppOmemoDeviceList::QXmppOmemoDeviceList()
+{
+}
+
+///
+/// Constructs a copy of \a other.
+///
+/// \param other
+///
+QXmppOmemoDeviceList::QXmppOmemoDeviceList(const QXmppOmemoDeviceList &other) = default;
+
+QXmppOmemoDeviceList::~QXmppOmemoDeviceList() = default;
+
+///
+/// Assigns \a other to this OMEMO device list.
+///
+/// \param other
+///
+QXmppOmemoDeviceList &QXmppOmemoDeviceList::operator=(const QXmppOmemoDeviceList &other) = default;
+
+/// \cond
+void QXmppOmemoDeviceList::parse(const QDomElement &element)
+{
+ for (auto device = element.firstChildElement("device");
+ !device.isNull();
+ device = device.nextSiblingElement("device")) {
+ QXmppOmemoDeviceElement deviceElement;
+ deviceElement.parse(device);
+ append(deviceElement);
+ }
+}
+
+void QXmppOmemoDeviceList::toXml(QXmlStreamWriter *writer) const
+{
+ writer->writeStartElement("devices");
+ writer->writeDefaultNamespace(ns_omemo_1);
+
+ for (const auto &device : *this) {
+ device.toXml(writer);
+ }
+
+ writer->writeEndElement();
+}
+/// \endcond
+
+///
+/// Determines whether the given DOM element is an OMEMO device list.
+///
+/// \param element DOM element being checked
+///
+/// \return true if element is an OMEMO device list, otherwise false
+///
+bool QXmppOmemoDeviceList::isOmemoDeviceList(const QDomElement &element)
+{
+ return element.tagName() == QStringLiteral("devices") &&
+ element.namespaceURI() == ns_omemo_1;
+}