28
28
* as that of the covered work.
31
#include <zrtpadvanceddialog.h>
32
#include <sflphone_const.h>
31
#include <glib/gi18n.h>
35
32
#include <gtk/gtk.h>
33
#include "str_utils.h"
34
#include "mainwindow.h"
35
#include "zrtpadvanceddialog.h"
36
#include "sflphone_const.h"
37
void show_advanced_zrtp_options(GHashTable * properties)
39
void show_advanced_zrtp_options(account_t *account)
39
41
gboolean curSasConfirm = TRUE;
40
42
gboolean curHelloEnabled = TRUE;
41
43
gboolean curZrtpNotSuppOther = TRUE;
42
44
gboolean curDisplaySasOnce = FALSE;
44
if (properties != NULL) {
45
curHelloEnabled = !g_strcasecmp(g_hash_table_lookup(properties, ACCOUNT_ZRTP_HELLO_HASH), "true");
46
curSasConfirm = !g_strcasecmp(g_hash_table_lookup(properties, ACCOUNT_ZRTP_DISPLAY_SAS), "true");
47
curZrtpNotSuppOther = !g_strcasecmp(g_hash_table_lookup(properties, ACCOUNT_ZRTP_NOT_SUPP_WARNING), "true");
48
curDisplaySasOnce = !g_strcasecmp(g_hash_table_lookup(properties, ACCOUNT_DISPLAY_SAS_ONCE), "true");
46
if (account != NULL) {
47
curHelloEnabled = utf8_case_equal(account_lookup(account, ACCOUNT_ZRTP_HELLO_HASH), "true");
48
curSasConfirm = utf8_case_equal(account_lookup(account, ACCOUNT_ZRTP_DISPLAY_SAS), "true");
49
curZrtpNotSuppOther = utf8_case_equal(account_lookup(account, ACCOUNT_ZRTP_NOT_SUPP_WARNING), "true");
50
curDisplaySasOnce = utf8_case_equal(account_lookup(account, ACCOUNT_DISPLAY_SAS_ONCE), "true");
51
53
GtkDialog *securityDialog = GTK_DIALOG(gtk_dialog_new_with_buttons(_("ZRTP Options"),
70
70
GtkWidget *enableHelloHash = gtk_check_button_new_with_mnemonic(_("Send Hello Hash in S_DP"));
71
71
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableHelloHash), curHelloEnabled);
72
72
gtk_table_attach(GTK_TABLE(tableZrtp), enableHelloHash, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
73
gtk_widget_set_sensitive(GTK_WIDGET(enableHelloHash) , TRUE);
73
gtk_widget_set_sensitive(GTK_WIDGET(enableHelloHash), TRUE);
75
75
GtkWidget *enableSASConfirm = gtk_check_button_new_with_mnemonic(_("Ask User to Confirm SAS"));
76
76
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableSASConfirm), curSasConfirm);
77
77
gtk_table_attach(GTK_TABLE(tableZrtp), enableSASConfirm, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
78
gtk_widget_set_sensitive(GTK_WIDGET(enableSASConfirm) , TRUE);
78
gtk_widget_set_sensitive(GTK_WIDGET(enableSASConfirm), TRUE);
80
80
GtkWidget *enableZrtpNotSuppOther = gtk_check_button_new_with_mnemonic(_("_Warn if ZRTP not supported"));
81
81
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableZrtpNotSuppOther), curZrtpNotSuppOther);
82
82
gtk_table_attach(GTK_TABLE(tableZrtp), enableZrtpNotSuppOther, 0, 1, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
83
gtk_widget_set_sensitive(GTK_WIDGET(enableZrtpNotSuppOther) , TRUE);
83
gtk_widget_set_sensitive(GTK_WIDGET(enableZrtpNotSuppOther), TRUE);
85
85
GtkWidget *displaySasOnce = gtk_check_button_new_with_mnemonic(_("Display SAS once for hold events"));
86
86
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(displaySasOnce), curDisplaySasOnce);
87
87
gtk_table_attach(GTK_TABLE(tableZrtp), displaySasOnce, 0, 1, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
88
gtk_widget_set_sensitive(GTK_WIDGET(displaySasOnce) , TRUE);
88
gtk_widget_set_sensitive(GTK_WIDGET(displaySasOnce), TRUE);
90
90
gtk_widget_show_all(tableZrtp);
92
92
gtk_container_set_border_width(GTK_CONTAINER(tableZrtp), 10);
94
94
if (gtk_dialog_run(GTK_DIALOG(securityDialog)) == GTK_RESPONSE_ACCEPT) {
95
g_hash_table_replace(properties,
96
g_strdup(ACCOUNT_ZRTP_DISPLAY_SAS),
97
g_strdup(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enableSASConfirm)) ? "true": "false"));
99
g_hash_table_replace(properties,
100
g_strdup(ACCOUNT_DISPLAY_SAS_ONCE),
101
g_strdup(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(displaySasOnce)) ? "true": "false"));
103
g_hash_table_replace(properties,
104
g_strdup(ACCOUNT_ZRTP_HELLO_HASH),
105
g_strdup(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enableHelloHash)) ? "true": "false"));
107
g_hash_table_replace(properties,
108
g_strdup(ACCOUNT_ZRTP_NOT_SUPP_WARNING),
109
g_strdup(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enableZrtpNotSuppOther)) ? "true": "false"));
95
account_replace(account, ACCOUNT_ZRTP_DISPLAY_SAS,
96
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enableSASConfirm)) ? "true": "false");
98
account_replace(account, ACCOUNT_DISPLAY_SAS_ONCE,
99
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(displaySasOnce)) ? "true": "false");
101
account_replace(account, ACCOUNT_ZRTP_HELLO_HASH,
102
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enableHelloHash)) ? "true": "false");
104
account_replace(account, ACCOUNT_ZRTP_NOT_SUPP_WARNING,
105
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enableZrtpNotSuppOther)) ? "true": "false");
112
108
gtk_widget_destroy(GTK_WIDGET(securityDialog));
116
void show_advanced_sdes_options(GHashTable * properties)
112
void show_advanced_sdes_options(account_t *account)
118
114
gboolean rtpFallback = FALSE;
120
if (properties != NULL) {
121
rtpFallback = !g_strcasecmp(g_hash_table_lookup(properties, ACCOUNT_SRTP_RTP_FALLBACK), "true");
117
rtpFallback = utf8_case_equal(account_lookup(account, ACCOUNT_SRTP_RTP_FALLBACK), "true");
124
119
GtkDialog *securityDialog = GTK_DIALOG(gtk_dialog_new_with_buttons(_("SDES Options"),
125
120
GTK_WINDOW(get_main_window()),
126
121
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
127
122
GTK_STOCK_CANCEL,
123
GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE,
124
GTK_RESPONSE_ACCEPT, NULL));
133
126
gtk_window_set_resizable(GTK_WINDOW(securityDialog), FALSE);
134
127
gtk_container_set_border_width(GTK_CONTAINER(securityDialog), 0);
136
GtkWidget *sdesTable = gtk_table_new(1, 2 , FALSE/* homogeneous */);
129
GtkWidget *sdesTable = gtk_table_new(1, 2, FALSE /* homogeneous */);
137
130
gtk_table_set_row_spacings(GTK_TABLE(sdesTable), 10);
138
131
gtk_table_set_col_spacings(GTK_TABLE(sdesTable), 10);
139
132
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(securityDialog)), sdesTable, FALSE, FALSE, 0);
142
135
GtkWidget *enableRtpFallback = gtk_check_button_new_with_mnemonic(_("Fallback on RTP on SDES failure"));
143
136
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableRtpFallback), rtpFallback);
144
137
gtk_table_attach(GTK_TABLE(sdesTable), enableRtpFallback, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
145
gtk_widget_set_sensitive(GTK_WIDGET(enableRtpFallback) , TRUE);
138
gtk_widget_set_sensitive(GTK_WIDGET(enableRtpFallback), TRUE);
147
140
gtk_widget_show_all(sdesTable);
149
142
gtk_container_set_border_width(GTK_CONTAINER(sdesTable), 10);
151
144
if (gtk_dialog_run(GTK_DIALOG(securityDialog)) == GTK_RESPONSE_ACCEPT) {
152
g_hash_table_replace(properties,
153
g_strdup(ACCOUNT_SRTP_RTP_FALLBACK),
154
g_strdup(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enableRtpFallback)) ? "true": "false"));
145
account_replace(account, ACCOUNT_SRTP_RTP_FALLBACK,
146
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enableRtpFallback)) ? "true": "false");
157
149
gtk_widget_destroy(GTK_WIDGET(securityDialog));