aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppUserTuneItem.h
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2023-01-03 22:17:05 +0100
committerLinus Jahn <lnj@kaidan.im>2023-01-03 22:19:33 +0100
commit381f83764d84ffff73ba05e07498e0dafd8844f5 (patch)
tree478ff493b6ddb9a75fa2bb96bf2bfe9116217668 /src/base/QXmppUserTuneItem.h
parenta71be82575ff250acd82206ffa192e0f2c936696 (diff)
downloadqxmpp-381f83764d84ffff73ba05e07498e0dafd8844f5.tar.gz
Rename TuneItem to UserTuneItem
Closes #524.
Diffstat (limited to 'src/base/QXmppUserTuneItem.h')
-rw-r--r--src/base/QXmppUserTuneItem.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/base/QXmppUserTuneItem.h b/src/base/QXmppUserTuneItem.h
new file mode 100644
index 00000000..03bafb1e
--- /dev/null
+++ b/src/base/QXmppUserTuneItem.h
@@ -0,0 +1,93 @@
+// SPDX-FileCopyrightText: 2020 Linus Jahn <lnj@kaidan.im>
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#ifndef QXMPPUSERTUNEITEM_H
+#define QXMPPUSERTUNEITEM_H
+
+#include "QXmppPubSubItem.h"
+
+#include <chrono>
+#include <optional>
+
+#include <QSharedDataPointer>
+#include <QTime>
+
+class QXmppTuneItemPrivate;
+class QUrl;
+
+class QXMPP_EXPORT QXmppTuneItem : public QXmppPubSubItem
+{
+public:
+ QXmppTuneItem();
+ QXmppTuneItem(const QXmppTuneItem &other);
+ QXmppTuneItem(QXmppTuneItem &&);
+ ~QXmppTuneItem();
+
+ QXmppTuneItem &operator=(const QXmppTuneItem &other);
+ QXmppTuneItem &operator=(QXmppTuneItem &&);
+
+ QString artist() const;
+ void setArtist(QString artist);
+
+ std::optional<quint16> length() const;
+ void setLength(std::optional<quint16> length);
+ inline QTime lengthAsTime() const
+ {
+ if (auto len = length()) {
+ return QTime::fromMSecsSinceStartOfDay(len.value() * 1000);
+ }
+ return {};
+ }
+ inline void setLength(const QTime &time)
+ {
+ if (time.isValid()) {
+ setLength(time.msecsSinceStartOfDay() / 1000);
+ }
+ setLength(std::optional<quint16>());
+ }
+ inline std::optional<std::chrono::seconds> lengthAsDuration() const
+ {
+ if (auto len = length()) {
+ return std::chrono::seconds(*len);
+ }
+ return {};
+ }
+ inline void setLength(std::optional<std::chrono::seconds> time)
+ {
+ if (time) {
+ setLength(quint16(time->count()));
+ }
+ setLength(std::optional<quint16>());
+ }
+
+ std::optional<quint8> rating() const;
+ void setRating(std::optional<quint8> rating);
+
+ QString source() const;
+ void setSource(QString source);
+
+ QString title() const;
+ void setTitle(QString title);
+
+ QString track() const;
+ void setTrack(QString track);
+
+ QUrl uri() const;
+ void setUri(QUrl uri);
+
+ static bool isItem(const QDomElement &itemElement);
+
+protected:
+ /// \cond
+ void parsePayload(const QDomElement &payloadElement) override;
+ void serializePayload(QXmlStreamWriter *writer) const override;
+ /// \endcond
+
+private:
+ QSharedDataPointer<QXmppTuneItemPrivate> d;
+};
+
+Q_DECLARE_METATYPE(QXmppTuneItem)
+
+#endif // QXMPPUSERTUNEITEM_H