diff --git a/sflphone-client-gnome/src/dbus/configurationmanager-introspec.xml b/sflphone-client-gnome/src/dbus/configurationmanager-introspec.xml index 7f5eac2ad6bf9104978f3ca794f002dc35d1f5c5..14ab67581a91ef703868f05f6b977c3d13c96f5e 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 73543bd3286b748e850b5c790d41ffdbf0704a88..4b5cfdbfb94bff38742b14f9b2b1649fccb2db39 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 12ef975ff443ca893c1a2e6809421c0b1638061d..96404da971db48b76564911debe50e476a3956c6 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 adf556f326783aecd412b262fd7236bff71d1f62..d8607eb30fe0345c35222ba6674e99eabb117177 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 4e782bb4d5ca67dce2db6446a616aeb85e351e39..9d6d3ca97dc32b71e383a7d22522964435b15fc4 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 7f5eac2ad6bf9104978f3ca794f002dc35d1f5c5..14ab67581a91ef703868f05f6b977c3d13c96f5e 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 d9f284cb9d00ae5c49c2bcfb9e507648648d4892..280b9b4c1645d8a5a49fa7ab04c013cf150d4149 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 1592709cb14e0ec552f4f844b74944a72964c9a5..ba4371fd9038236a829f37d85f884d3167852b03 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 e7f04c586a94f61c4ec3a61689dbe2b9176d222e..d816cf69cbb92eddf7080b5cfb02eb627d77208d 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 40ed90c089274127008245428af036a545b4b586..23db39ed14f88a4ad2b20f00e031d3780eee8a9f 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