aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppTuneItem.h
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-03-09 12:05:23 +0100
committerLinus Jahn <lnj@kaidan.im>2022-03-09 18:29:46 +0100
commit83cf37a7dc4d1d97dd20d7c02003b978af5e0834 (patch)
tree022f7bd09069206445ccf22a6114ccc14bdea27a /src/base/QXmppTuneItem.h
parentbd9d878d065785d5922052d43be42299ffa09e34 (diff)
downloadqxmpp-83cf37a7dc4d1d97dd20d7c02003b978af5e0834.tar.gz
Refactor QXmppTuneItem
Diffstat (limited to 'src/base/QXmppTuneItem.h')
-rw-r--r--src/base/QXmppTuneItem.h54
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);