diff options
| author | Linus Jahn <lnj@kaidan.im> | 2023-01-03 22:17:05 +0100 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2023-01-03 22:19:33 +0100 |
| commit | 381f83764d84ffff73ba05e07498e0dafd8844f5 (patch) | |
| tree | 478ff493b6ddb9a75fa2bb96bf2bfe9116217668 /src/base/QXmppUserTuneItem.h | |
| parent | a71be82575ff250acd82206ffa192e0f2c936696 (diff) | |
| download | qxmpp-381f83764d84ffff73ba05e07498e0dafd8844f5.tar.gz | |
Rename TuneItem to UserTuneItem
Closes #524.
Diffstat (limited to 'src/base/QXmppUserTuneItem.h')
| -rw-r--r-- | src/base/QXmppUserTuneItem.h | 93 |
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 |
