diff --git a/src/mpris.vala b/src/mpris.vala index 7d69bd9..cb5fa48 100644 --- a/src/mpris.vala +++ b/src/mpris.vala @@ -72,6 +72,8 @@ class MprisPlayer : Object { [CCode (notify = false)] public bool can_control { get { return true; } } + internal Subsonic.Client api { get; set; } + internal MprisPlayer (DBusConnection conn, Playbin playbin) { playbin.bind_property ( "state", @@ -128,7 +130,7 @@ class MprisPlayer : Object { var metadata = new HashTable (null, null); metadata["mpris:trackid"] = new ObjectPath (@"/eu/callcc/audrey/track/$(song.id)"); metadata["mpris:length"] = (int64) song.duration * 1000000; - // TODO: metadata["mpris:artUrl"] = + if (this.api != null) metadata["mpris:artUrl"] = this.api.cover_art_uri (song.id); metadata["xesam:album"] = song.album; metadata["xesam:artist"] = new string[] {song.artist}; if (song.genre != null) metadata["xesam:genre"] = song.genre; diff --git a/src/ui/window.vala b/src/ui/window.vala index 934b9ae..fbfba51 100644 --- a/src/ui/window.vala +++ b/src/ui/window.vala @@ -29,6 +29,9 @@ class Ui.Window : Adw.ApplicationWindow { Object (application: app); } + private Mpris mpris; + private MprisPlayer mpris_player; + private void now_playing (Subsonic.Song song) { this.song = song; // api.scrobble.begin (this.song.id); TODO @@ -62,8 +65,11 @@ class Ui.Window : Adw.ApplicationWindow { BusNameOwnerFlags.NONE, (conn) => { try { - conn.register_object ("/org/mpris/MediaPlayer2", new Mpris (this)); - conn.register_object ("/org/mpris/MediaPlayer2", new MprisPlayer (conn, this.playbin)); + this.mpris = new Mpris (this); + this.mpris_player = new MprisPlayer (conn, this.playbin); + + conn.register_object ("/org/mpris/MediaPlayer2", this.mpris); + conn.register_object ("/org/mpris/MediaPlayer2", this.mpris_player); } catch (IOError e) { error ("could not register dbus service: %s", e.message); } @@ -76,6 +82,7 @@ class Ui.Window : Adw.ApplicationWindow { this.setup.connected.connect ((api) => { this.api = api; this.playbin.api = api; + this.mpris_player.api = api; this.can_click_shuffle_all = true; }); this.setup.load ();