From 5e227767d23fd43fd5504e42d3b80b8076effa15 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 14 Mar 2011 13:04:21 +0000 Subject: expose transport when closed and cache intended action --- src/transport-menu-item.vala | 55 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 10 deletions(-) (limited to 'src/transport-menu-item.vala') diff --git a/src/transport-menu-item.vala b/src/transport-menu-item.vala index 67e9562..0bcd23a 100644 --- a/src/transport-menu-item.vala +++ b/src/transport-menu-item.vala @@ -23,12 +23,38 @@ using DbusmenuTransport; using Transport; public class TransportMenuitem : PlayerItem -{ - +{ + private Transport.Action cached_action; + + private bool running { + get{ + return this.owner.current_state == PlayerController.state.CONNECTED; + } + } + public TransportMenuitem(PlayerController parent) { Object(item_type: MENUITEM_TYPE, owner: parent); - this.property_set_int(MENUITEM_PLAY_STATE, 1); + } + construct{ + this.property_set_int(MENUITEM_PLAY_STATE, (int)Transport.State.PAUSED); + this.cached_action = Transport.Action.NO_ACTION; + } + + public void handle_cached_action() + { + if (this.cached_action != Transport.Action.NO_ACTION){ + debug ("TRYING TO FIRE OF A CACHED ACTION %i", (int)this.cached_action); + Timeout.add_seconds (2, send_cached_action); + //this.owner.mpris_bridge.transport_update(this.cached_action); + } + } + + private bool send_cached_action() + { + this.owner.mpris_bridge.transport_update(this.cached_action); + this.cached_action = Transport.Action.NO_ACTION; + return false; } public void change_play_state(Transport.State update) @@ -43,17 +69,26 @@ public class TransportMenuitem : PlayerItem Variant input_value, uint timestamp) { - /*debug ( "Handle event in transport menu item - input variant is of type %s", - input_value.get_type_string() );*/ + debug ( "Handle event in transport menu item - is the player actually running %s", + this.running.to_string() ); Variant v = input_value; - if ( input_value.is_of_type ( VariantType.VARIANT) ){ + if ( input_value.is_of_type (VariantType.VARIANT)){ v = input_value.get_variant(); } int32 input = v.get_int32(); - //debug("transport menu item -> handle_event with value %s", input.to_string()); - //debug("transport owner name = %s", this.owner.app_info.get_name()); - this.owner.mpris_bridge.transport_update((Transport.Action)input); + + if (this.running == true){ + //debug("transport menu item -> handle_event with value %s", input.to_string()); + //debug("transport owner name = %s", this.owner.app_info.get_name()); + this.owner.mpris_bridge.transport_update((Transport.Action)input); + } + else{ + debug("transport cached action = %i", (Transport.Action)input); + + this.cached_action = (Transport.Action)input; + this.owner.instantiate(); + } } public static HashSet attributes_format() @@ -63,4 +98,4 @@ public class TransportMenuitem : PlayerItem return attrs; } -} \ No newline at end of file +} -- cgit v1.2.3 From 8149cc1e2de25648a2a4271e503bdd6184b7af50 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 14 Mar 2011 15:41:18 +0000 Subject: working as good as this will ever be considering the poor startup performances of clients --- src/transport-menu-item.vala | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) (limited to 'src/transport-menu-item.vala') diff --git a/src/transport-menu-item.vala b/src/transport-menu-item.vala index 0bcd23a..e767a90 100644 --- a/src/transport-menu-item.vala +++ b/src/transport-menu-item.vala @@ -44,9 +44,7 @@ public class TransportMenuitem : PlayerItem public void handle_cached_action() { if (this.cached_action != Transport.Action.NO_ACTION){ - debug ("TRYING TO FIRE OF A CACHED ACTION %i", (int)this.cached_action); - Timeout.add_seconds (2, send_cached_action); - //this.owner.mpris_bridge.transport_update(this.cached_action); + Timeout.add_seconds (4, send_cached_action); } } @@ -57,10 +55,8 @@ public class TransportMenuitem : PlayerItem return false; } - public void change_play_state(Transport.State update) + public void change_play_state (Transport.State update) { - //debug("UPDATING THE TRANSPORT DBUSMENUITEM PLAY STATE WITH VALUE %i", - // (int)update); int temp = (int)update; this.property_set_int(MENUITEM_PLAY_STATE, temp); } @@ -69,8 +65,6 @@ public class TransportMenuitem : PlayerItem Variant input_value, uint timestamp) { - debug ( "Handle event in transport menu item - is the player actually running %s", - this.running.to_string() ); Variant v = input_value; if ( input_value.is_of_type (VariantType.VARIANT)){ v = input_value.get_variant(); @@ -79,13 +73,9 @@ public class TransportMenuitem : PlayerItem int32 input = v.get_int32(); if (this.running == true){ - //debug("transport menu item -> handle_event with value %s", input.to_string()); - //debug("transport owner name = %s", this.owner.app_info.get_name()); this.owner.mpris_bridge.transport_update((Transport.Action)input); } else{ - debug("transport cached action = %i", (Transport.Action)input); - this.cached_action = (Transport.Action)input; this.owner.instantiate(); } -- cgit v1.2.3 From 4c7f07ce4106f7e0f4e04ca034fd781b309e2985 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 16 Mar 2011 17:24:34 +0000 Subject: working as expected --- src/transport-menu-item.vala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/transport-menu-item.vala') diff --git a/src/transport-menu-item.vala b/src/transport-menu-item.vala index e767a90..e383b0b 100644 --- a/src/transport-menu-item.vala +++ b/src/transport-menu-item.vala @@ -43,8 +43,9 @@ public class TransportMenuitem : PlayerItem public void handle_cached_action() { - if (this.cached_action != Transport.Action.NO_ACTION){ - Timeout.add_seconds (4, send_cached_action); + if (this.cached_action != Transport.Action.NO_ACTION){ + //send_cached_action(); + Timeout.add_seconds (1, send_cached_action); } } @@ -78,6 +79,7 @@ public class TransportMenuitem : PlayerItem else{ this.cached_action = (Transport.Action)input; this.owner.instantiate(); + this.property_set_int (MENUITEM_PLAY_STATE, (int)Transport.State.LAUNCHING); } } -- cgit v1.2.3 From b6267620f79b62b288a66026c2aebb44b17efcb2 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 21 Mar 2011 15:07:03 +0000 Subject: remove commented out method --- src/transport-menu-item.vala | 1 - 1 file changed, 1 deletion(-) (limited to 'src/transport-menu-item.vala') diff --git a/src/transport-menu-item.vala b/src/transport-menu-item.vala index e383b0b..6728cd1 100644 --- a/src/transport-menu-item.vala +++ b/src/transport-menu-item.vala @@ -44,7 +44,6 @@ public class TransportMenuitem : PlayerItem public void handle_cached_action() { if (this.cached_action != Transport.Action.NO_ACTION){ - //send_cached_action(); Timeout.add_seconds (1, send_cached_action); } } -- cgit v1.2.3 From d737d7c43b907929fc62c294a0962284f097853d Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 21 Mar 2011 15:51:23 +0000 Subject: add an important todo to remind myself of the need to get that timeout removed --- src/transport-menu-item.vala | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/transport-menu-item.vala') diff --git a/src/transport-menu-item.vala b/src/transport-menu-item.vala index 6728cd1..ec41dd7 100644 --- a/src/transport-menu-item.vala +++ b/src/transport-menu-item.vala @@ -41,6 +41,10 @@ public class TransportMenuitem : PlayerItem this.cached_action = Transport.Action.NO_ACTION; } + /** + Please remove this timeout when the default player can handle mpris commands + immediately once it raises its dbus interface + **/ public void handle_cached_action() { if (this.cached_action != Transport.Action.NO_ACTION){ -- cgit v1.2.3