From b1ea9c8f93d831dfb0557425c0fe16f45bedcc2a Mon Sep 17 00:00:00 2001 From: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com> Date: Wed, 11 Nov 2009 17:35:54 -0500 Subject: [PATCH] [#2407] Fixes dialpad --- .../src/dbus/configurationmanager-introspec.xml | 1 + sflphone-client-gnome/src/dbus/dbus.c | 4 ++-- sflphone-client-gnome/src/dbus/dbus.h | 2 +- sflphone-client-gnome/src/mainwindow.c | 6 ++++-- sflphone-client-gnome/src/uimanager.c | 6 ++++-- .../src/dbus/configurationmanager-introspec.xml | 1 + sflphone-common/src/dbus/configurationmanager.cpp | 4 ++-- sflphone-common/src/dbus/configurationmanager.h | 2 +- sflphone-common/src/managerimpl.cpp | 11 +++++++++-- sflphone-common/src/managerimpl.h | 2 +- 10 files changed, 26 insertions(+), 13 deletions(-) diff --git a/sflphone-client-gnome/src/dbus/configurationmanager-introspec.xml b/sflphone-client-gnome/src/dbus/configurationmanager-introspec.xml index 7f5eac2ad6..14ab67581a 100644 --- a/sflphone-client-gnome/src/dbus/configurationmanager-introspec.xml +++ b/sflphone-client-gnome/src/dbus/configurationmanager-introspec.xml @@ -243,6 +243,7 @@ </method> <method name="setDialpad"> + <arg type="b" name="display" direction="in"/> </method> <method name="getSearchbar"> diff --git a/sflphone-client-gnome/src/dbus/dbus.c b/sflphone-client-gnome/src/dbus/dbus.c index 73543bd328..4b5cfdbfb9 100644 --- a/sflphone-client-gnome/src/dbus/dbus.c +++ b/sflphone-client-gnome/src/dbus/dbus.c @@ -1627,13 +1627,13 @@ dbus_get_dialpad() return state; } - void -dbus_set_dialpad( ) +void dbus_set_dialpad (gboolean display) { GError* error = NULL; org_sflphone_SFLphone_ConfigurationManager_set_dialpad( configurationManagerProxy, + display, &error); if(error) { diff --git a/sflphone-client-gnome/src/dbus/dbus.h b/sflphone-client-gnome/src/dbus/dbus.h index 12ef975ff4..96404da971 100644 --- a/sflphone-client-gnome/src/dbus/dbus.h +++ b/sflphone-client-gnome/src/dbus/dbus.h @@ -363,7 +363,7 @@ void dbus_set_ringtone_choice( const gchar* tone ); /** * ConfigurationManager - Set the dialpad visible or not */ -void dbus_set_dialpad( ); +void dbus_set_dialpad (gboolean display); /** * ConfigurationManager - Tells if the user wants to display the dialpad or not diff --git a/sflphone-client-gnome/src/mainwindow.c b/sflphone-client-gnome/src/mainwindow.c index adf556f326..d8607eb30f 100644 --- a/sflphone-client-gnome/src/mainwindow.c +++ b/sflphone-client-gnome/src/mainwindow.c @@ -315,8 +315,10 @@ main_window_info_message(gchar * markup){ main_window_message(GTK_MESSAGE_INFO, markup); } -void -main_window_dialpad( gboolean state ){ +void main_window_dialpad (gboolean state){ + + g_print ("main_window_dialpad\n"); + if(state) { dialpad = create_dialpad(); gtk_box_pack_end (GTK_BOX (subvbox), dialpad, FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/); diff --git a/sflphone-client-gnome/src/uimanager.c b/sflphone-client-gnome/src/uimanager.c index 4e782bb4d5..9d6d3ca97d 100644 --- a/sflphone-client-gnome/src/uimanager.c +++ b/sflphone-client-gnome/src/uimanager.c @@ -245,7 +245,6 @@ void update_voicemail_status (void) static void volume_bar_cb (GtkToggleAction *togglemenuitem, gpointer user_data) { gboolean toggled = gtk_toggle_action_get_active (togglemenuitem); - // DEBUG("%i\n", toggled); main_window_volume_controls(toggled); if (toggled || SHOW_VOLUME) dbus_set_volume_controls(toggled); @@ -254,7 +253,10 @@ static void volume_bar_cb (GtkToggleAction *togglemenuitem, gpointer user_data) static void dialpad_bar_cb (GtkToggleAction *togglemenuitem, gpointer user_data) { gboolean toggled = gtk_toggle_action_get_active (togglemenuitem); - main_window_dialpad(toggled); + if (toggled == SHOW_DIALPAD) + return; + main_window_dialpad (toggled); + g_print ("dialpad_bar_cb - state: %i", toggled); if (toggled || SHOW_DIALPAD) dbus_set_dialpad(toggled); } diff --git a/sflphone-common/src/dbus/configurationmanager-introspec.xml b/sflphone-common/src/dbus/configurationmanager-introspec.xml index 7f5eac2ad6..14ab67581a 100644 --- a/sflphone-common/src/dbus/configurationmanager-introspec.xml +++ b/sflphone-common/src/dbus/configurationmanager-introspec.xml @@ -243,6 +243,7 @@ </method> <method name="setDialpad"> + <arg type="b" name="display" direction="in"/> </method> <method name="getSearchbar"> diff --git a/sflphone-common/src/dbus/configurationmanager.cpp b/sflphone-common/src/dbus/configurationmanager.cpp index d9f284cb9d..280b9b4c16 100644 --- a/sflphone-common/src/dbus/configurationmanager.cpp +++ b/sflphone-common/src/dbus/configurationmanager.cpp @@ -590,9 +590,9 @@ ConfigurationManager::getDialpad (void) } void -ConfigurationManager::setDialpad (void) +ConfigurationManager::setDialpad (const bool& display) { - Manager::instance().setDialpad(); + Manager::instance().setDialpad (display); } int32_t diff --git a/sflphone-common/src/dbus/configurationmanager.h b/sflphone-common/src/dbus/configurationmanager.h index 1592709cb1..ba4371fd90 100644 --- a/sflphone-common/src/dbus/configurationmanager.h +++ b/sflphone-common/src/dbus/configurationmanager.h @@ -92,7 +92,7 @@ public: std::string getRecordPath( void ); void setRecordPath(const std::string& recPath ); int32_t getDialpad( void ); - void setDialpad( void ); + void setDialpad (const bool& display); int32_t getSearchbar( void ); void setSearchbar( void ); diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp index e7f04c586a..d816cf69cb 100644 --- a/sflphone-common/src/managerimpl.cpp +++ b/sflphone-common/src/managerimpl.cpp @@ -2809,9 +2809,16 @@ ManagerImpl::getDialpad (void) } void -ManagerImpl::setDialpad (void) +ManagerImpl::setDialpad (bool display) { - (getConfigString (PREFERENCES, CONFIG_DIALPAD) == TRUE_STR) ? setConfig (PREFERENCES, CONFIG_DIALPAD, FALSE_STR) : setConfig (PREFERENCES, CONFIG_DIALPAD, TRUE_STR); + std::string set; + + display ? set = TRUE_STR : set = FALSE_STR; + // If the value we received is different from the one saved in the config file, save the new value + // Else do nothing + if ((display && (getConfigString (PREFERENCES, CONFIG_DIALPAD) != TRUE_STR)) || + (!display && (getConfigString (PREFERENCES, CONFIG_DIALPAD) != FALSE_STR))) + setConfig (PREFERENCES, CONFIG_DIALPAD, set); } int diff --git a/sflphone-common/src/managerimpl.h b/sflphone-common/src/managerimpl.h index 40ed90c089..23db39ed14 100644 --- a/sflphone-common/src/managerimpl.h +++ b/sflphone-common/src/managerimpl.h @@ -661,7 +661,7 @@ class ManagerImpl { /** * Set the dialpad visible or not */ - void setDialpad( void ); + void setDialpad (bool display); /** * Tells if the user wants to display the volume controls or not -- GitLab