aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
Diffstat (limited to 'src/base')
-rw-r--r--src/base/QXmppStanza.cpp28
-rw-r--r--src/base/QXmppStanza.h14
2 files changed, 35 insertions, 7 deletions
diff --git a/src/base/QXmppStanza.cpp b/src/base/QXmppStanza.cpp
index 25b9baac..3aff0404 100644
--- a/src/base/QXmppStanza.cpp
+++ b/src/base/QXmppStanza.cpp
@@ -525,6 +525,24 @@ QXmppE2eeMetadata::QXmppE2eeMetadata(const QXmppE2eeMetadata &other) = default;
QXmppE2eeMetadata::~QXmppE2eeMetadata() = default;
+/// \cond
+QXmppE2eeMetadata::QXmppE2eeMetadata(const std::optional<QXmppE2eeMetadata> &other)
+ : d(nullptr)
+{
+ if (other) {
+ *this = *other;
+ }
+}
+
+std::optional<QXmppE2eeMetadata> QXmppE2eeMetadata::toOptional() const
+{
+ if (d) {
+ return *this;
+ }
+ return {};
+}
+/// \endcond
+
///
/// Assigns \a other to this end-to-end encryption metadata class.
///
@@ -618,7 +636,7 @@ public:
QXmppStanza::Error error;
QXmppElementList extensions;
QList<QXmppExtendedAddress> extendedAddresses;
- QXmppE2eeMetadata e2eeMetadata;
+ QXmppE2eeMetadata e2eeMetadata = QXmppE2eeMetadata(std::nullopt);
};
///
@@ -776,9 +794,9 @@ void QXmppStanza::setExtendedAddresses(const QList<QXmppExtendedAddress> &addres
///
/// \since QXmpp 1.5
///
-QXmppE2eeMetadata QXmppStanza::e2eeMetadata() const
+std::optional<QXmppE2eeMetadata> QXmppStanza::e2eeMetadata() const
{
- return d->e2eeMetadata;
+ return d->e2eeMetadata.toOptional();
}
///
@@ -786,9 +804,9 @@ QXmppE2eeMetadata QXmppStanza::e2eeMetadata() const
///
/// \since QXmpp 1.5
///
-void QXmppStanza::setE2eeMetadata(const QXmppE2eeMetadata &e2eeMetadata)
+void QXmppStanza::setE2eeMetadata(const std::optional<QXmppE2eeMetadata> &e2eeMetadata)
{
- d->e2eeMetadata = e2eeMetadata;
+ d->e2eeMetadata = QXmppE2eeMetadata(e2eeMetadata);
}
/// \cond
diff --git a/src/base/QXmppStanza.h b/src/base/QXmppStanza.h
index 34cd1aed..91c01af0 100644
--- a/src/base/QXmppStanza.h
+++ b/src/base/QXmppStanza.h
@@ -8,6 +8,8 @@
#ifndef QXMPPSTANZA_H
#define QXMPPSTANZA_H
+#include <optional>
+
#include <QByteArray>
#include <QSharedData>
#include <QString>
@@ -83,6 +85,14 @@ public:
void setSceTimestamp(const QDateTime &timestamp);
private:
+ friend class QXmppStanza;
+ friend class QXmppStanzaPrivate;
+
+ /// \cond
+ explicit QXmppE2eeMetadata(const std::optional<QXmppE2eeMetadata> &other);
+ std::optional<QXmppE2eeMetadata> toOptional() const;
+ /// \endcond
+
QSharedDataPointer<QXmppE2eeMetadataPrivate> d;
};
@@ -225,8 +235,8 @@ public:
QList<QXmppExtendedAddress> extendedAddresses() const;
void setExtendedAddresses(const QList<QXmppExtendedAddress> &extendedAddresses);
- QXmppE2eeMetadata e2eeMetadata() const;
- void setE2eeMetadata(const QXmppE2eeMetadata &e2eeMetadata);
+ std::optional<QXmppE2eeMetadata> e2eeMetadata() const;
+ void setE2eeMetadata(const std::optional<QXmppE2eeMetadata> &e2eeMetadata);
/// \cond
void parse(const QDomElement &element) override;