From 10b41d66a3357b8918f091d3a7fdaf2d8f05d66c Mon Sep 17 00:00:00 2001
From: Kevin Whitaker <eyecreate@eyecreate.org>
Date: Fri, 12 Apr 2019 18:09:52 -0400
Subject: [PATCH] Hook up notify slots for some elements of mpris.

---
 src/minimediaplayer.cpp |  1 +
 src/minimediaplayer.h   |  1 +
 src/mprisinterface.cpp  | 22 ++++++++++++++++++++++
 src/mprisinterface.h    | 19 ++++++++++++++-----
 4 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/src/minimediaplayer.cpp b/src/minimediaplayer.cpp
index 1a2d17d..f257a2d 100644
--- a/src/minimediaplayer.cpp
+++ b/src/minimediaplayer.cpp
@@ -28,6 +28,7 @@ MiniMediaPlayer::MiniMediaPlayer(QObject *parent) : QObject(parent)
     connect(m_player,SIGNAL(stateChanged(QMediaPlayer::State)),this,SLOT(mediaStateChanged(QMediaPlayer::State)));
     connect(m_player,SIGNAL(durationChanged(qint64)),this,SLOT(durationChanged(qint64)));
     connect(m_player,SIGNAL(positionChanged(qint64)),this,SLOT(positionChanged(qint64)));
+    connect(m_player,&QMediaPlayer::volumeChanged,this,&MiniMediaPlayer::mediaVolumeChanged);
 }
 
 
diff --git a/src/minimediaplayer.h b/src/minimediaplayer.h
index 51a73ee..3da3d61 100644
--- a/src/minimediaplayer.h
+++ b/src/minimediaplayer.h
@@ -56,6 +56,7 @@ signals:
     void playlistChanged(QStringList trackTitles);
     void trackDurationChanged(qint64 length);
     void trackPositionChanged(qint64 position);
+    void mediaVolumeChanged(int volume);
     
 private slots:
     void mediaStatusChanged(QMediaPlayer::MediaStatus status);
diff --git a/src/mprisinterface.cpp b/src/mprisinterface.cpp
index df9edc3..218d0c3 100644
--- a/src/mprisinterface.cpp
+++ b/src/mprisinterface.cpp
@@ -56,6 +56,28 @@ QStringList MPRISInterface::SupportedUriSchemes()
 
 MPRISPlayerInterface::MPRISPlayerInterface(MiniMediaPlayer *player,QObject* parent) : QDBusAbstractAdaptor(parent),player(player)
 {
+    //Connected Changed values from media player.
+    
+}
+
+void MPRISPlayerInterface::mediaPositionChanged(qint64 position)
+{
+    emit positionChanged(Position());
+}
+
+void MPRISPlayerInterface::mediaStateChanged(QMediaPlayer::State state)
+{
+    emit playbackStatusChanged(PlaybackStatus());
+}
+
+void MPRISPlayerInterface::mediaVolumeChanged(int volume)
+{
+    emit volumeChanged(Volume());
+}
+
+void MPRISPlayerInterface::mediaPlaylistChanged(QStringList playlist)
+{
+    emit metadataChanged(Metadata());
 }
 
 bool MPRISPlayerInterface::CanControl()
diff --git a/src/mprisinterface.h b/src/mprisinterface.h
index fae223f..361f524 100644
--- a/src/mprisinterface.h
+++ b/src/mprisinterface.h
@@ -54,11 +54,11 @@ class MPRISPlayerInterface : public QDBusAbstractAdaptor
 {
     Q_OBJECT
     Q_CLASSINFO("D-Bus Interface","org.mpris.MediaPlayer2.Player")
-    Q_PROPERTY(QString PlaybackStatus READ PlaybackStatus)
+    Q_PROPERTY(QString PlaybackStatus READ PlaybackStatus NOTIFY playbackStatusChanged)
     Q_PROPERTY(double Rate READ Rate WRITE setRate)
-    Q_PROPERTY(QMap<QString,QDBusVariant>Metadata READ Metadata)
-    Q_PROPERTY(double Volume READ Volume WRITE setVolume)
-    Q_PROPERTY(qlonglong Position READ Position)
+    Q_PROPERTY(QMap<QString,QDBusVariant>Metadata READ Metadata NOTIFY metadataChanged)
+    Q_PROPERTY(double Volume READ Volume WRITE setVolume NOTIFY volumeChanged)
+    Q_PROPERTY(qlonglong Position READ Position NOTIFY positionChanged)
     Q_PROPERTY(double MinimumRate READ MinimumRate)
     Q_PROPERTY(double MaximumRate READ MaximumRate)
     Q_PROPERTY(bool CanGoNext READ CanGoNext)
@@ -95,7 +95,16 @@ public slots:
     Q_NOREPLY void SetPosition(QDBusObjectPath trackId,qlonglong position) {};
     Q_NOREPLY void OpenUri(QString uri);
 signals:
-    void Seeked(qlonglong position);
+    void Seeked(qlonglong position); //Not used
+    void playbackStatusChanged(QString status);
+    void metadataChanged(QMap<QString,QDBusVariant> metadata);
+    void volumeChanged(double volume);
+    void positionChanged(qlonglong position);
+private slots:
+    void mediaStateChanged(QMediaPlayer::State state);
+    void mediaPositionChanged(qint64 position);
+    void mediaVolumeChanged(int volume);
+    void mediaPlaylistChanged(QStringList playlist);
 private:
     MiniMediaPlayer *player;
 };
-- 
GitLab