Unverified Commit c05acfa8 authored by Erik Reider's avatar Erik Reider Committed by GitHub

Fixed mpDris2 mpris issues (#253)

parent 31002496
...@@ -68,12 +68,12 @@ namespace SwayNotificationCenter.Widgets.Mpris { ...@@ -68,12 +68,12 @@ namespace SwayNotificationCenter.Widgets.Mpris {
[DBus (name = "org.mpris.MediaPlayer2.Player")] [DBus (name = "org.mpris.MediaPlayer2.Player")]
public interface MprisMediaPlayer : MprisProps { public interface MprisMediaPlayer : MprisProps {
public abstract void next () throws Error; public abstract async void next () throws Error;
public abstract void previous () throws Error; public abstract async void previous () throws Error;
public abstract void pause () throws Error; public abstract async void pause () throws Error;
public abstract void play_pause () throws Error; public abstract async void play_pause () throws Error;
public abstract void stop () throws Error; public abstract async void stop () throws Error;
public abstract void play () throws Error; public abstract async void play () throws Error;
public abstract string playback_status { owned get; } public abstract string playback_status { owned get; }
public abstract HashTable<string, Variant> metadata { owned get; } public abstract HashTable<string, Variant> metadata { owned get; }
......
...@@ -77,29 +77,21 @@ namespace SwayNotificationCenter.Widgets.Mpris { ...@@ -77,29 +77,21 @@ namespace SwayNotificationCenter.Widgets.Mpris {
}); });
// Prev // Prev
button_prev.clicked.connect (() => { button_prev.clicked.connect (() => {
try { source.media_player.previous.begin (() => {
source.media_player.previous (); update_buttons (source.media_player.metadata);
} catch (Error e) { });
error ("Previous Error: %s", e.message);
}
}); });
// Next // Next
button_next.clicked.connect (() => { button_next.clicked.connect (() => {
try { source.media_player.next.begin (() => {
source.media_player.next (); update_buttons (source.media_player.metadata);
} catch (Error e) { });
error ("Next Error: %s", e.message);
}
}); });
// Play/Pause // Play/Pause
button_play_pause.clicked.connect (() => { button_play_pause.clicked.connect (() => {
try { source.media_player.play_pause.begin (() => {
source.media_player.play_pause (); update_buttons (source.media_player.metadata);
// Wait until dbus value has updated });
button_play_pause.sensitive = false;
} catch (Error e) {
error ("PlayPause Error: %s", e.message);
}
}); });
} }
...@@ -137,11 +129,7 @@ namespace SwayNotificationCenter.Widgets.Mpris { ...@@ -137,11 +129,7 @@ namespace SwayNotificationCenter.Widgets.Mpris {
update_button_forward (metadata); update_button_forward (metadata);
break; break;
case "CanControl": case "CanControl":
update_button_shuffle (metadata); update_buttons (metadata);
update_button_repeat (metadata);
update_button_prev (metadata);
update_button_forward (metadata);
update_button_play_pause (metadata);
break; break;
} }
} }
...@@ -163,6 +151,11 @@ namespace SwayNotificationCenter.Widgets.Mpris { ...@@ -163,6 +151,11 @@ namespace SwayNotificationCenter.Widgets.Mpris {
// Subtitle // Subtitle
update_sub_title (metadata); update_sub_title (metadata);
// Update the buttons
update_buttons (metadata);
}
private void update_buttons (HashTable<string, Variant> metadata) {
// Shuffle check // Shuffle check
update_button_shuffle (metadata); update_button_shuffle (metadata);
...@@ -294,6 +287,8 @@ namespace SwayNotificationCenter.Widgets.Mpris { ...@@ -294,6 +287,8 @@ namespace SwayNotificationCenter.Widgets.Mpris {
} }
private void update_button_shuffle (HashTable<string, Variant> metadata) { private void update_button_shuffle (HashTable<string, Variant> metadata) {
if (!(button_shuffle is Gtk.Widget)) return;
if (source.media_player.can_control) { if (source.media_player.can_control) {
// Shuffle check // Shuffle check
Variant ? shuffle = source.get_mpris_player_prop ("Shuffle"); Variant ? shuffle = source.get_mpris_player_prop ("Shuffle");
...@@ -312,15 +307,19 @@ namespace SwayNotificationCenter.Widgets.Mpris { ...@@ -312,15 +307,19 @@ namespace SwayNotificationCenter.Widgets.Mpris {
} }
private void update_button_prev (HashTable<string, Variant> metadata) { private void update_button_prev (HashTable<string, Variant> metadata) {
if (!(button_prev is Gtk.Widget)) return;
button_prev.set_sensitive (source.media_player.can_go_previous button_prev.set_sensitive (source.media_player.can_go_previous
&& source.media_player.can_control); && source.media_player.can_control);
} }
private void update_button_play_pause (HashTable<string, Variant> metadata) { private void update_button_play_pause (HashTable<string, Variant> metadata) {
if (!(button_play_pause is Gtk.Widget)) return;
string icon_name; string icon_name;
bool check; bool check;
switch (source.media_player.playback_status) { switch (source.media_player.playback_status) {
case "Playing" : case "Playing":
icon_name = ICON_PAUSE; icon_name = ICON_PAUSE;
check = source.media_player.can_pause; check = source.media_player.can_pause;
break; break;
...@@ -336,11 +335,15 @@ namespace SwayNotificationCenter.Widgets.Mpris { ...@@ -336,11 +335,15 @@ namespace SwayNotificationCenter.Widgets.Mpris {
} }
private void update_button_forward (HashTable<string, Variant> metadata) { private void update_button_forward (HashTable<string, Variant> metadata) {
if (!(button_next is Gtk.Widget)) return;
button_next.set_sensitive (source.media_player.can_go_next button_next.set_sensitive (source.media_player.can_go_next
&& source.media_player.can_control); && source.media_player.can_control);
} }
private void update_button_repeat (HashTable<string, Variant> metadata) { private void update_button_repeat (HashTable<string, Variant> metadata) {
if (!(button_repeat is Gtk.Widget)) return;
if (source.media_player.can_control) { if (source.media_player.can_control) {
// Repeat check // Repeat check
Variant ? repeat = source.get_mpris_player_prop ("LoopStatus"); Variant ? repeat = source.get_mpris_player_prop ("LoopStatus");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment