diff options
author | Ken VanDine <ken.vandine@canonical.com> | 2011-03-23 12:03:02 -0400 |
---|---|---|
committer | Ken VanDine <ken.vandine@canonical.com> | 2011-03-23 12:03:02 -0400 |
commit | f05dff9b5d6c5e921f3056c142068ea7f6f41486 (patch) | |
tree | 9be3a5ff03f17db4a06e56815ad68de4c588c1ec /src/transport-menu-item.vala | |
parent | 7619eab48daaa739fb3418237c693b7b463182f0 (diff) | |
parent | fb3a829f4bca4f16c51cb5305b941928296c52a7 (diff) | |
download | ayatana-indicator-sound-f05dff9b5d6c5e921f3056c142068ea7f6f41486.tar.gz ayatana-indicator-sound-f05dff9b5d6c5e921f3056c142068ea7f6f41486.tar.bz2 ayatana-indicator-sound-f05dff9b5d6c5e921f3056c142068ea7f6f41486.zip |
Import upstream version 0.6.5
Diffstat (limited to 'src/transport-menu-item.vala')
-rw-r--r-- | src/transport-menu-item.vala | 56 |
1 files changed, 43 insertions, 13 deletions
diff --git a/src/transport-menu-item.vala b/src/transport-menu-item.vala index 67e9562..ec41dd7 100644 --- a/src/transport-menu-item.vala +++ b/src/transport-menu-item.vala @@ -23,18 +23,44 @@ 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; + } + + /** + 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){ + Timeout.add_seconds (1, send_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) + 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); } @@ -43,17 +69,21 @@ 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() );*/ 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){ + this.owner.mpris_bridge.transport_update((Transport.Action)input); + } + else{ + this.cached_action = (Transport.Action)input; + this.owner.instantiate(); + this.property_set_int (MENUITEM_PLAY_STATE, (int)Transport.State.LAUNCHING); + } } public static HashSet<string> attributes_format() @@ -63,4 +93,4 @@ public class TransportMenuitem : PlayerItem return attrs; } -}
\ No newline at end of file +} |