diff options
Diffstat (limited to 'src/mpris-controller.vala')
-rw-r--r-- | src/mpris-controller.vala | 71 |
1 files changed, 31 insertions, 40 deletions
diff --git a/src/mpris-controller.vala b/src/mpris-controller.vala index 5e4dce2..8ecd20a 100644 --- a/src/mpris-controller.vala +++ b/src/mpris-controller.vala @@ -29,9 +29,9 @@ public class MprisController : GLib.Object struct status { public int32 playback; - //public int32 shuffle; // Not used just yet - //public int32 repeat; - //public int32 endless; + public int32 shuffle; + public int32 repeat; + public int32 endless; } public MprisController(PlayerController ctrl, string inter="org.freedesktop.MediaPlayer"){ @@ -46,7 +46,7 @@ public class MprisController : GLib.Object } this.mpris_player = this.connection.get_object ("org.mpris.".concat(this.owner.name.down()) , "/Player", this.mpris_interface); - debug("just attempting to establish an mpris connection to %s, %s, %s", "org.mpris.".concat(this.owner.name.down()) , "/Player", this.mpris_interface); + debug("Attempting to establish an mpris connection to %s, %s, %s", "org.mpris.".concat(this.owner.name.down()) , "/Player", this.mpris_interface); this.mpris_player.TrackChange += onTrackChange; this.mpris_player.StatusChange += onStatusChange; @@ -65,42 +65,15 @@ public class MprisController : GLib.Object ScrubMenuitem.attributes_format()); // temporary fix ScrubMenuitem scrub = this.owner.custom_items[PlayerController.widget_order.SCRUB] as ScrubMenuitem; - scrub.update_position(this.mpris_player.PositionGet()); - - } - - private void onTrackChange(dynamic DBus.Object mpris_client, HashTable<string,Value?> ht) - { - debug("onTrackChange"); - this.owner.custom_items[PlayerController.widget_order.METADATA].reset(MetadataMenuitem.attributes_format()); - this.owner.custom_items[PlayerController.widget_order.SCRUB].reset(ScrubMenuitem.attributes_format()); - this.owner.custom_items[PlayerController.widget_order.METADATA].update(ht, - MetadataMenuitem.attributes_format()); - debug("about to update the duration on the scrub bar"); - this.owner.custom_items[PlayerController.widget_order.SCRUB].update(this.mpris_player.GetMetadata(), - ScrubMenuitem.attributes_format()); - // temporary fix - ScrubMenuitem scrub = this.owner.custom_items[PlayerController.widget_order.SCRUB] as ScrubMenuitem; - scrub.update_position(this.mpris_player.PositionGet()); + scrub.update_position(this.mpris_player.PositionGet()); } public void transport_event(TransportMenuitem.action command) { debug("transport_event input = %i", (int)command); if(command == TransportMenuitem.action.PLAY_PAUSE){ - status st = this.mpris_player.GetStatus(); - bool play_state = st.playback == 1; - debug("toggle_playback - initial play state %i", (int)play_state); - bool new_play_state = !play_state; - debug("toggle_playback - new play state %i", (int)new_play_state); - if(new_play_state == true){ - debug("about to play"); - this.mpris_player.Play(); - } - else{ - debug("about to pause"); - this.mpris_player.Pause(); - } + debug("transport_event PLAY_PAUSE"); + this.mpris_player.Pause(); } else if(command == TransportMenuitem.action.PREVIOUS){ this.mpris_player.Prev(); @@ -112,7 +85,7 @@ public class MprisController : GLib.Object public void set_position(double position) { - //debug("Set position with pos (0-100) %f", position); + debug("Set position with pos (0-100) %f", position); HashTable<string, Value?> data = this.mpris_player.GetMetadata(); Value? time_value = data.lookup("time"); if(time_value == null){ @@ -120,10 +93,12 @@ public class MprisController : GLib.Object return; } uint32 total_time = time_value.get_uint(); - //debug("total time of track = %i", (int)total_time); + debug("total time of track = %i", (int)total_time); double new_time_position = total_time * position/100.0; - //debug("new position = %f", (new_time_position * 1000)); - this.mpris_player.PositionSet((int32)(new_time_position * 1000)); + debug("new position = %f", (new_time_position * 1000)); + this.mpris_player.PositionSet((int32)(new_time_position)); + ScrubMenuitem scrub = this.owner.custom_items[PlayerController.widget_order.SCRUB] as ScrubMenuitem; + scrub.update_position(this.mpris_player.PositionGet()); } public bool connected() @@ -133,7 +108,7 @@ public class MprisController : GLib.Object private void onStatusChange(dynamic DBus.Object mpris_client, status st) { - debug("onStatusChange - signal received"); + debug("onStatusChange - signal received"); status* status = &st; unowned ValueArray ar = (ValueArray)status; int play_state = ar.get_nth(0).get_int(); @@ -143,7 +118,23 @@ public class MprisController : GLib.Object v.set_int(play_state); ht.insert("state", v); this.owner.custom_items[PlayerController.widget_order.TRANSPORT].update(ht, TransportMenuitem.attributes_format()); + this.owner.custom_items[PlayerController.widget_order.SCRUB].update(ht, ScrubMenuitem.attributes_format()); } - + + private void onTrackChange(dynamic DBus.Object mpris_client, HashTable<string,Value?> ht) + { + debug("onTrackChange"); + this.owner.custom_items[PlayerController.widget_order.METADATA].reset(MetadataMenuitem.attributes_format()); + this.owner.custom_items[PlayerController.widget_order.SCRUB].reset(ScrubMenuitem.attributes_format()); + this.owner.custom_items[PlayerController.widget_order.METADATA].update(ht, + MetadataMenuitem.attributes_format()); + debug("about to update the duration on the scrub bar"); + this.owner.custom_items[PlayerController.widget_order.SCRUB].update(this.mpris_player.GetMetadata(), + ScrubMenuitem.attributes_format()); + // temporary fix + ScrubMenuitem scrub = this.owner.custom_items[PlayerController.widget_order.SCRUB] as ScrubMenuitem; + scrub.update_position(this.mpris_player.PositionGet()); + } + } |