diff --git a/sflphone-client-gnome/src/config/accountconfigdialog.c b/sflphone-client-gnome/src/config/accountconfigdialog.c index 9bf4145e1695d185e58db0aabb530000a84e317a..f3b8aa024b4e0928c23239c98f906a9bad1b1d99 100644 --- a/sflphone-client-gnome/src/config/accountconfigdialog.c +++ b/sflphone-client-gnome/src/config/accountconfigdialog.c @@ -489,6 +489,25 @@ static void use_sip_tls_cb(GtkWidget *widget, gpointer data) } } +static local_interface_changed_cb(GtkWidget * widget, gpointer data UNUSED) +{ + + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sameAsLocalRadioButton))) { + + gchar * local_interface; + gchar * local_address; + + local_interface = (gchar *) gtk_combo_box_get_active_text(GTK_COMBO_BOX(localAddressCombo)); + local_address = dbus_get_address_from_interface_name(local_interface); + + gtk_entry_set_text(GTK_ENTRY(publishedAddressEntry), local_address); + + // gchar * local_port = (gchar *) gtk_entry_get_text(GTK_ENTRY(localPortSpinBox)); + // gtk_spin_button_set_value(GTK_SPIN_BUTTON(publishedPortSpinBox), g_ascii_strtod(local_port, NULL)); + } + +} + static set_published_addr_manually_cb(GtkWidget * widget, gpointer data UNUSED) { DEBUG("set_published_addr_manually_cb"); @@ -510,6 +529,9 @@ static set_published_addr_manually_cb(GtkWidget * widget, gpointer data UNUSED) static use_stun_cb(GtkWidget * widget, gpointer data UNUSED) { + gchar * local_interface; + gchar * local_address; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) { DEBUG("Showing stun options, hiding Local/Published info"); gtk_widget_show(stunServerLabel); @@ -531,6 +553,14 @@ static use_stun_cb(GtkWidget * widget, gpointer data UNUSED) gtk_widget_show(publishedPortLabel); gtk_widget_show(publishedAddressEntry); gtk_widget_show(publishedPortSpinBox); + + // Since stun callback is called at initialization, we cannot reinit published address + // TODO: find a way so that if stun is unchecked, reinit published address entry + // in case local address changedd + + // local_interface = (gchar *) gtk_combo_box_get_active_text(GTK_COMBO_BOX(localAddressCombo)); + // local_address = dbus_get_address_from_interface_name(local_interface); + // gtk_entry_set_text(GTK_ENTRY(publishedAddressEntry), local_address); } } @@ -958,7 +988,7 @@ GtkWidget * create_advanced_tab(account_t **a) // This will trigger a signal, and the above two // widgets need to be instanciated before that. - // g_signal_connect(localAddressCombo, "changed", G_CALLBACK(use_stun_cb), useStunCheckBox); + g_signal_connect(localAddressCombo, "changed", G_CALLBACK(local_interface_changed_cb), localAddressCombo); g_signal_connect(useStunCheckBox, "toggled", G_CALLBACK(use_stun_cb), useStunCheckBox);