diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-03-09 12:05:23 +0100 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-03-09 18:29:46 +0100 |
| commit | 83cf37a7dc4d1d97dd20d7c02003b978af5e0834 (patch) | |
| tree | 022f7bd09069206445ccf22a6114ccc14bdea27a /src/base/QXmppTuneItem.h | |
| parent | bd9d878d065785d5922052d43be42299ffa09e34 (diff) | |
| download | qxmpp-83cf37a7dc4d1d97dd20d7c02003b978af5e0834.tar.gz | |
Refactor QXmppTuneItem
Diffstat (limited to 'src/base/QXmppTuneItem.h')
| -rw-r--r-- | src/base/QXmppTuneItem.h | 54 |
1 files changed, 43 insertions, 11 deletions
diff --git a/src/base/QXmppTuneItem.h b/src/base/QXmppTuneItem.h index 363a1c00..1819775a 100644 --- a/src/base/QXmppTuneItem.h +++ b/src/base/QXmppTuneItem.h @@ -7,7 +7,11 @@ #include "QXmppPubSubItem.h" +#include <chrono> +#include <optional> + #include <QSharedDataPointer> +#include <QTime> class QXmppTuneItemPrivate; class QUrl; @@ -22,25 +26,53 @@ public: QXmppTuneItem &operator=(const QXmppTuneItem &other); QString artist() const; - void setArtist(const QString &artist); - - quint16 length() const; - void setLength(quint16 length); - - quint8 rating() const; - void setRating(quint8 rating); + 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(const QString &source); + void setSource(QString source); QString title() const; - void setTitle(const QString &title); + void setTitle(QString title); QString track() const; - void setTrack(const QString &track); + void setTrack(QString track); QUrl uri() const; - void setUri(const QUrl &uri); + void setUri(QUrl uri); static bool isItem(const QDomElement &itemElement); |
