diff options
| author | Melvin Keskin <melvo@olomono.de> | 2021-09-02 23:27:45 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2021-09-03 16:16:14 +0200 |
| commit | 2ccc8d2d7033bb7180638ec8f980b904cfe3d686 (patch) | |
| tree | 89b6bf5d82bb95e9070a04dd0dd45382f28e2544 /src/base/QXmppOmemoData.cpp | |
| parent | 7587dfafe8917fccf5917682a7e5e9657cfa6d08 (diff) | |
| download | qxmpp-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.cpp | 71 |
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; +} |
