aboutsummaryrefslogtreecommitdiff
path: root/src/dbus-menu-manager.c
diff options
context:
space:
mode:
authorConor Curran <conor.curran@canonical.com>2011-01-12 17:55:05 -0600
committerConor Curran <conor.curran@canonical.com>2011-01-12 17:55:05 -0600
commit6db28ce9134db40a0808a3c67df5f9dd223303b5 (patch)
tree4508dfbf263ee3778476418a5ba230f535ffa8c0 /src/dbus-menu-manager.c
parent055df674f70f7961c6d47e3b031881e142f6dea8 (diff)
downloadayatana-indicator-sound-6db28ce9134db40a0808a3c67df5f9dd223303b5.tar.gz
ayatana-indicator-sound-6db28ce9134db40a0808a3c67df5f9dd223303b5.tar.bz2
ayatana-indicator-sound-6db28ce9134db40a0808a3c67df5f9dd223303b5.zip
stage one of the refactor on the server side complete
Diffstat (limited to 'src/dbus-menu-manager.c')
-rw-r--r--src/dbus-menu-manager.c204
1 files changed, 66 insertions, 138 deletions
diff --git a/src/dbus-menu-manager.c b/src/dbus-menu-manager.c
index 8c255e3..7de5844 100644
--- a/src/dbus-menu-manager.c
+++ b/src/dbus-menu-manager.c
@@ -22,6 +22,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
* Makes this a proper GObject
**/
+
#include <unistd.h>
#include <glib/gi18n.h>
@@ -44,24 +45,15 @@ static SliderMenuItem *volume_slider_menuitem = NULL;
static MuteMenuItem *mute_menuitem = NULL;
static SoundServiceDbus *dbus_interface = NULL;
-// PULSEAUDIO
-static gboolean b_sink_available = FALSE;
-static gboolean b_pulse_ready = FALSE;
static gboolean b_startup = TRUE;
-static gdouble volume_percent = 0.0;
-static void set_global_mute_from_ui();
static gboolean idle_routine (gpointer data);
-static void rebuild_sound_menu(DbusmenuMenuitem *root,
+static void build_sound_menu(DbusmenuMenuitem *root,
gboolean mute_update,
gboolean availability,
gdouble volume);
-static void refresh_menu();
-
-
-/*-------------------------------------------------------------------------*/
-// Public Methods
-/*-------------------------------------------------------------------------*/
+static void show_sound_settings_dialog (DbusmenuMenuitem *mi,
+ gpointer user_data);
/**
setup:
@@ -81,104 +73,96 @@ DbusmenuMenuitem* dbus_menu_manager_setup()
return root_menuitem;
}
-void dbus_menu_manager_update_volume(gdouble volume)
+/**
+build_sound_menu's default items (without the any player items):
+**/
+static void build_sound_menu (DbusmenuMenuitem *root,
+ gboolean mute_update,
+ gboolean availability,
+ gdouble volume)
{
- GVariant* new_volume = g_variant_new_double(volume);
- dbusmenu_menuitem_property_set_variant(DBUSMENU_MENUITEM(volume_slider_menuitem),
- DBUSMENU_VOLUME_MENUITEM_LEVEL,
- new_volume);
+ // Mute button
+ mute_menuitem = mute_menu_item_new ( mute_update, availability);
+ dbusmenu_menuitem_child_append (root, DBUSMENU_MENUITEM(mute_menuitem));
+
+ // Slider
+ volume_slider_menuitem = slider_menu_item_new ( availability, volume );
+ dbusmenu_menuitem_child_append (root, DBUSMENU_MENUITEM ( volume_slider_menuitem ));
+
+ // Separator
+ DbusmenuMenuitem *separator = dbusmenu_menuitem_new();
+ dbusmenu_menuitem_property_set( separator,
+ DBUSMENU_MENUITEM_PROP_TYPE,
+ DBUSMENU_CLIENT_TYPES_SEPARATOR);
+ dbusmenu_menuitem_child_append(root, separator);
+
+ // Sound preferences dialog
+ DbusmenuMenuitem *settings_mi = dbusmenu_menuitem_new();
+ dbusmenu_menuitem_property_set( settings_mi,
+ DBUSMENU_MENUITEM_PROP_LABEL,
+ _("Sound Preferences..."));
+
+ //_("Sound Preferences..."));
+ dbusmenu_menuitem_child_append(root, settings_mi);
+ g_signal_connect(G_OBJECT(settings_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED,
+ G_CALLBACK(show_sound_settings_dialog), NULL);
}
-
/**
update_pa_state:
**/
void dbus_menu_manager_update_pa_state (gboolean pa_state,
- gboolean sink_available,
+ gboolean pulse_available,
gboolean sink_muted,
gdouble percent)
{
- b_sink_available = sink_available;
- b_pulse_ready = pa_state;
- volume_percent = percent;
- g_debug("update pa state with state %i, availability of %i, mute value of %i and a volume percent is %f", pa_state, sink_available, sink_muted, volume_percent);
- // Only rebuild the menu on start up...
+ g_debug("update pa state with state %i, availability of %i, mute value of %i and a volume percent is %f", pa_state, pulse_available, sink_muted, percent);
+
if (b_startup == TRUE) {
- rebuild_sound_menu(root_menuitem, dbus_interface);
+ build_sound_menu(root_menuitem, sink_muted, pulse_available, percent);
b_startup = FALSE;
- } else {
- refresh_menu();
+ return;
}
+
+ mute_menu_item_update ( mute_menuitem,
+ sink_muted );
+ slider_menu_item_update ( volume_slider_menuitem,
+ percent );
+
+ mute_menu_item_enable ( mute_menuitem, pulse_available);
+ slider_menu_item_enable ( volume_slider_menuitem,
+ pulse_available );
+
// Emit the signals after the menus are setup/torn down
// preserve ordering !
- sound_service_dbus_update_sink_availability(dbus_interface, sink_available);
+ /*sound_service_dbus_update_sink_availability(dbus_interface, sink_available);
dbus_menu_manager_update_volume(percent);
sound_service_dbus_update_sink_mute(dbus_interface, sink_muted);
- dbus_menu_manager_update_mute_ui(b_all_muted);
+ dbus_menu_manager_update_mute_ui(b_all_muted);*/
}
/**
update_mute_ui:
'public' method allowing the pa manager to update the mute menu item.
+ These are wrappers until we figure out this refactor
**/
-void dbus_menu_manager_update_mute_ui(gboolean incoming_mute_value)
-{
-
- dbusmenu_menuitem_property_set(DBUSMENUITEM(mute_all_menuitem),
- DBUSMENU_MENUITEM_PROP_LABEL,
- b_all_muted == FALSE ? _("Mute") : _("Unmute"));
+void dbus_menu_manager_update_mute(gboolean incoming_mute_value)
+{
+ mute_menu_item_update (mute_menuitem, incoming_mute_value);
}
-
-/*-------------------------------------------------------------------------*/
-// Private Methods
-/*-------------------------------------------------------------------------*/
-static void refresh_menu()
-{
- g_debug("in the refresh menu method");
- if (b_sink_available == FALSE || b_pulse_ready == FALSE) {
-
- dbusmenu_menuitem_property_set_bool(DBUSMENU_MENUITEM(volume_slider_menuitem),
- DBUSMENU_MENUITEM_PROP_ENABLED,
- FALSE);
- dbusmenu_menuitem_property_set_bool(DBUSMENU_MENUITEM(volume_slider_menuitem),
- DBUSMENU_MENUITEM_PROP_VISIBLE,
- FALSE);
- dbusmenu_menuitem_property_set_bool(mute_all_menuitem,
- DBUSMENU_MENUITEM_PROP_ENABLED,
- FALSE);
-
- } else if (b_sink_available == TRUE && b_pulse_ready == TRUE) {
-
- dbusmenu_menuitem_property_set_bool(DBUSMENU_MENUITEM(volume_slider_menuitem),
- DBUSMENU_MENUITEM_PROP_ENABLED,
- TRUE);
- dbusmenu_menuitem_property_set_bool(DBUSMENU_MENUITEM(volume_slider_menuitem),
- DBUSMENU_MENUITEM_PROP_VISIBLE,
- TRUE);
- dbusmenu_menuitem_property_set_bool(mute_all_menuitem,
- DBUSMENU_MENUITEM_PROP_ENABLED,
- TRUE);
- }
-}
-
-
-/**
-idle_routine:
-Something for glip mainloop to do when idle
-**/
-static gboolean idle_routine (gpointer data)
+void dbus_menu_manager_update_volume(gdouble volume)
{
- return FALSE;
+ slider_menu_item_update (volume_slider_menuitem, volume);
}
-
/**
show_sound_settings_dialog:
Bring up the gnome volume preferences dialog
**/
-static void show_sound_settings_dialog (DbusmenuMenuitem *mi, gpointer user_data)
+static void show_sound_settings_dialog (DbusmenuMenuitem *mi,
+ gpointer user_data)
{
GError * error = NULL;
if (!g_spawn_command_line_async("gnome-volume-control --page=applications", &error) &&
@@ -190,68 +174,12 @@ static void show_sound_settings_dialog (DbusmenuMenuitem *mi, gpointer user_data
}
/**
-build_sound_menu's default items (without the any player items):
-**/
-static void build_sound_menu (DbusmenuMenuitem *root,
- gboolean mute_update,
- gboolean availability,
- gdouble volume);
-
-{
- // Mute button
- mute_all_menuitem = mute_menu_item_new ( mute_update, availability);
- dbusmenu_menuitem_child_append(root, mute_all_menuitem);
-
- // Slider
- volume_slider_menuitem = slider_menu_item_new(available, volume);
- dbusmenu_menuitem_child_append(root, DBUSMENU_MENUITEM(volume_slider_menuitem));
- dbusmenu_menuitem_property_set_bool(DBUSMENU_MENUITEM(volume_slider_menuitem),
- DBUSMENU_MENUITEM_PROP_ENABLED,
- b_sink_available && !b_all_muted);
- dbusmenu_menuitem_property_set_bool(DBUSMENU_MENUITEM(volume_slider_menuitem),
- DBUSMENU_MENUITEM_PROP_VISIBLE,
- b_sink_available);
- // Separator
- DbusmenuMenuitem *separator = dbusmenu_menuitem_new();
- dbusmenu_menuitem_property_set( separator,
- DBUSMENU_MENUITEM_PROP_TYPE,
- DBUSMENU_CLIENT_TYPES_SEPARATOR);
- dbusmenu_menuitem_child_append(root, separator);
-
- // Sound preferences dialog
- DbusmenuMenuitem *settings_mi = dbusmenu_menuitem_new();
- dbusmenu_menuitem_property_set( settings_mi,
- DBUSMENU_MENUITEM_PROP_LABEL,
- _("Sound Preferences..."));
-
- //_("Sound Preferences..."));
- dbusmenu_menuitem_child_append(root, settings_mi);
- g_signal_connect(G_OBJECT(settings_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED,
- G_CALLBACK(show_sound_settings_dialog), NULL);
-}
-
-/**
-set_global_mute_from_ui:
-Callback for the dbusmenuitem button
+TODO: what are you doing with this
+idle_routine:
+Something for glip mainloop to do when idle
**/
-static void set_global_mute_from_ui()
-{
- b_all_muted = !b_all_muted;
- toggle_global_mute(b_all_muted);
- dbusmenu_menuitem_property_set((DBUSMENU_MENUITEM)mute_all_menuitem,
- DBUSMENU_MENUITEM_PROP_LABEL,
- b_all_muted == FALSE ? _("Mute") : _("Unmute"));
-}
-
-
-/*
- TODO: use these temporary wrappers around pulsemanager for the short term
- Until I get to the point where I can refactor it entirely.
-*/
-
-void dbmm_pa_wrapper_toggle_mute(gboolean update)
+static gboolean idle_routine (gpointer data)
{
- toggle_global_mute (update);
+ return FALSE;
}
-