aboutsummaryrefslogtreecommitdiff
path: root/src/transport-menu-item.vala
diff options
context:
space:
mode:
authorKen VanDine <ken.vandine@canonical.com>2011-03-23 12:03:02 -0400
committerKen VanDine <ken.vandine@canonical.com>2011-03-23 12:03:02 -0400
commitf05dff9b5d6c5e921f3056c142068ea7f6f41486 (patch)
tree9be3a5ff03f17db4a06e56815ad68de4c588c1ec /src/transport-menu-item.vala
parent7619eab48daaa739fb3418237c693b7b463182f0 (diff)
parentfb3a829f4bca4f16c51cb5305b941928296c52a7 (diff)
downloadayatana-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.vala56
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
+}