From 6a9ec1359d3926f6081bf1c641f1f49aed8892a3 Mon Sep 17 00:00:00 2001
From: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
Date: Wed, 7 Oct 2009 16:46:06 -0400
Subject: [PATCH] [#1970] Volume controls disable when using pulseaudio

---
 sflphone-client-gnome/src/config/audioconf.c | 11 +++++++++--
 sflphone-client-gnome/src/mainwindow.c       |  3 +--
 sflphone-client-gnome/src/ui.xml             |  3 ++-
 sflphone-client-gnome/src/uimanager.c        | 19 ++++++++++++-------
 sflphone-client-gnome/src/uimanager.h        |  2 +-
 5 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/sflphone-client-gnome/src/config/audioconf.c b/sflphone-client-gnome/src/config/audioconf.c
index 72ae61385c..944b65dc9a 100644
--- a/sflphone-client-gnome/src/config/audioconf.c
+++ b/sflphone-client-gnome/src/config/audioconf.c
@@ -631,7 +631,8 @@ 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);
+
+		gtk_action_set_sensitive (GTK_ACTION (volumeToggle), TRUE);
     }
     else if( SHOW_ALSA_CONF && gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(pulse) ))
     {
@@ -640,7 +641,13 @@ 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);
+		if (gtk_toggle_action_get_active ( GTK_TOGGLE_ACTION (volumeToggle)))
+		{
+			    main_window_volume_controls(FALSE);
+				dbus_set_volume_controls (FALSE);
+				gtk_toggle_action_set_active ( GTK_TOGGLE_ACTION (volumeToggle), FALSE);
+		}
+		gtk_action_set_sensitive (GTK_ACTION (volumeToggle), FALSE);
     } else {
         DEBUG("alsa conf panel...nothing");
     }
diff --git a/sflphone-client-gnome/src/mainwindow.c b/sflphone-client-gnome/src/mainwindow.c
index 742276a52d..2697a2c12d 100644
--- a/sflphone-client-gnome/src/mainwindow.c
+++ b/sflphone-client-gnome/src/mainwindow.c
@@ -183,8 +183,7 @@ create_main_window ()
 	ret = uimanager_new (&ui_manager);
 	if (!ret)
     {
-        //show_error_dialog (GTK_WINDOW (window), error->message,
-          //  _("Could not load ui.xml. The program may be not properly installed"));
+		ERROR ("Could not load xml GUI\n");
         g_error_free (error);
         exit (1);
     }
diff --git a/sflphone-client-gnome/src/ui.xml b/sflphone-client-gnome/src/ui.xml
index 9e87507b74..7ca6067abd 100644
--- a/sflphone-client-gnome/src/ui.xml
+++ b/sflphone-client-gnome/src/ui.xml
@@ -29,7 +29,8 @@
       <menuitem action="Toolbar"/>
       <separator/>
       <menuitem action="Dialpad"/>
-      <menuitem name="VolumeControlsToggle" action="VolumeControls"/>
+      <!--menuitem name="VolumeControlsToggle" action="VolumeControls"/-->
+      <menuitem 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 ec92ca548a..05abad255a 100644
--- a/sflphone-client-gnome/src/uimanager.c
+++ b/sflphone-client-gnome/src/uimanager.c
@@ -350,15 +350,18 @@ void update_actions()
 static void volume_bar_cb (GtkToggleAction *togglemenuitem, gpointer user_data)
 {
 	gboolean toggled = gtk_toggle_action_get_active (togglemenuitem);
+	g_print ("%i\n", toggled);
 	main_window_volume_controls(toggled);
-	dbus_set_volume_controls(toggled);
+	if (toggled || SHOW_VOLUME)
+		dbus_set_volume_controls(toggled);
 }
 
 static void dialpad_bar_cb (GtkToggleAction *togglemenuitem, gpointer user_data)
 {
 	gboolean toggled = gtk_toggle_action_get_active (togglemenuitem);
 	main_window_dialpad(toggled);
-	dbus_set_dialpad(toggled);
+	if (toggled || SHOW_DIALPAD)
+		dbus_set_dialpad(toggled);
 }
 
 static void help_contents_cb (GtkAction *action)
@@ -1353,14 +1356,16 @@ 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");
+	volumeToggle = gtk_ui_manager_get_action (ui_manager, "/MenuBar/ViewMenu/VolumeControls");
 
 	// 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/Dialpad")), (gboolean) SHOW_DIALPAD);
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (volumeToggle), (gboolean) SHOW_VOLUME);
 
-	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);
+	gtk_action_set_sensitive (GTK_ACTION (volumeToggle), SHOW_ALSA_CONF);
+
+	// Disable it right now
+	gtk_action_set_sensitive (GTK_ACTION (gtk_ui_manager_get_action (ui_manager, "/MenuBar/ViewMenu/Toolbar")), FALSE);
 
 	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 9958ddabb4..62c0e9d492 100644
--- a/sflphone-client-gnome/src/uimanager.h
+++ b/sflphone-client-gnome/src/uimanager.h
@@ -30,7 +30,7 @@ GtkWidget *historyButton;
 GtkWidget *contactButton;
 GtkWidget *currentCallsButton;
 
-GtkWidget *volumeToggle;
+GtkAction *volumeToggle;
 
 gboolean uimanager_new (GtkUIManager**);
 
-- 
GitLab