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/player-controller.vala | 7 +++--- src/sound-service.c | 2 ++ src/transport-menu-item.vala | 55 ++++++++++++++++++++++++++++++++++++-------- vapi/common-defs.vapi | 3 ++- 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 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, -- 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/player-controller.vala | 3 ++- src/sound-service.c | 6 ++---- src/transport-menu-item.vala | 14 ++------------ 3 files changed, 6 insertions(+), 17 deletions(-) diff --git a/src/player-controller.vala b/src/player-controller.vala index 7e5f38e..020109d 100644 --- a/src/player-controller.vala +++ b/src/player-controller.vala @@ -133,7 +133,8 @@ public class PlayerController : GLib.Object public void hibernate() { update_state(PlayerController.state.OFFLINE); - this.custom_items[widget_order.TRANSPORT].reset(TransportMenuitem.attributes_format()); + TransportMenuitem transport = this.custom_items[widget_order.TRANSPORT] as TransportMenuitem; + transport.change_play_state (Transport.State.PAUSED); this.custom_items[widget_order.METADATA].reset(MetadataMenuitem.attributes_format()); TitleMenuitem title = this.custom_items[widget_order.TITLE] as TitleMenuitem; title.toggle_active_triangle(false); diff --git a/src/sound-service.c b/src/sound-service.c index 9f44624..20d9137 100644 --- a/src/sound-service.c +++ b/src/sound-service.c @@ -39,10 +39,8 @@ service_shutdown (IndicatorService *service, gpointer user_data) { if (mainloop != NULL) { g_debug("Service shutdown !"); -/* - close_pulse_activites(); - g_main_loop_quit(mainloop); -*/ + close_pulse_activites(); + g_main_loop_quit(mainloop); } return; } 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/common-defs.h | 3 +- src/sound-service.c | 2 + src/transport-menu-item.vala | 6 ++- src/transport-widget.c | 104 +++++++++++++++++++++++++++++++++++++++++-- vapi/common-defs.vapi | 3 +- 5 files changed, 111 insertions(+), 7 deletions(-) diff --git a/src/common-defs.h b/src/common-defs.h index 21aab60..a3bcda0 100644 --- a/src/common-defs.h +++ b/src/common-defs.h @@ -42,7 +42,8 @@ typedef enum { typedef enum { TRANSPORT_STATE_PLAYING, - TRANSPORT_STATE_PAUSED + TRANSPORT_STATE_PAUSED, + TRANSPORT_STATE_LAUNCHING }TransportState; #define NOT_ACTIVE -1 diff --git a/src/sound-service.c b/src/sound-service.c index 20d9137..77909d1 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 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); } } diff --git a/src/transport-widget.c b/src/transport-widget.c index ef2916d..f1e7c10 100644 --- a/src/transport-widget.c +++ b/src/transport-widget.c @@ -85,6 +85,9 @@ struct _TransportWidgetPrivate gboolean has_focus; gint hold_timer; gint skip_frequency; + gint launching_timer; + gdouble launching_transparency; + gboolean fade_out; }; // TODO refactor the UI handlers, consolidate functionality between key press /release @@ -136,6 +139,7 @@ static TransportAction transport_widget_collision_detection (gint x, gint y); static void transport_widget_start_timing (TransportWidget* widget); static gboolean transport_widget_trigger_seek (gpointer userdata); static gboolean transport_widget_seek (gpointer userdata); +static gboolean transport_widget_fade_playbutton (gpointer userdata); /// Init functions ////////////////////////////////////////////////////////// @@ -168,6 +172,9 @@ transport_widget_init (TransportWidget *self) priv->has_focus = FALSE; priv->hold_timer = 0; priv->skip_frequency = 0; + priv->launching_timer = 0; + priv->launching_transparency = 1.0f; + priv->fade_out = TRUE; priv->command_coordinates = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, @@ -1733,6 +1740,59 @@ draw (GtkWidget* button, cairo_t *cr) FALSE); _finalize (cr, &cr_surf, &surf, PAUSE_X-0.5f, PAUSE_Y); } + else if(priv->current_state == TRANSPORT_STATE_LAUNCHING) + { + g_debug ("launching in draw"); + _setup (&cr_surf, &surf, PLAY_WIDTH+6, PLAY_HEIGHT+6); + _mask_play (cr_surf, + PLAY_PADDING, + PLAY_PADDING, + PLAY_WIDTH - (2*PLAY_PADDING), + PLAY_HEIGHT - (2*PLAY_PADDING)); + + double BUTTON_SHADOW_LAUNCHING[] = {color_button[3].r, + color_button[3].g, + color_button[3].b, + priv->launching_transparency}; + double BUTTON_LAUNCHING_END[] = {color_button[0].r, + color_button[0].g, + color_button[0].b, + priv->launching_transparency}; + double BUTTON_LAUNCHING_START[] = {color_button[1].r, + color_button[1].g, + color_button[1].b, + priv->launching_transparency}; + _fill (cr_surf, + PLAY_PADDING, + PLAY_PADDING, + PLAY_WIDTH - (2*PLAY_PADDING), + PLAY_HEIGHT - (2*PLAY_PADDING), + BUTTON_SHADOW_LAUNCHING, + BUTTON_SHADOW_LAUNCHING, + FALSE); + _surface_blur (surf, 3); + _finalize_repaint (cr, &cr_surf, &surf, PAUSE_X-0.5f, PAUSE_Y + 0.5f, 3); + + // draw play-button + _setup (&cr_surf, &surf, PLAY_WIDTH, PLAY_HEIGHT); + cairo_set_line_width (cr, 10.5); + cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND); + cairo_set_line_join(cr, CAIRO_LINE_JOIN_ROUND); + _mask_play (cr_surf, + PLAY_PADDING, + PLAY_PADDING, + PLAY_WIDTH - (2*PLAY_PADDING), + PLAY_HEIGHT - (2*PLAY_PADDING)); + _fill (cr_surf, + PLAY_PADDING, + PLAY_PADDING, + PLAY_WIDTH - (2*PLAY_PADDING), + PLAY_HEIGHT - (2*PLAY_PADDING), + BUTTON_LAUNCHING_START, + BUTTON_LAUNCHING_END, + FALSE); + _finalize (cr, &cr_surf, &surf, PAUSE_X-0.5f, PAUSE_Y); + } } static void @@ -1750,6 +1810,28 @@ transport_widget_set_twin_item(TransportWidget* self, (TransportState)initial_state); } +static gboolean +transport_widget_fade_playbutton (gpointer userdata) +{ + TransportWidget* bar = (TransportWidget*)userdata; + g_return_val_if_fail(IS_TRANSPORT_WIDGET(bar), FALSE); + g_debug ("fade in /out timeout"); + TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE(bar); + if (priv->launching_transparency == 1.0f){ + priv->fade_out = TRUE; + } + else if (priv->launching_transparency <= 0.3F){ + priv->fade_out = FALSE; + } + if (priv->fade_out == TRUE){ + priv->launching_transparency -= 0.05f; + } + else{ + priv->launching_transparency += 0.05f; + } + gtk_widget_queue_draw (GTK_WIDGET(bar)); + return TRUE; +} /** * transport_widget_update_state() * Callback for updates from the other side of dbus @@ -1761,12 +1843,28 @@ transport_widget_property_update(DbusmenuMenuitem* item, gchar* property, //g_debug("transport_widget_update_state - with property %s", property); TransportWidget* bar = (TransportWidget*)userdata; g_return_if_fail(IS_TRANSPORT_WIDGET(bar)); + TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE(bar); if(g_ascii_strcasecmp(DBUSMENU_TRANSPORT_MENUITEM_PLAY_STATE, property) == 0) { - int update_value = g_variant_get_int32(value); - //g_debug("transport_widget_update_state - with value %i", update_value); - transport_widget_toggle_play_pause(bar, (TransportState)update_value); + TransportState new_state = (TransportState)g_variant_get_int32(value); + //g_debug("transport_widget_update_state - with value %i", update_value); + if (new_state == TRANSPORT_STATE_LAUNCHING){ + priv->current_state = TRANSPORT_STATE_LAUNCHING; + priv->launching_timer = g_timeout_add (100, + transport_widget_fade_playbutton, + bar); + //g_debug("TransportWidget::toggle play state : %i", priv->current_state); + } + else{ + if (priv->launching_timer != 0){ + g_source_remove (priv->launching_timer); + priv->launching_timer = 0; + priv->fade_out = TRUE; + priv->launching_transparency = 1.0f; + } + transport_widget_toggle_play_pause(bar, new_state); + } } } diff --git a/vapi/common-defs.vapi b/vapi/common-defs.vapi index 9aca32d..0d28cdb 100644 --- a/vapi/common-defs.vapi +++ b/vapi/common-defs.vapi @@ -64,6 +64,7 @@ namespace Transport{ } public enum State{ PLAYING, - PAUSED + PAUSED, + LAUNCHING } } -- cgit v1.2.3 From 8418707f9e99f08b44e8cb7641ba50a110003784 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 16 Mar 2011 18:15:18 +0000 Subject: only expose the play head if the player is banshee when its hibernated@ --- src/player-controller.vala | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/player-controller.vala b/src/player-controller.vala index 020109d..86dfe9b 100644 --- a/src/player-controller.vala +++ b/src/player-controller.vala @@ -144,19 +144,25 @@ public class PlayerController : GLib.Object public void update_layout() { PlaylistsMenuitem playlists_menuitem = this.custom_items[widget_order.PLAYLISTS] as PlaylistsMenuitem; - if(this.current_state != state.CONNECTED){ - this.custom_items[widget_order.METADATA].property_set_bool(MENUITEM_PROP_VISIBLE, - false); - playlists_menuitem.root_item.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, + false ); + this.custom_items[widget_order.TRANSPORT].property_set_bool (MENUITEM_PROP_VISIBLE, + this.app_info.get_id() == "banshee-1.desktop"); return; } - this.custom_items[widget_order.METADATA].property_set_bool(MENUITEM_PROP_VISIBLE, - this.custom_items[widget_order.METADATA].populated(MetadataMenuitem.attributes_format())); - TransportMenuitem transport = this.custom_items[widget_order.TRANSPORT] as TransportMenuitem; - transport.handle_cached_action(); - + this.custom_items[widget_order.METADATA].property_set_bool (MENUITEM_PROP_VISIBLE, + this.custom_items[widget_order.METADATA].populated(MetadataMenuitem.attributes_format())); + if (this.app_info.get_id() == "banshee-1.desktop"){ + TransportMenuitem transport = this.custom_items[widget_order.TRANSPORT] as TransportMenuitem; + transport.handle_cached_action(); + } + else{ + this.custom_items[widget_order.TRANSPORT].property_set_bool (MENUITEM_PROP_VISIBLE, + true); + } playlists_menuitem.root_item.property_set_bool ( MENUITEM_PROP_VISIBLE, this.use_playlists ); } -- cgit v1.2.3 From d84e5d382f2f62e4af5d0e9f8ed993b671acc15a Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 21 Mar 2011 13:04:13 +0000 Subject: some extra trace around sliders to track the volume zero app start madness --- src/indicator-sound.c | 4 ++-- src/mpris2-controller.vala | 14 +++++++------- src/mpris2-watcher.vala | 2 +- src/player-controller.vala | 4 ++-- src/player-item.vala | 4 ++-- src/slider-menu-item.c | 38 +++++++++++++++++++++++--------------- src/sound-service.c | 6 ++---- src/transport-widget.c | 4 ++++ src/voip-input-widget.c | 4 ++-- src/volume-widget.c | 36 +++++++++++++++++++++++++++++------- src/volume-widget.h | 2 +- 11 files changed, 75 insertions(+), 43 deletions(-) diff --git a/src/indicator-sound.c b/src/indicator-sound.c index 7d74a42..042bf89 100644 --- a/src/indicator-sound.c +++ b/src/indicator-sound.c @@ -539,7 +539,7 @@ key_press_cb(GtkWidget* widget, GdkEventKey* event, gpointer data) voip_input_widget_update (VOIP_INPUT_WIDGET(priv->voip_widget), new_value); } else{ - volume_widget_update (VOLUME_WIDGET(priv->volume_widget), new_value); + volume_widget_update (VOLUME_WIDGET(priv->volume_widget), new_value, "keypress-update"); } } } @@ -660,7 +660,7 @@ indicator_sound_scroll (IndicatorObject *io, gint delta, value -= adj->step_increment; } //g_debug("indicator-sound-scroll - update slider with value %f", value); - volume_widget_update(VOLUME_WIDGET(priv->volume_widget), value); + volume_widget_update(VOLUME_WIDGET(priv->volume_widget), value, "scroll updates"); sound_state_manager_show_notification (priv->state_manager, value); } diff --git a/src/mpris2-controller.vala b/src/mpris2-controller.vala index 6129458..94c52c0 100644 --- a/src/mpris2-controller.vala +++ b/src/mpris2-controller.vala @@ -127,10 +127,10 @@ public class Mpris2Controller : GLib.Object Variant? artist_v = this.player.Metadata.lookup("xesam:artist"); if(artist_v != null){ Variant? v_artists = this.player.Metadata.lookup("xesam:artist"); - debug("artists is of type %s", v_artists.get_type_string ()); + //debug("artists is of type %s", v_artists.get_type_string ()); string display_artists; if(v_artists.get_type_string() == "s"){ - debug("SPOTIFY is that you ?"); + //debug("SPOTIFY is that you ?"); display_artists = v_artists.get_string(); } else{ @@ -138,7 +138,7 @@ public class Mpris2Controller : GLib.Object display_artists = string.joinv(", ", artists); } changed_updates.replace("xesam:artist", display_artists); - debug("artist : %s", (string)changed_updates.lookup("xesam:artist")); + //debug("artist : %s", (string)changed_updates.lookup("xesam:artist")); } return changed_updates; } @@ -226,12 +226,12 @@ public class Mpris2Controller : GLib.Object false); } catch (IOError e){ - debug("Could not fetch playlists because %s", e.message); + //debug("Could not fetch playlists because %s", e.message); return; } if( current_playlists != null ){ - debug( "Size of the playlist array = %i", current_playlists.length ); + //debug( "Size of the playlist array = %i", current_playlists.length ); PlaylistsMenuitem playlists_item = this.owner.custom_items[PlayerController.widget_order.PLAYLISTS] as PlaylistsMenuitem; playlists_item.update(current_playlists); } @@ -244,7 +244,7 @@ public class Mpris2Controller : GLib.Object private bool fetch_active_playlist() { if (this.playlists.ActivePlaylist.valid == false){ - debug(" We don't have an active playlist"); + //debug(" We don't have an active playlist"); } PlaylistsMenuitem playlists_item = this.owner.custom_items[PlayerController.widget_order.PLAYLISTS] as PlaylistsMenuitem; playlists_item.active_playlist_update ( this.playlists.ActivePlaylist.details ); @@ -257,7 +257,7 @@ public class Mpris2Controller : GLib.Object this.playlists.ActivatePlaylist.begin(path); } catch(IOError e){ - debug("Could not activate playlist %s because %s", (string)path, e.message); + //debug("Could not activate playlist %s because %s", (string)path, e.message); } } } diff --git a/src/mpris2-watcher.vala b/src/mpris2-watcher.vala index 0b37506..d508959 100644 --- a/src/mpris2-watcher.vala +++ b/src/mpris2-watcher.vala @@ -168,4 +168,4 @@ public class Mpris2Watcher : GLib.Object delete xml_doc; return result; } -} \ No newline at end of file +} diff --git a/src/player-controller.vala b/src/player-controller.vala index 86dfe9b..20479d9 100644 --- a/src/player-controller.vala +++ b/src/player-controller.vala @@ -150,12 +150,12 @@ public class PlayerController : GLib.Object playlists_menuitem.root_item.property_set_bool (MENUITEM_PROP_VISIBLE, false ); this.custom_items[widget_order.TRANSPORT].property_set_bool (MENUITEM_PROP_VISIBLE, - this.app_info.get_id() == "banshee-1.desktop"); + this.app_info.get_id() == "banshee.desktop"); return; } this.custom_items[widget_order.METADATA].property_set_bool (MENUITEM_PROP_VISIBLE, this.custom_items[widget_order.METADATA].populated(MetadataMenuitem.attributes_format())); - if (this.app_info.get_id() == "banshee-1.desktop"){ + if (this.app_info.get_id() == "banshee.desktop"){ TransportMenuitem transport = this.custom_items[widget_order.TRANSPORT] as TransportMenuitem; transport.handle_cached_action(); } diff --git a/src/player-item.vala b/src/player-item.vala index 9d07bf7..f71b166 100644 --- a/src/player-item.vala +++ b/src/player-item.vala @@ -37,7 +37,7 @@ public class PlayerItem : Dbusmenu.Menuitem public void reset(HashSet attrs){ foreach(string s in attrs){ - debug("attempting to set prop %s to EMPTY", s); + //debug("attempting to set prop %s to EMPTY", s); this.property_set_int(s, EMPTY); } } @@ -50,7 +50,7 @@ public class PlayerItem : Dbusmenu.Menuitem */ public void update(HashTable data, HashSet attributes) { - debug("PlayerItem::update()"); + //debug("PlayerItem::update()"); if(data == null){ warning("PlayerItem::Update -> The hashtable was null - just leave it!"); return; diff --git a/src/slider-menu-item.c b/src/slider-menu-item.c index 974749f..d7d08fb 100644 --- a/src/slider-menu-item.c +++ b/src/slider-menu-item.c @@ -69,7 +69,9 @@ slider_menu_item_class_init (SliderMenuItemClass *klass) static void slider_menu_item_init (SliderMenuItem *self) { +/* g_debug("Building new Slider Menu Item"); +*/ dbusmenu_menuitem_property_set( DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_TYPE, DBUSMENU_VOLUME_MENUITEM_TYPE ); @@ -101,21 +103,18 @@ handle_event (DbusmenuMenuitem * mi, GVariant * value, guint timestamp) { - GVariant* input = NULL; - input = value; - if (g_variant_is_of_type(value, G_VARIANT_TYPE_VARIANT) == TRUE) { - input = g_variant_get_variant(value); - } + g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE)); + g_return_if_fail (IS_SLIDER_MENU_ITEM (mi)); - if (value != NULL){ - if (IS_SLIDER_MENU_ITEM (mi)) { - SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (SLIDER_MENU_ITEM (mi)); - gdouble volume_input = g_variant_get_double(input); - //g_debug ("slider menu item about to update volume %f", volume_input); - slider_menu_item_update_volume (SLIDER_MENU_ITEM (mi), volume_input); - device_ensure_sink_is_unmuted (priv->a_sink); - } - } + SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (SLIDER_MENU_ITEM (mi)); + gdouble volume_input = g_variant_get_double (value); +/* + g_debug ("slider menu item handle event with value %f on name %s", + volume_input, + name); +*/ + slider_menu_item_update_volume (SLIDER_MENU_ITEM (mi), volume_input); + device_ensure_sink_is_unmuted (priv->a_sink); } @@ -148,6 +147,10 @@ slider_menu_item_populate (SliderMenuItem* self, const pa_sink_info* update) static void slider_menu_item_update_volume (SliderMenuItem* self, gdouble percent) { +/* + g_debug ("slider menu item update volume - about to set the volume to %f", percent); +*/ + pa_cvolume new_volume; pa_cvolume_init(&new_volume); new_volume.channels = 1; @@ -174,12 +177,17 @@ slider_menu_item_update (SliderMenuItem* self, const pa_sink_info* update) gdouble volume_percent = ((gdouble) vol * 100) / PA_VOLUME_NORM; GVariant* new_volume = g_variant_new_double (volume_percent); +/* + g_debug ("slider menu item update - volume update to ui to %f", volume_percent); +*/ dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), DBUSMENU_VOLUME_MENUITEM_LEVEL, new_volume); if (priv->mute != update->mute){ priv->mute = update->mute; - g_debug ("volume menu item - update - mute = %i", update->mute); +/* + g_debug ("volume menu item - update - mute on ui = %i", update->mute); +*/ GVariant* new_mute_update = g_variant_new_int32 (update->mute); dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), DBUSMENU_VOLUME_MENUITEM_MUTE, diff --git a/src/sound-service.c b/src/sound-service.c index 77909d1..cfc0b7e 100644 --- a/src/sound-service.c +++ b/src/sound-service.c @@ -39,10 +39,8 @@ service_shutdown (IndicatorService *service, gpointer user_data) { if (mainloop != NULL) { g_debug("Service shutdown !"); -/* - close_pulse_activites(); - g_main_loop_quit(mainloop); -*/ + close_pulse_activites(); + g_main_loop_quit(mainloop); } return; } diff --git a/src/transport-widget.c b/src/transport-widget.c index f1e7c10..f05c4c1 100644 --- a/src/transport-widget.c +++ b/src/transport-widget.c @@ -1742,7 +1742,9 @@ draw (GtkWidget* button, cairo_t *cr) } else if(priv->current_state == TRANSPORT_STATE_LAUNCHING) { +/* g_debug ("launching in draw"); +*/ _setup (&cr_surf, &surf, PLAY_WIDTH+6, PLAY_HEIGHT+6); _mask_play (cr_surf, PLAY_PADDING, @@ -1815,7 +1817,9 @@ transport_widget_fade_playbutton (gpointer userdata) { TransportWidget* bar = (TransportWidget*)userdata; g_return_val_if_fail(IS_TRANSPORT_WIDGET(bar), FALSE); +/* g_debug ("fade in /out timeout"); +*/ TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE(bar); if (priv->launching_transparency == 1.0f){ priv->fade_out = TRUE; diff --git a/src/voip-input-widget.c b/src/voip-input-widget.c index 6878361..dcf858e 100644 --- a/src/voip-input-widget.c +++ b/src/voip-input-widget.c @@ -129,9 +129,9 @@ voip_input_widget_property_update (DbusmenuMenuitem* item, gchar* property, g_return_if_fail (IS_VOIP_INPUT_WIDGET (userdata)); VoipInputWidget* mitem = VOIP_INPUT_WIDGET(userdata); VoipInputWidgetPrivate * priv = VOIP_INPUT_WIDGET_GET_PRIVATE(mitem); - //g_debug("scrub-widget::property_update for prop %s", property); if(g_ascii_strcasecmp(DBUSMENU_VOIP_INPUT_MENUITEM_LEVEL, property) == 0){ - if(priv->grabbed == FALSE){ + g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE)); + if (priv->grabbed == FALSE){ GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_voip_input_slider); GtkRange *range = (GtkRange*)slider; gdouble update = g_variant_get_double (value); diff --git a/src/volume-widget.c b/src/volume-widget.c index f638bd4..a54441c 100644 --- a/src/volume-widget.c +++ b/src/volume-widget.c @@ -131,26 +131,33 @@ volume_widget_property_update( DbusmenuMenuitem* item, gchar* property, g_return_if_fail (IS_VOLUME_WIDGET (userdata)); VolumeWidget* mitem = VOLUME_WIDGET(userdata); VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem); - if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_LEVEL, property) == 0){ g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE) ); if(priv->grabbed == FALSE){ GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); GtkRange *range = (GtkRange*)slider; gdouble update = g_variant_get_double (value); +/* + g_debug ("volume widget volume prop update with %f", update); +*/ gtk_range_set_value(range, update); update_accessible_desc(priv->indicator); } } if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_MUTE, property) == 0){ +/* g_debug ("volume widget - mute update "); +*/ + g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_INT32) ); if(priv->grabbed == FALSE){ GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); GtkRange *range = (GtkRange*)slider; gint update = g_variant_get_int32 (value); gdouble level; +/* g_debug ("volume widget - mute update %i", update); +*/ if (update == 1){ level = 0; @@ -160,7 +167,9 @@ volume_widget_property_update( DbusmenuMenuitem* item, gchar* property, DBUSMENU_VOLUME_MENUITEM_LEVEL)); } gtk_range_set_value(range, level); +/* g_debug ("volume-widget - update mute with value %i", update); +*/ } } } @@ -197,8 +206,10 @@ volume_widget_change_value_cb (GtkRange *range, { g_return_val_if_fail (IS_VOLUME_WIDGET (user_data), FALSE); VolumeWidget* mitem = VOLUME_WIDGET(user_data); - //g_debug ("changed value %f", new_value); - volume_widget_update(mitem, new_value); +/* + g_debug ("changed value %f", new_value); +*/ + volume_widget_update(mitem, new_value, "change-value"); return FALSE; } @@ -215,24 +226,35 @@ volume_widget_value_changed_cb (GtkRange *range, gpointer user_data) VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem); GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); gdouble current_value = CLAMP(gtk_range_get_value(GTK_RANGE(slider)), 0, 100); - //g_debug ("value changed %f", gtk_range_get_value(GTK_RANGE(slider))); +/* + g_debug ("value changed %f", gtk_range_get_value(GTK_RANGE(slider))); +*/ + gint mute = g_variant_get_int32 (dbusmenu_menuitem_property_get_variant (priv->twin_item, DBUSMENU_VOLUME_MENUITEM_MUTE)); if((current_value == 0 && mute != 1) || current_value == 100){ - volume_widget_update(mitem, current_value); +/* + g_debug ("value changed - actual set %f", current_value); +*/ + volume_widget_update(mitem, current_value, "value-changed"); } return FALSE; } void -volume_widget_update(VolumeWidget* self, gdouble update) +volume_widget_update(VolumeWidget* self, gdouble update, gchar* label) { + gchar* source = NULL; + source = label; + if (label == NULL){ + source = "v widget update"; + } VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(self); gdouble clamped = CLAMP(update, 0, 100); GVariant* new_volume = g_variant_new_double(clamped); - dbusmenu_menuitem_handle_event (priv->twin_item, "update", new_volume, 0); + dbusmenu_menuitem_handle_event (priv->twin_item, source, new_volume, 0); } GtkWidget* diff --git a/src/volume-widget.h b/src/volume-widget.h index 50ef377..7012473 100644 --- a/src/volume-widget.h +++ b/src/volume-widget.h @@ -47,7 +47,7 @@ struct _VolumeWidget { GType volume_widget_get_type (void) G_GNUC_CONST; GtkWidget* volume_widget_new(DbusmenuMenuitem *item, IndicatorObject* io); GtkWidget* volume_widget_get_ido_slider(VolumeWidget* self); -void volume_widget_update(VolumeWidget* self, gdouble update); +void volume_widget_update(VolumeWidget* self, gdouble update, gchar* label); void volume_widget_tidy_up (GtkWidget *widget); gdouble volume_widget_get_current_volume ( GtkWidget *widget ); -- 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(-) 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(+) 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 From 6a501d5787eec8bfef3558d14a36754f7be22858 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 21 Mar 2011 18:06:24 +0000 Subject: change the mute type on the volume slider to the appropriate type of boolean --- src/slider-menu-item.c | 4 ++-- src/sound-service.c | 4 ++++ src/volume-widget.c | 48 ++++++++++++++++-------------------------------- 3 files changed, 22 insertions(+), 34 deletions(-) diff --git a/src/slider-menu-item.c b/src/slider-menu-item.c index d7d08fb..1a57032 100644 --- a/src/slider-menu-item.c +++ b/src/slider-menu-item.c @@ -135,7 +135,7 @@ slider_menu_item_populate (SliderMenuItem* self, const pa_sink_info* update) dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), DBUSMENU_VOLUME_MENUITEM_LEVEL, new_volume); - GVariant* new_mute_update = g_variant_new_int32 (update->mute); + GVariant* new_mute_update = g_variant_new_boolean (update->mute == 1); dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), DBUSMENU_VOLUME_MENUITEM_MUTE, new_mute_update); @@ -188,7 +188,7 @@ slider_menu_item_update (SliderMenuItem* self, const pa_sink_info* update) /* g_debug ("volume menu item - update - mute on ui = %i", update->mute); */ - GVariant* new_mute_update = g_variant_new_int32 (update->mute); + GVariant* new_mute_update = g_variant_new_boolean (update->mute == 1); dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), DBUSMENU_VOLUME_MENUITEM_MUTE, new_mute_update); diff --git a/src/sound-service.c b/src/sound-service.c index 7e6426c..c15e94b 100644 --- a/src/sound-service.c +++ b/src/sound-service.c @@ -22,6 +22,8 @@ with this program. If not, see . #include "sound-service-dbus.h" #include "music-player-bridge.h" +#include + static GMainLoop *mainloop = NULL; /**********************************************************************************************************************/ @@ -39,8 +41,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/volume-widget.c b/src/volume-widget.c index a54441c..1a6895e 100644 --- a/src/volume-widget.c +++ b/src/volume-widget.c @@ -137,29 +137,20 @@ volume_widget_property_update( DbusmenuMenuitem* item, gchar* property, GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); GtkRange *range = (GtkRange*)slider; gdouble update = g_variant_get_double (value); -/* - g_debug ("volume widget volume prop update with %f", update); -*/ gtk_range_set_value(range, update); update_accessible_desc(priv->indicator); + g_debug ("volume-widget::volume_widget_property_update - mute - value %f", update); } } - if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_MUTE, property) == 0){ -/* - g_debug ("volume widget - mute update "); -*/ - g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_INT32) ); + else if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_MUTE, property) == 0){ + g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN)); if(priv->grabbed == FALSE){ GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); GtkRange *range = (GtkRange*)slider; - gint update = g_variant_get_int32 (value); + gboolean update = g_variant_get_boolean (value); gdouble level; -/* - g_debug ("volume widget - mute update %i", update); -*/ - - if (update == 1){ + if (update == TRUE){ level = 0; } else{ @@ -167,9 +158,7 @@ volume_widget_property_update( DbusmenuMenuitem* item, gchar* property, DBUSMENU_VOLUME_MENUITEM_LEVEL)); } gtk_range_set_value(range, level); -/* - g_debug ("volume-widget - update mute with value %i", update); -*/ + g_debug ("volume-widget::volume_widget_property_update - mute - value %i", update); } } } @@ -185,13 +174,13 @@ volume_widget_set_twin_item(VolumeWidget* self, G_CALLBACK(volume_widget_property_update), self); gdouble initial_level = g_variant_get_double (dbusmenu_menuitem_property_get_variant(twin_item, DBUSMENU_VOLUME_MENUITEM_LEVEL)); - gint initial_mute = g_variant_get_int32 (dbusmenu_menuitem_property_get_variant(twin_item, - DBUSMENU_VOLUME_MENUITEM_MUTE)); + gboolean initial_mute = g_variant_get_boolean (dbusmenu_menuitem_property_get_variant(twin_item, + DBUSMENU_VOLUME_MENUITEM_MUTE)); //g_debug("volume_widget_set_twin_item initial level = %f", initial_level); GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); GtkRange *range = (GtkRange*)slider; - if(initial_mute == 1){ + if(initial_mute == TRUE){ initial_level = 0; } gtk_range_set_value(range, initial_level); @@ -206,9 +195,9 @@ volume_widget_change_value_cb (GtkRange *range, { g_return_val_if_fail (IS_VOLUME_WIDGET (user_data), FALSE); VolumeWidget* mitem = VOLUME_WIDGET(user_data); -/* + g_debug ("changed value %f", new_value); -*/ + volume_widget_update(mitem, new_value, "change-value"); return FALSE; } @@ -222,22 +211,17 @@ volume_widget_value_changed_cb (GtkRange *range, gpointer user_data) { g_return_val_if_fail (IS_VOLUME_WIDGET (user_data), FALSE); - VolumeWidget* mitem = VOLUME_WIDGET(user_data); + VolumeWidget* mitem = VOLUME_WIDGET (user_data); VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem); GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); gdouble current_value = CLAMP(gtk_range_get_value(GTK_RANGE(slider)), 0, 100); -/* g_debug ("value changed %f", gtk_range_get_value(GTK_RANGE(slider))); -*/ - - gint mute = g_variant_get_int32 (dbusmenu_menuitem_property_get_variant (priv->twin_item, - DBUSMENU_VOLUME_MENUITEM_MUTE)); - if((current_value == 0 && mute != 1) || current_value == 100){ -/* + gboolean mute = g_variant_get_boolean (dbusmenu_menuitem_property_get_variant (priv->twin_item, + DBUSMENU_VOLUME_MENUITEM_MUTE)); + if((current_value == 0 && mute == FALSE) || current_value == 100){ g_debug ("value changed - actual set %f", current_value); -*/ - volume_widget_update(mitem, current_value, "value-changed"); + volume_widget_update (mitem, current_value, "value-changed"); } return FALSE; -- cgit v1.2.3 From 851b1bb2b1acaa5440f66d69948a066779ddf862 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Tue, 22 Mar 2011 00:01:53 +0000 Subject: more trace added --- src/playlists-menu-item.vala | 2 +- src/slider-menu-item.c | 16 +++++++++------- src/volume-widget.c | 8 +++++++- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/playlists-menu-item.vala b/src/playlists-menu-item.vala index 79ab506..6524bec 100644 --- a/src/playlists-menu-item.vala +++ b/src/playlists-menu-item.vala @@ -80,7 +80,7 @@ public class PlaylistsMenuitem : PlayerItem if (this.root_item.property_get (MENUITEM_PATH) == item.property_get (MENUITEM_PATH)){ this.root_item.property_set (MENUITEM_PROP_LABEL, _("Choose Playlist")); } - this.root_item.child_delete (item); + //this.root_item.child_delete (item); } } } diff --git a/src/slider-menu-item.c b/src/slider-menu-item.c index 1a57032..b194395 100644 --- a/src/slider-menu-item.c +++ b/src/slider-menu-item.c @@ -108,11 +108,11 @@ handle_event (DbusmenuMenuitem * mi, SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (SLIDER_MENU_ITEM (mi)); gdouble volume_input = g_variant_get_double (value); -/* + g_debug ("slider menu item handle event with value %f on name %s", volume_input, name); -*/ + slider_menu_item_update_volume (SLIDER_MENU_ITEM (mi), volume_input); device_ensure_sink_is_unmuted (priv->a_sink); } @@ -147,9 +147,9 @@ slider_menu_item_populate (SliderMenuItem* self, const pa_sink_info* update) static void slider_menu_item_update_volume (SliderMenuItem* self, gdouble percent) { -/* + g_debug ("slider menu item update volume - about to set the volume to %f", percent); -*/ + pa_cvolume new_volume; pa_cvolume_init(&new_volume); @@ -177,12 +177,14 @@ slider_menu_item_update (SliderMenuItem* self, const pa_sink_info* update) gdouble volume_percent = ((gdouble) vol * 100) / PA_VOLUME_NORM; GVariant* new_volume = g_variant_new_double (volume_percent); -/* + g_debug ("slider menu item update - volume update to ui to %f", volume_percent); -*/ + + dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), DBUSMENU_VOLUME_MENUITEM_LEVEL, new_volume); + if (priv->mute != update->mute){ priv->mute = update->mute; /* @@ -241,4 +243,4 @@ slider_menu_item_new (Device* sink) SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self); priv->a_sink = sink; return self; -} \ No newline at end of file +} diff --git a/src/volume-widget.c b/src/volume-widget.c index 1a6895e..77392c8 100644 --- a/src/volume-widget.c +++ b/src/volume-widget.c @@ -131,6 +131,12 @@ volume_widget_property_update( DbusmenuMenuitem* item, gchar* property, g_return_if_fail (IS_VOLUME_WIDGET (userdata)); VolumeWidget* mitem = VOLUME_WIDGET(userdata); VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem); + + g_debug ("volume-widget::volume_widget_property_update for prop %s, is it a double %i", + property, g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE) ); + g_debug ("volume-widget::volume_widget_property_update for prop %s, is it a boolean %i", + property, g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN) ); + if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_LEVEL, property) == 0){ g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE) ); if(priv->grabbed == FALSE){ @@ -139,7 +145,7 @@ volume_widget_property_update( DbusmenuMenuitem* item, gchar* property, gdouble update = g_variant_get_double (value); gtk_range_set_value(range, update); update_accessible_desc(priv->indicator); - g_debug ("volume-widget::volume_widget_property_update - mute - value %f", update); + g_debug ("volume-widget::volume_widget_property_update - volume - value %f", update); } } else if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_MUTE, property) == 0){ -- cgit v1.2.3 From 0a7074927f2f600b6e7eb98459b97b73de0baa8d Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Tue, 22 Mar 2011 19:53:19 +0000 Subject: protected now against any type ot irregular spam dbusmenu may throw at it --- src/slider-menu-item.c | 11 ++++++----- src/sound-service.c | 2 -- src/voip-input-menu-item.c | 6 ++++++ src/voip-input-widget.c | 7 +++++-- src/volume-widget.c | 30 +++++++++++++++++++----------- 5 files changed, 36 insertions(+), 20 deletions(-) diff --git a/src/slider-menu-item.c b/src/slider-menu-item.c index b194395..8186fa3 100644 --- a/src/slider-menu-item.c +++ b/src/slider-menu-item.c @@ -69,9 +69,6 @@ slider_menu_item_class_init (SliderMenuItemClass *klass) static void slider_menu_item_init (SliderMenuItem *self) { -/* - g_debug("Building new Slider Menu Item"); -*/ dbusmenu_menuitem_property_set( DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_TYPE, DBUSMENU_VOLUME_MENUITEM_TYPE ); @@ -109,9 +106,11 @@ handle_event (DbusmenuMenuitem * mi, SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (SLIDER_MENU_ITEM (mi)); gdouble volume_input = g_variant_get_double (value); +/* g_debug ("slider menu item handle event with value %f on name %s", volume_input, name); +*/ slider_menu_item_update_volume (SLIDER_MENU_ITEM (mi), volume_input); device_ensure_sink_is_unmuted (priv->a_sink); @@ -148,8 +147,9 @@ static void slider_menu_item_update_volume (SliderMenuItem* self, gdouble percent) { +/* g_debug ("slider menu item update volume - about to set the volume to %f", percent); - +*/ pa_cvolume new_volume; pa_cvolume_init(&new_volume); @@ -178,8 +178,9 @@ slider_menu_item_update (SliderMenuItem* self, const pa_sink_info* update) GVariant* new_volume = g_variant_new_double (volume_percent); +/* g_debug ("slider menu item update - volume update to ui to %f", volume_percent); - +*/ dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), DBUSMENU_VOLUME_MENUITEM_LEVEL, diff --git a/src/sound-service.c b/src/sound-service.c index c15e94b..1324537 100644 --- a/src/sound-service.c +++ b/src/sound-service.c @@ -41,10 +41,8 @@ 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/voip-input-menu-item.c b/src/voip-input-menu-item.c index a92f91c..5507caf 100644 --- a/src/voip-input-menu-item.c +++ b/src/voip-input-menu-item.c @@ -73,7 +73,9 @@ voip_input_menu_item_class_init (VoipInputMenuItemClass *klass) static void voip_input_menu_item_init (VoipInputMenuItem *self) { +/* g_debug("Building new Slider Menu Item"); +*/ dbusmenu_menuitem_property_set( DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_TYPE, DBUSMENU_VOIP_INPUT_MENUITEM_TYPE ); @@ -117,7 +119,9 @@ handle_event (DbusmenuMenuitem * mi, if (value != NULL){ if (IS_VOIP_INPUT_MENU_ITEM (mi)) { VoipInputMenuItemPrivate* priv = VOIP_INPUT_MENU_ITEM_GET_PRIVATE (VOIP_INPUT_MENU_ITEM (mi)); +/* g_debug ("Handle event in the voip input level backend instance - %f", percent); +*/ pa_cvolume new_volume; pa_cvolume_init(&new_volume); new_volume.channels = 1; @@ -167,7 +171,9 @@ voip_input_menu_item_update (VoipInputMenuItem* item, // Only send over the mute updates if the state has changed. // in this order - volume first mute last!! if (priv->mute != source->mute){ +/* g_debug ("voip menu item - update - mute = %i", priv->mute); +*/ GVariant* new_mute_update = g_variant_new_int32 (source->mute); dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(item), DBUSMENU_VOIP_INPUT_MENUITEM_MUTE, diff --git a/src/voip-input-widget.c b/src/voip-input-widget.c index dcf858e..1b36496 100644 --- a/src/voip-input-widget.c +++ b/src/voip-input-widget.c @@ -141,6 +141,7 @@ voip_input_widget_property_update (DbusmenuMenuitem* item, gchar* property, } if(g_ascii_strcasecmp(DBUSMENU_VOIP_INPUT_MENUITEM_MUTE, property) == 0){ if(priv->grabbed == FALSE){ + g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_INT32)); GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_voip_input_slider); GtkRange *range = (GtkRange*)slider; gint update = g_variant_get_int32 (value); @@ -149,8 +150,10 @@ voip_input_widget_property_update (DbusmenuMenuitem* item, gchar* property, level = 0; } else{ - level = g_variant_get_double (dbusmenu_menuitem_property_get_variant (priv->twin_item, - DBUSMENU_VOIP_INPUT_MENUITEM_LEVEL)); + GVariant* variant = dbusmenu_menuitem_property_get_variant (priv->twin_item, + DBUSMENU_VOIP_INPUT_MENUITEM_LEVEL); + g_return_if_fail (g_variant_is_of_type (variant, G_VARIANT_TYPE_DOUBLE)); + level = g_variant_get_double (variant); } gtk_range_set_value(range, level); diff --git a/src/volume-widget.c b/src/volume-widget.c index 77392c8..e8e7bae 100644 --- a/src/volume-widget.c +++ b/src/volume-widget.c @@ -128,15 +128,10 @@ static void volume_widget_property_update( DbusmenuMenuitem* item, gchar* property, GVariant* value, gpointer userdata) { - g_return_if_fail (IS_VOLUME_WIDGET (userdata)); + g_return_if_fail (IS_VOLUME_WIDGET(userdata)); VolumeWidget* mitem = VOLUME_WIDGET(userdata); VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem); - g_debug ("volume-widget::volume_widget_property_update for prop %s, is it a double %i", - property, g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE) ); - g_debug ("volume-widget::volume_widget_property_update for prop %s, is it a boolean %i", - property, g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN) ); - if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_LEVEL, property) == 0){ g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE) ); if(priv->grabbed == FALSE){ @@ -144,8 +139,10 @@ volume_widget_property_update( DbusmenuMenuitem* item, gchar* property, GtkRange *range = (GtkRange*)slider; gdouble update = g_variant_get_double (value); gtk_range_set_value(range, update); - update_accessible_desc(priv->indicator); +/* g_debug ("volume-widget::volume_widget_property_update - volume - value %f", update); +*/ + update_accessible_desc(priv->indicator); } } else if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_MUTE, property) == 0){ @@ -160,11 +157,19 @@ volume_widget_property_update( DbusmenuMenuitem* item, gchar* property, level = 0; } else{ - level = g_variant_get_double (dbusmenu_menuitem_property_get_variant (priv->twin_item, - DBUSMENU_VOLUME_MENUITEM_LEVEL)); + GVariant* variant = dbusmenu_menuitem_property_get_variant (priv->twin_item, + DBUSMENU_VOLUME_MENUITEM_LEVEL); +/* + g_debug ("variant for the volume - is it null = %i", variant == NULL); +*/ + g_return_if_fail (g_variant_is_of_type (variant, G_VARIANT_TYPE_DOUBLE) ); + + level = g_variant_get_double (variant); } +/* + g_debug ("volume-widget::volume_widget_property_update - mute - value %i and level = %f", update, level); +*/ gtk_range_set_value(range, level); - g_debug ("volume-widget::volume_widget_property_update - mute - value %i", update); } } } @@ -202,7 +207,9 @@ volume_widget_change_value_cb (GtkRange *range, g_return_val_if_fail (IS_VOLUME_WIDGET (user_data), FALSE); VolumeWidget* mitem = VOLUME_WIDGET(user_data); +/* g_debug ("changed value %f", new_value); +*/ volume_widget_update(mitem, new_value, "change-value"); return FALSE; @@ -221,12 +228,13 @@ volume_widget_value_changed_cb (GtkRange *range, gpointer user_data) VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem); GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); gdouble current_value = CLAMP(gtk_range_get_value(GTK_RANGE(slider)), 0, 100); - g_debug ("value changed %f", gtk_range_get_value(GTK_RANGE(slider))); gboolean mute = g_variant_get_boolean (dbusmenu_menuitem_property_get_variant (priv->twin_item, DBUSMENU_VOLUME_MENUITEM_MUTE)); if((current_value == 0 && mute == FALSE) || current_value == 100){ +/* g_debug ("value changed - actual set %f", current_value); +*/ volume_widget_update (mitem, current_value, "value-changed"); } -- cgit v1.2.3 From a82ab70e9e82f09ba3d2446dba1b57ead1bde5f8 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 23 Mar 2011 10:15:18 +0000 Subject: tidy up --- src/playlists-menu-item.vala | 2 +- src/voip-input-menu-item.c | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/playlists-menu-item.vala b/src/playlists-menu-item.vala index 6524bec..782b5a2 100644 --- a/src/playlists-menu-item.vala +++ b/src/playlists-menu-item.vala @@ -80,7 +80,7 @@ public class PlaylistsMenuitem : PlayerItem if (this.root_item.property_get (MENUITEM_PATH) == item.property_get (MENUITEM_PATH)){ this.root_item.property_set (MENUITEM_PROP_LABEL, _("Choose Playlist")); } - //this.root_item.child_delete (item); + this.root_item.child_delete (item); } } } diff --git a/src/voip-input-menu-item.c b/src/voip-input-menu-item.c index 5507caf..e645e69 100644 --- a/src/voip-input-menu-item.c +++ b/src/voip-input-menu-item.c @@ -73,9 +73,6 @@ voip_input_menu_item_class_init (VoipInputMenuItemClass *klass) static void voip_input_menu_item_init (VoipInputMenuItem *self) { -/* - g_debug("Building new Slider Menu Item"); -*/ dbusmenu_menuitem_property_set( DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_TYPE, DBUSMENU_VOIP_INPUT_MENUITEM_TYPE ); -- cgit v1.2.3 From 6e61d86ba202b5c7ef939970a74be13c6bcc2d20 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 23 Mar 2011 11:26:54 +0000 Subject: default gsettings now set to banshee to reflect the players desktop id change and voip widget low icon name corrected --- data/com.canonical.indicators.sound.gschema.xml | 2 +- src/voip-input-widget.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/com.canonical.indicators.sound.gschema.xml b/data/com.canonical.indicators.sound.gschema.xml index 1e08269..dc63bcb 100644 --- a/data/com.canonical.indicators.sound.gschema.xml +++ b/data/com.canonical.indicators.sound.gschema.xml @@ -11,7 +11,7 @@ A list of applications which at some point have registered with the sound menu - [ 'banshee-1' ] + [ 'banshee' ] Each media player which abides by the MPRIS2 spec will automatically appear in the menu. This array should contain the desktop file names (minus .desktop suffix) of applications which diff --git a/src/voip-input-widget.c b/src/voip-input-widget.c index 1b36496..5f67fab 100644 --- a/src/voip-input-widget.c +++ b/src/voip-input-widget.c @@ -97,7 +97,7 @@ voip_input_widget_init (VoipInputWidget *self) g_signal_connect(priv->ido_voip_input_slider, "slider-released", G_CALLBACK(voip_input_widget_slider_released), self); GtkWidget* primary_image = ido_scale_menu_item_get_primary_image((IdoScaleMenuItem*)priv->ido_voip_input_slider); - GIcon * primary_gicon = g_themed_icon_new_with_default_fallbacks("audio-input-microphone-zero-panel"); + GIcon * primary_gicon = g_themed_icon_new_with_default_fallbacks("audio-input-microphone-low-zero-panel"); gtk_image_set_from_gicon(GTK_IMAGE(primary_image), primary_gicon, GTK_ICON_SIZE_MENU); g_object_unref(primary_gicon); -- cgit v1.2.3 From 478a6ac491e013bd0c9b13a34177c46d5645314b Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 23 Mar 2011 11:53:27 +0000 Subject: video playlists now filtered out --- src/playlists-menu-item.vala | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/playlists-menu-item.vala b/src/playlists-menu-item.vala index 782b5a2..c784734 100644 --- a/src/playlists-menu-item.vala +++ b/src/playlists-menu-item.vala @@ -46,8 +46,9 @@ public class PlaylistsMenuitem : PlayerItem public new void update (PlaylistDetails[] playlists) { foreach ( PlaylistDetails detail in playlists ){ - - if (this.already_observed(detail)) continue; + // We don't want to list playlists which are for videos)' + if (this.already_observed(detail) || this.is_video_related(detail)) + continue; Dbusmenu.Menuitem menuitem = new Menuitem(); menuitem.property_set (MENUITEM_PROP_LABEL, detail.name); @@ -119,6 +120,13 @@ public class PlaylistsMenuitem : PlayerItem return false; } + private bool is_video_related (PlaylistDetails new_detail) + { + var location = (string)new_detail.path; + if (location.contains ("/VideoLibrarySource/")) return true; + return false; + } + public void active_playlist_update (PlaylistDetails detail) { var update = detail.name; -- cgit v1.2.3 From 16ad03db951eb08a80041b7a0ed29f38db1a96f3 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 23 Mar 2011 14:41:10 +0000 Subject: use the new icons for playlists --- src/playlists-menu-item.vala | 5 +---- src/sound-service-dbus.c | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/playlists-menu-item.vala b/src/playlists-menu-item.vala index c784734..704f61c 100644 --- a/src/playlists-menu-item.vala +++ b/src/playlists-menu-item.vala @@ -52,10 +52,7 @@ public class PlaylistsMenuitem : PlayerItem Dbusmenu.Menuitem menuitem = new Menuitem(); menuitem.property_set (MENUITEM_PROP_LABEL, detail.name); - var result = this.parse_icon_path (detail.icon_path); - if (result != null) { - menuitem.property_set (MENUITEM_PROP_ICON_NAME, (string)result); - } + menuitem.property_set (MENUITEM_PROP_ICON_NAME, "playlist-symbolic"); menuitem.property_set (MENUITEM_PATH, (string)detail.path); menuitem.property_set_bool (MENUITEM_PROP_VISIBLE, true); diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c index 7c817af..1b9d29e 100644 --- a/src/sound-service-dbus.c +++ b/src/sound-service-dbus.c @@ -148,11 +148,8 @@ sound_service_dbus_create_root_item (SoundServiceDbus* self) { SoundServiceDbusPrivate * priv = SOUND_SERVICE_DBUS_GET_PRIVATE(self); priv->root_menuitem = dbusmenu_menuitem_new(); - g_debug("Root ID: %d", dbusmenu_menuitem_get_id(priv->root_menuitem)); + //g_debug("Root ID: %d", dbusmenu_menuitem_get_id(priv->root_menuitem)); DbusmenuServer *server = dbusmenu_server_new (INDICATOR_SOUND_MENU_DBUS_OBJECT_PATH); - const gchar* paths[] = {"/usr/share/banshee-1/icons", NULL}; - dbusmenu_server_set_icon_paths (server, - paths); dbusmenu_server_set_root (server, priv->root_menuitem); g_object_unref (priv->root_menuitem); priv->device = device_new (self); -- cgit v1.2.3 From 339fd128f951f69df281f3f0339f115d7ff450af Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 23 Mar 2011 15:49:11 +0000 Subject: make sure on playlist update it doesn't use the custom icon --- src/playlists-menu-item.vala | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/playlists-menu-item.vala b/src/playlists-menu-item.vala index 704f61c..58c3875 100644 --- a/src/playlists-menu-item.vala +++ b/src/playlists-menu-item.vala @@ -83,23 +83,11 @@ public class PlaylistsMenuitem : PlayerItem } } - private string? parse_icon_path (string path) - { - if (path == "")return null; - var icon_file = File.new_for_path (path); - if (icon_file.get_path() == null)return null; - return icon_file.get_basename().split(".")[0]; - } - public void update_individual_playlist (PlaylistDetails new_detail) { foreach ( Dbusmenu.Menuitem item in this.current_playlists.values ){ if (new_detail.path == item.property_get (MENUITEM_PATH)){ item.property_set (MENUITEM_PROP_LABEL, new_detail.name); - var result = this.parse_icon_path (new_detail.icon_path); - if (result != null) { - item.property_set (MENUITEM_PROP_ICON_NAME, result); - } } } // If its active make sure the name is updated on the root item. -- cgit v1.2.3 From fb3a829f4bca4f16c51cb5305b941928296c52a7 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 23 Mar 2011 15:50:36 +0000 Subject: bump in prep for beta release --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 796b124..be50971 100644 --- a/configure.ac +++ b/configure.ac @@ -1,10 +1,10 @@ -AC_INIT(indicator-sound, 0.6.4, conor.curran@canonical.com) +AC_INIT(indicator-sound, 0.6.5, conor.curran@canonical.com) AC_PREREQ(2.53) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(indicator-sound, 0.6.4) +AM_INIT_AUTOMAKE(indicator-sound, 0.6.5) AM_MAINTAINER_MODE -- cgit v1.2.3 From b7b6431edc4b20512f76be9c8688e67cda01831e Mon Sep 17 00:00:00 2001 From: Ken VanDine Date: Wed, 23 Mar 2011 12:55:31 -0400 Subject: releasing version 0.6.5-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 60110de..050cd4e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -indicator-sound (0.6.5-0ubuntu1) UNRELEASED; urgency=low +indicator-sound (0.6.5-0ubuntu1) natty; urgency=low * New upstream release. - Media player should be automatically started up when play button is -- cgit v1.2.3