aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConor Curran <conor.curran@canonical.com>2011-03-14 13:04:21 +0000
committerConor Curran <conor.curran@canonical.com>2011-03-14 13:04:21 +0000
commit5e227767d23fd43fd5504e42d3b80b8076effa15 (patch)
tree0ad11acf2b9ef62da9649238fb07fdaf742e2dcd
parent014ef9d63fdf4d7213f1a9481d0566a63daa7543 (diff)
downloadayatana-indicator-sound-5e227767d23fd43fd5504e42d3b80b8076effa15.tar.gz
ayatana-indicator-sound-5e227767d23fd43fd5504e42d3b80b8076effa15.tar.bz2
ayatana-indicator-sound-5e227767d23fd43fd5504e42d3b80b8076effa15.zip
expose transport when closed and cache intended action
-rw-r--r--src/player-controller.vala7
-rw-r--r--src/sound-service.c2
-rw-r--r--src/transport-menu-item.vala55
-rw-r--r--vapi/common-defs.vapi3
4 files changed, 52 insertions, 15 deletions
diff --git a/src/player-controller.vala b/src/player-controller.vala
index 3ce121e..7e5f38e 100644
--- a/src/player-controller.vala
+++ b/src/player-controller.vala
@@ -145,8 +145,6 @@ public class PlayerController : GLib.Object
PlaylistsMenuitem playlists_menuitem = this.custom_items[widget_order.PLAYLISTS] as PlaylistsMenuitem;
if(this.current_state != state.CONNECTED){
- this.custom_items[widget_order.TRANSPORT].property_set_bool(MENUITEM_PROP_VISIBLE,
- false);
this.custom_items[widget_order.METADATA].property_set_bool(MENUITEM_PROP_VISIBLE,
false);
playlists_menuitem.root_item.property_set_bool ( MENUITEM_PROP_VISIBLE,
@@ -155,8 +153,9 @@ public class PlayerController : GLib.Object
}
this.custom_items[widget_order.METADATA].property_set_bool(MENUITEM_PROP_VISIBLE,
this.custom_items[widget_order.METADATA].populated(MetadataMenuitem.attributes_format()));
- this.custom_items[widget_order.TRANSPORT].property_set_bool(MENUITEM_PROP_VISIBLE,
- true);
+ TransportMenuitem transport = this.custom_items[widget_order.TRANSPORT] as TransportMenuitem;
+ transport.handle_cached_action();
+
playlists_menuitem.root_item.property_set_bool ( MENUITEM_PROP_VISIBLE,
this.use_playlists );
}
diff --git a/src/sound-service.c b/src/sound-service.c
index cfc0b7e..9f44624 100644
--- a/src/sound-service.c
+++ b/src/sound-service.c
@@ -39,8 +39,10 @@ service_shutdown (IndicatorService *service, gpointer user_data)
{
if (mainloop != NULL) {
g_debug("Service shutdown !");
+/*
close_pulse_activites();
g_main_loop_quit(mainloop);
+*/
}
return;
}
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<string> attributes_format()
@@ -63,4 +98,4 @@ public class TransportMenuitem : PlayerItem
return attrs;
}
-} \ No newline at end of file
+}
diff --git a/vapi/common-defs.vapi b/vapi/common-defs.vapi
index 7cac0de..9aca32d 100644
--- a/vapi/common-defs.vapi
+++ b/vapi/common-defs.vapi
@@ -59,7 +59,8 @@ namespace Transport{
PLAY_PAUSE,
NEXT,
REWIND,
- FORWIND
+ FORWIND,
+ NO_ACTION
}
public enum State{
PLAYING,