diff --git a/sflphone-client-gnome/src/config/zrtpadvanceddialog.c b/sflphone-client-gnome/src/config/zrtpadvanceddialog.c index 02b634d55915e91c8752448bfdbee95013e3400a..3689dc16d00fbd3d232c7f233d39aa78b801505f 100644 --- a/sflphone-client-gnome/src/config/zrtpadvanceddialog.c +++ b/sflphone-client-gnome/src/config/zrtpadvanceddialog.c @@ -114,3 +114,61 @@ void show_advanced_zrtp_options(GHashTable * properties) gtk_widget_destroy (GTK_WIDGET(securityDialog)); } + + +void show_advanced_sdes_options(GHashTable * properties) { + + GtkDialog * securityDialog; + + GtkWidget * sdesTable; + GtkWidget * enableRtpFallback; + gchar * rtpFallback = "false"; + + if(properties != NULL) { + rtpFallback = g_hash_table_lookup(properties, ACCOUNT_SRTP_RTP_FALLBACK); + } + + securityDialog = GTK_DIALOG (gtk_dialog_new_with_buttons ( _("SDES Options"), + + GTK_WINDOW (get_main_window()), + GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, + + GTK_STOCK_CANCEL, + + GTK_RESPONSE_CANCEL, + + GTK_STOCK_SAVE, + + GTK_RESPONSE_ACCEPT, + + NULL)); + + gtk_window_set_policy( GTK_WINDOW(securityDialog), FALSE, FALSE, FALSE ); + gtk_dialog_set_has_separator(securityDialog, TRUE); + gtk_container_set_border_width (GTK_CONTAINER(securityDialog), 0); + + sdesTable = gtk_table_new (1, 2 , FALSE/* homogeneous */); + gtk_table_set_row_spacings( GTK_TABLE(sdesTable), 10); + gtk_table_set_col_spacings( GTK_TABLE(sdesTable), 10); + gtk_box_pack_start(GTK_BOX(securityDialog->vbox), sdesTable, FALSE, FALSE, 0); + gtk_widget_show(sdesTable); + + enableRtpFallback = gtk_check_button_new_with_mnemonic(_("Fallback on RTP on SDES failure")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableRtpFallback), + g_strcasecmp(rtpFallback,"true") == 0 ? TRUE: FALSE); + gtk_table_attach ( GTK_TABLE(sdesTable), enableRtpFallback, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_set_sensitive( GTK_WIDGET( enableRtpFallback ) , TRUE ); + + + gtk_widget_show_all(sdesTable); + + gtk_container_set_border_width (GTK_CONTAINER(sdesTable), 10); + + if(gtk_dialog_run(GTK_DIALOG(securityDialog)) == GTK_RESPONSE_ACCEPT) { + g_hash_table_replace(properties, + g_strdup(ACCOUNT_SRTP_RTP_FALLBACK), + g_strdup(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enableRtpFallback)) ? "true": "false")); + } + + gtk_widget_destroy (GTK_WIDGET(securityDialog)); +} diff --git a/sflphone-client-gnome/src/config/zrtpadvanceddialog.h b/sflphone-client-gnome/src/config/zrtpadvanceddialog.h index df92bfb09b5586627b02fb61600388bb0d6cbd1e..23bfdbb8bcb246a9a42165e78ff899caa827e3df 100644 --- a/sflphone-client-gnome/src/config/zrtpadvanceddialog.h +++ b/sflphone-client-gnome/src/config/zrtpadvanceddialog.h @@ -31,4 +31,6 @@ void show_advanced_zrtp_options(GHashTable * properties); +void show_advanced_sdes_options(GHashTable * properties); + #endif diff --git a/sflphone-client-gnome/src/sflphone_const.h b/sflphone-client-gnome/src/sflphone_const.h index 2627179489b5fd1166346412edcfc33791a2cde1..2617047fab59efaea00ce5b0e9e4c9cbf04d7dc5 100644 --- a/sflphone-client-gnome/src/sflphone_const.h +++ b/sflphone-client-gnome/src/sflphone_const.h @@ -68,6 +68,7 @@ #define ACCOUNT_REALM "realm" #define ACCOUNT_KEY_EXCHANGE "SRTP.keyExchange" #define ACCOUNT_SRTP_ENABLED "SRTP.enable" +#define ACCOUNT_SRTP_RTP_FALLBACK "SRTP.rtpFallback" #define ACCOUNT_ZRTP_DISPLAY_SAS "ZRTP.displaySAS" #define ACCOUNT_ZRTP_NOT_SUPP_WARNING "ZRTP.notSuppWarning" #define ACCOUNT_ZRTP_HELLO_HASH "ZRTP.helloHashEnable"