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 @@
+