From 4325e0092d77cc2d993c7305c49d0517f3defb0e Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Tue, 13 Jul 2010 12:18:08 +0100 Subject: prep work done for scrub bar --- src/mpris-controller.vala | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/mpris-controller.vala') diff --git a/src/mpris-controller.vala b/src/mpris-controller.vala index 8dd0cc9..c3f21d8 100644 --- a/src/mpris-controller.vala +++ b/src/mpris-controller.vala @@ -56,8 +56,8 @@ public class MprisController : GLib.Object status st = this.mpris_player.GetStatus(); int play_state = st.playback; debug("GetStatusChange - play state %i", play_state); - (this.owner.custom_items[this.owner.TRANSPORT] as TransportMenuitem).change_play_state(play_state); - this.owner.custom_items[this.owner.METADATA].update(this.mpris_player.GetMetadata(), + (this.owner.custom_items[PlayerController.widget_order.TRANSPORT] as TransportMenuitem).change_play_state(play_state); + this.owner.custom_items[PlayerController.widget_order.METADATA].update(this.mpris_player.GetMetadata(), MetadataMenuitem.attributes_format()); } @@ -66,8 +66,8 @@ public class MprisController : GLib.Object private void onTrackChange(dynamic DBus.Object mpris_client, HashTable ht) { debug("onTrackChange"); - this.owner.custom_items[this.owner.METADATA].reset(MetadataMenuitem.attributes_format()); - this.owner.custom_items[this.owner.METADATA].update(ht, + this.owner.custom_items[PlayerController.widget_order.METADATA].reset(MetadataMenuitem.attributes_format()); + this.owner.custom_items[PlayerController.widget_order.METADATA].update(ht, MetadataMenuitem.attributes_format()); } @@ -117,7 +117,7 @@ public class MprisController : GLib.Object Value v = Value(typeof(int)); v.set_int(play_state); ht.insert("state", v); - this.owner.custom_items[this.owner.TRANSPORT].update(ht, TransportMenuitem.attributes_format()); + this.owner.custom_items[PlayerController.widget_order.TRANSPORT].update(ht, TransportMenuitem.attributes_format()); } -- cgit v1.2.3 From bf4f73249f5b6bf4c9196f251382c5a6cec9634f Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 14 Jul 2010 18:03:32 +0100 Subject: scrub bar almost working - vala Glib value bugs again are biting me --- src/mpris-controller.vala | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/mpris-controller.vala') diff --git a/src/mpris-controller.vala b/src/mpris-controller.vala index c3f21d8..afe9190 100644 --- a/src/mpris-controller.vala +++ b/src/mpris-controller.vala @@ -71,10 +71,6 @@ public class MprisController : GLib.Object MetadataMenuitem.attributes_format()); } - /** - * TRUE => Playing - * FALSE => Paused - **/ public void transport_event(TransportMenuitem.action command) { debug("transport_event input = %i", (int)command); @@ -101,6 +97,21 @@ public class MprisController : GLib.Object } } + public void set_position(double position) + { + debug("Set position with pos (0-100) %f", position); + HashTable data = this.mpris_player.GetMetadata(); + Value? time_value = data.lookup("time"); + if(time_value == null){ + warning("Can't fetch the duration of the track therefore cant set the position"); + return; + } + uint32 total_time = time_value.get_uint32(); + debug("total time of track = %i", (int)total_time); + double new_time_position = total_time * position/100.0; + this.mpris_player.SetPosition((int)(new_time_position * 1000)); + } + public bool connected() { return (this.mpris_player != null); -- cgit v1.2.3 From 4823b3c35b8e8c1334ad947286abf0d88b6de701 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 14 Jul 2010 23:36:29 +0100 Subject: positionset now working - tested with vlc --- src/mpris-controller.vala | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src/mpris-controller.vala') diff --git a/src/mpris-controller.vala b/src/mpris-controller.vala index afe9190..f40614c 100644 --- a/src/mpris-controller.vala +++ b/src/mpris-controller.vala @@ -26,8 +26,6 @@ public class MprisController : GLib.Object public dynamic DBus.Object mpris_player{get; construct;} public PlayerController owner {get; construct;} public string mpris_interface {get; construct;} - private string name; - struct status { public int32 playback; @@ -99,17 +97,18 @@ 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 data = this.mpris_player.GetMetadata(); Value? time_value = data.lookup("time"); if(time_value == null){ warning("Can't fetch the duration of the track therefore cant set the position"); return; } - uint32 total_time = time_value.get_uint32(); - debug("total time of track = %i", (int)total_time); + uint32 total_time = time_value.get_uint(); + //debug("total time of track = %i", (int)total_time); double new_time_position = total_time * position/100.0; - this.mpris_player.SetPosition((int)(new_time_position * 1000)); + //debug("new position = %f", (new_time_position * 1000)); + this.mpris_player.PositionSet((int32)(new_time_position * 1000)); } public bool connected() -- cgit v1.2.3 From 6bab9d75b22aa21ed27e4961e6dbf4bbcdd2e94c Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Thu, 15 Jul 2010 13:23:52 +0100 Subject: label text updating according to position and duration and scrub bar positioning now working --- src/mpris-controller.vala | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/mpris-controller.vala') diff --git a/src/mpris-controller.vala b/src/mpris-controller.vala index f40614c..5e4dce2 100644 --- a/src/mpris-controller.vala +++ b/src/mpris-controller.vala @@ -50,23 +50,38 @@ public class MprisController : GLib.Object this.mpris_player.TrackChange += onTrackChange; this.mpris_player.StatusChange += onStatusChange; + initial_update(); + } + private void initial_update() + { status st = this.mpris_player.GetStatus(); int play_state = st.playback; debug("GetStatusChange - play state %i", play_state); (this.owner.custom_items[PlayerController.widget_order.TRANSPORT] as TransportMenuitem).change_play_state(play_state); this.owner.custom_items[PlayerController.widget_order.METADATA].update(this.mpris_player.GetMetadata(), MetadataMenuitem.attributes_format()); + 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()); } - private void onTrackChange(dynamic DBus.Object mpris_client, HashTable 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()); } public void transport_event(TransportMenuitem.action command) -- cgit v1.2.3 From d92a4492dcfca6030f8a9b32c111e582ba4e8f96 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Tue, 20 Jul 2010 12:24:43 +0200 Subject: play pause both graphically and functionally now working --- src/mpris-controller.vala | 57 +++++++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 34 deletions(-) (limited to 'src/mpris-controller.vala') diff --git a/src/mpris-controller.vala b/src/mpris-controller.vala index 5e4dce2..8e43131 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; @@ -69,38 +69,12 @@ public class MprisController : GLib.Object } - private void onTrackChange(dynamic DBus.Object mpris_client, HashTable 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()); - } - 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(); @@ -133,7 +107,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(); @@ -144,6 +118,21 @@ public class MprisController : GLib.Object ht.insert("state", v); this.owner.custom_items[PlayerController.widget_order.TRANSPORT].update(ht, TransportMenuitem.attributes_format()); } - + + private void onTrackChange(dynamic DBus.Object mpris_client, HashTable 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()); + } + } -- cgit v1.2.3 From 928fbf4bab7659ec523ae16adc052ca42fece589 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 21 Jul 2010 11:56:15 +0200 Subject: scrub bar working --- src/mpris-controller.vala | 1 + 1 file changed, 1 insertion(+) (limited to 'src/mpris-controller.vala') diff --git a/src/mpris-controller.vala b/src/mpris-controller.vala index 8e43131..9586b3d 100644 --- a/src/mpris-controller.vala +++ b/src/mpris-controller.vala @@ -117,6 +117,7 @@ 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 ht) -- cgit v1.2.3 From cf97680d74aa9ab00cd55359d9e16acdad9f057f Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Thu, 22 Jul 2010 19:56:43 +0200 Subject: trying to set the time line --- src/mpris-controller.vala | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/mpris-controller.vala') diff --git a/src/mpris-controller.vala b/src/mpris-controller.vala index 9586b3d..8ecd20a 100644 --- a/src/mpris-controller.vala +++ b/src/mpris-controller.vala @@ -65,8 +65,7 @@ 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()); - + scrub.update_position(this.mpris_player.PositionGet()); } public void transport_event(TransportMenuitem.action command) @@ -86,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 data = this.mpris_player.GetMetadata(); Value? time_value = data.lookup("time"); if(time_value == null){ @@ -94,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() -- cgit v1.2.3