From f5a55abf58030bbcd65f36c16a0434cf1983543a Mon Sep 17 00:00:00 2001 From: Dakes Date: Thu, 27 Jul 2023 00:39:13 +0200 Subject: [PATCH] Mpris2: Add new property to read/write the rating --- src/core/mpris2.cpp | 17 +++++++++++++++++ src/core/mpris2.h | 5 +++++ src/dbus/org.mpris.MediaPlayer2.Player.xml | 1 + 3 files changed, 23 insertions(+) diff --git a/src/core/mpris2.cpp b/src/core/mpris2.cpp index 21da9225..91c81638 100644 --- a/src/core/mpris2.cpp +++ b/src/core/mpris2.cpp @@ -212,6 +212,7 @@ void Mpris2::EmitNotification(const QString &name) { else if (name == "LoopStatus") value = LoopStatus(); else if (name == "Shuffle") value = Shuffle(); else if (name == "Metadata") value = Metadata(); + else if (name == "Rating") value = Rating(); else if (name == "Volume") value = Volume(); else if (name == "Position") value = Position(); else if (name == "CanPlay") value = CanPlay(); @@ -369,6 +370,22 @@ void Mpris2::SetShuffle(bool enable) { QVariantMap Mpris2::Metadata() const { return last_metadata_; } +double Mpris2::Rating() const { + float rating = app_->playlist_manager()->active()->current_item_metadata().rating(); + return (rating <= 0) ? 0 : rating; +} + +void Mpris2::SetRating(double rating) { + if (rating > 1.0) { + rating = 1.0; + } + else if (rating <= 0.0) { + rating = -1.0; + } + + app_->playlist_manager()->RateCurrentSong(rating); +} + QString Mpris2::current_track_id() const { return QString("/org/strawberrymusicplayer/strawberry/Track/%1").arg(QString::number(app_->playlist_manager()->active()->current_row())); } diff --git a/src/core/mpris2.h b/src/core/mpris2.h index b165260f..416c3d87 100644 --- a/src/core/mpris2.h +++ b/src/core/mpris2.h @@ -117,6 +117,9 @@ class Mpris2 : public QObject { Q_PROPERTY(QStringList Orderings READ Orderings) Q_PROPERTY(MaybePlaylist ActivePlaylist READ ActivePlaylist) + // strawberry specific additional property to extend MPRIS Player interface + Q_PROPERTY(double Rating READ Rating WRITE SetRating) + // Root Properties bool CanQuit() const; bool CanRaise() const; @@ -144,6 +147,8 @@ class Mpris2 : public QObject { bool Shuffle() const; void SetShuffle(bool enable); QVariantMap Metadata() const; + double Rating() const; + void SetRating(double rating); double Volume() const; void SetVolume(const double volume); qint64 Position() const; diff --git a/src/dbus/org.mpris.MediaPlayer2.Player.xml b/src/dbus/org.mpris.MediaPlayer2.Player.xml index 711a74e4..752b477c 100644 --- a/src/dbus/org.mpris.MediaPlayer2.Player.xml +++ b/src/dbus/org.mpris.MediaPlayer2.Player.xml @@ -29,6 +29,7 @@ +