aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppFileMetadata.h
diff options
context:
space:
mode:
authorJonah BrĂ¼chert <jbb@kaidan.im>2022-09-05 19:23:07 +0200
committerLinus Jahn <lnj@kaidan.im>2022-09-06 00:46:56 +0200
commite2e27c8c953d6650a1ede2596a3537e5ebd5cea5 (patch)
tree71229ce7f6a0fe437e69103e0c5355721264ad00 /src/base/QXmppFileMetadata.h
parent6685217ac78c7588aaea67059a0844d51713dcd5 (diff)
downloadqxmpp-e2e27c8c953d6650a1ede2596a3537e5ebd5cea5.tar.gz
Add parsing of XEP-0446: File metadata element
This implements version 0.2.0 https://xmpp.org/extensions/xep-0446.html
Diffstat (limited to 'src/base/QXmppFileMetadata.h')
-rw-r--r--src/base/QXmppFileMetadata.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/base/QXmppFileMetadata.h b/src/base/QXmppFileMetadata.h
new file mode 100644
index 00000000..e45e6506
--- /dev/null
+++ b/src/base/QXmppFileMetadata.h
@@ -0,0 +1,66 @@
+// SPDX-FileCopyrightText: 2022 Jonah BrĂ¼chert <jbb@kaidan.im>
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#ifndef QXMPPFILEMETADATA_H
+#define QXMPPFILEMETADATA_H
+
+#include "QXmppGlobal.h"
+#include "QXmppHash.h"
+
+#include <optional>
+
+#include <QMimeType>
+#include <QSharedDataPointer>
+
+class QDomElement;
+class QDateTime;
+class QXmlStreamWriter;
+class QXmppThumbnail;
+class QXmppFileMetadataPrivate;
+
+class QXMPP_EXPORT QXmppFileMetadata
+{
+public:
+ QXmppFileMetadata();
+
+ /// \cond
+ bool parse(const QDomElement &el);
+ void toXml(QXmlStreamWriter *writer) const;
+ /// \endcond
+
+ const std::optional<QDateTime> &lastModified() const;
+ void setLastModified(const std::optional<QDateTime> &date);
+
+ const std::optional<QString> &description() const;
+ void setDescription(const std::optional<QString> &description);
+
+ const QVector<QXmppHash> &hashes() const;
+ void setHashes(const QVector<QXmppHash> &hashes);
+
+ std::optional<uint32_t> height() const;
+ void setHeight(std::optional<uint32_t> height);
+
+ std::optional<uint32_t> length() const;
+ void setLength(std::optional<uint32_t> length);
+
+ const std::optional<QMimeType> &mediaType() const;
+ void setMediaType(std::optional<QMimeType> mediaType);
+
+ std::optional<QString> filename() const;
+ void setFilename(std::optional<QString>);
+
+ std::optional<uint64_t> size() const;
+ void setSize(std::optional<uint64_t> size);
+
+ const std::optional<QXmppThumbnail> &thumbnail() const;
+ void setThumbnail(const std::optional<QXmppThumbnail> &thumbnail);
+
+ std::optional<uint32_t> width() const;
+ void setWidth(std::optional<uint32_t> width);
+
+private:
+ QSharedDataPointer<QXmppFileMetadataPrivate> d;
+};
+
+#endif