From 460e89ca35c3bd63ed79e63d708089128d22a1a9 Mon Sep 17 00:00:00 2001
From: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
Date: Wed, 7 Oct 2009 14:34:15 -0400
Subject: [PATCH] [#1970] Disable volume controls when using pulseaudio

---
 sflphone-client-gnome/src/config/audioconf.c | 2 ++
 sflphone-client-gnome/src/sflphone_const.h   | 4 ++--
 sflphone-client-gnome/src/ui.xml             | 2 +-
 sflphone-client-gnome/src/uimanager.c        | 7 ++++---
 sflphone-client-gnome/src/uimanager.h        | 2 ++
 5 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/sflphone-client-gnome/src/config/audioconf.c b/sflphone-client-gnome/src/config/audioconf.c
index ce85d94dea..0d10ad09da 100644
--- a/sflphone-client-gnome/src/config/audioconf.c
+++ b/sflphone-client-gnome/src/config/audioconf.c
@@ -631,6 +631,7 @@ select_audio_manager( void )
         gtk_widget_show( alsa_conf );
         gtk_widget_set_sensitive(GTK_WIDGET(alsa_conf), TRUE);
         gtk_widget_set_sensitive(GTK_WIDGET(pa_mute_widget), FALSE);
+		gtk_widget_set_sensitive (GTK_WIDGET (volumeToggle), TRUE);
     }
     else if( SHOW_ALSA_CONF && gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(pulse) ))
     {
@@ -639,6 +640,7 @@ select_audio_manager( void )
         gtk_container_remove( GTK_CONTAINER(alsa_conf) , alsabox );
         gtk_widget_hide( alsa_conf );
         gtk_widget_set_sensitive(GTK_WIDGET(pa_mute_widget), TRUE);
+		gtk_widget_set_sensitive (GTK_WIDGET (volumeToggle), FALSE);
     } else {
         DEBUG("alsa conf panel...nothing");
     }
diff --git a/sflphone-client-gnome/src/sflphone_const.h b/sflphone-client-gnome/src/sflphone_const.h
index 09088573ea..f12ed3f30c 100644
--- a/sflphone-client-gnome/src/sflphone_const.h
+++ b/sflphone-client-gnome/src/sflphone_const.h
@@ -115,10 +115,10 @@ log4c_category_t* log4c_sfl_gtk_category;
 #define __POPUP_WINDOW  ( dbus_popup_mode() )
 /** Show/Hide the dialpad */
 #define SHOW_DIALPAD	( dbus_get_dialpad() )
-/** Show/Hide the volume controls */
-#define SHOW_VOLUME	( dbus_get_volume_controls() )
 /** Show/Hide the alsa configuration panel */
 #define SHOW_ALSA_CONF  ( dbus_get_audio_manager() == ALSA )
+/** Show/Hide the volume controls */
+#define SHOW_VOLUME	(dbus_get_volume_controls() && SHOW_ALSA_CONF)
 
 /** Audio Managers */
 #define ALSA	      0
diff --git a/sflphone-client-gnome/src/ui.xml b/sflphone-client-gnome/src/ui.xml
index 72b51160a1..9e87507b74 100644
--- a/sflphone-client-gnome/src/ui.xml
+++ b/sflphone-client-gnome/src/ui.xml
@@ -29,7 +29,7 @@
       <menuitem action="Toolbar"/>
       <separator/>
       <menuitem action="Dialpad"/>
-      <menuitem action="VolumeControls"/>
+      <menuitem name="VolumeControlsToggle" action="VolumeControls"/>
       <separator/>
 	  <menuitem action="CallWindow"/>
 	  <menuitem action="History"/>
diff --git a/sflphone-client-gnome/src/uimanager.c b/sflphone-client-gnome/src/uimanager.c
index 255e340d93..ec92ca548a 100644
--- a/sflphone-client-gnome/src/uimanager.c
+++ b/sflphone-client-gnome/src/uimanager.c
@@ -1353,13 +1353,14 @@ GtkWidget* create_menus (GtkUIManager *ui_manager)
 	recordAction = gtk_ui_manager_get_action (ui_manager, "/MenuBar/CallMenu/Record");
 	copyAction = gtk_ui_manager_get_action (ui_manager, "/MenuBar/EditMenu/Copy");
 	pasteAction = gtk_ui_manager_get_action (ui_manager, "/MenuBar/EditMenu/Paste");
+	volumeToggle = gtk_ui_manager_get_widget (ui_manager, "/MenuBar/ViewMenu/VolumeControlsToggle");
 
 	// Set the toggle buttons
 	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (ui_manager, "/MenuBar/ViewMenu/Dialpad")), (gboolean)SHOW_DIALPAD);
-	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (ui_manager, "/MenuBar/ViewMenu/VolumeControls")), (gboolean) SHOW_VOLUME);
+	//gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (ui_manager, "/MenuBar/ViewMenu/VolumeControls")), (gboolean) SHOW_VOLUME);
 
-
-	// GtkWidget * newCallMenu;
+	gtk_widget_set_sensitive (GTK_WIDGET (volumeToggle), SHOW_ALSA_CONF);
+	gtk_widget_set_sensitive (GTK_WIDGET (gtk_ui_manager_get_widget (ui_manager, "/MenuBar/ViewMenu/Toolbar")), SHOW_ALSA_CONF);
 
 	waitingLayer = create_waiting_icon ();
 	gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), waitingLayer);
diff --git a/sflphone-client-gnome/src/uimanager.h b/sflphone-client-gnome/src/uimanager.h
index 3eeb42820a..9958ddabb4 100644
--- a/sflphone-client-gnome/src/uimanager.h
+++ b/sflphone-client-gnome/src/uimanager.h
@@ -30,6 +30,8 @@ GtkWidget *historyButton;
 GtkWidget *contactButton;
 GtkWidget *currentCallsButton;
 
+GtkWidget *volumeToggle;
+
 gboolean uimanager_new (GtkUIManager**);
 
 G_END_DECLS
-- 
GitLab