comparison pidgin/gtkaccount.c @ 31824:4f2aac5967bb

Make the simple silence suppression stuff optional per-account. Fixes #13180. committer: John Bailey <rekkanoryo@rekkanoryo.org>
author jakub.adam@ktknet.cz
date Sun, 13 Mar 2011 18:17:14 +0000
parents 917c597beb97
children 62dc884f2dec
comparison
equal deleted inserted replaced
31823:d72d728226dc 31824:4f2aac5967bb
141 GtkWidget *proxy_host_entry; 141 GtkWidget *proxy_host_entry;
142 GtkWidget *proxy_port_entry; 142 GtkWidget *proxy_port_entry;
143 GtkWidget *proxy_user_entry; 143 GtkWidget *proxy_user_entry;
144 GtkWidget *proxy_pass_entry; 144 GtkWidget *proxy_pass_entry;
145 145
146 /* Voice & Video Options*/
147 GtkWidget *voice_frame;
148 GtkWidget *suppression_check;
149
146 } AccountPrefsDialog; 150 } AccountPrefsDialog;
147 151
148 static AccountsWindow *accounts_window = NULL; 152 static AccountsWindow *accounts_window = NULL;
149 static GHashTable *account_pref_wins; 153 static GHashTable *account_pref_wins;
150 154
157 **************************************************************************/ 161 **************************************************************************/
158 static void add_login_options(AccountPrefsDialog *dialog, GtkWidget *parent); 162 static void add_login_options(AccountPrefsDialog *dialog, GtkWidget *parent);
159 static void add_user_options(AccountPrefsDialog *dialog, GtkWidget *parent); 163 static void add_user_options(AccountPrefsDialog *dialog, GtkWidget *parent);
160 static void add_protocol_options(AccountPrefsDialog *dialog); 164 static void add_protocol_options(AccountPrefsDialog *dialog);
161 static void add_proxy_options(AccountPrefsDialog *dialog, GtkWidget *parent); 165 static void add_proxy_options(AccountPrefsDialog *dialog, GtkWidget *parent);
166 static void add_voice_options(AccountPrefsDialog *dialog);
162 167
163 static GtkWidget * 168 static GtkWidget *
164 add_pref_box(AccountPrefsDialog *dialog, GtkWidget *parent, 169 add_pref_box(AccountPrefsDialog *dialog, GtkWidget *parent,
165 const char *text, GtkWidget *widget) 170 const char *text, GtkWidget *widget)
166 { 171 {
235 purple_account_clear_settings(dialog->account); 240 purple_account_clear_settings(dialog->account);
236 241
237 add_login_options(dialog, dialog->top_vbox); 242 add_login_options(dialog, dialog->top_vbox);
238 add_user_options(dialog, dialog->top_vbox); 243 add_user_options(dialog, dialog->top_vbox);
239 add_protocol_options(dialog); 244 add_protocol_options(dialog);
245 add_voice_options(dialog);
240 246
241 gtk_widget_grab_focus(dialog->protocol_menu); 247 gtk_widget_grab_focus(dialog->protocol_menu);
242 248
243 if (!dialog->prpl_info || !dialog->prpl_info->register_user || 249 if (!dialog->prpl_info || !dialog->prpl_info->register_user ||
244 g_object_get_data(G_OBJECT(item), "fake")) { 250 g_object_get_data(G_OBJECT(item), "fake")) {
1159 } 1165 }
1160 1166
1161 /* Connect signals. */ 1167 /* Connect signals. */
1162 g_signal_connect(G_OBJECT(dialog->proxy_dropdown), "changed", 1168 g_signal_connect(G_OBJECT(dialog->proxy_dropdown), "changed",
1163 G_CALLBACK(proxy_type_changed_cb), dialog); 1169 G_CALLBACK(proxy_type_changed_cb), dialog);
1170 }
1171
1172 static void
1173 add_voice_options(AccountPrefsDialog *dialog)
1174 {
1175 #ifdef USE_VV
1176 if (!dialog->prpl_info || !dialog->prpl_info->initiate_media) {
1177 if (dialog->voice_frame) {
1178 gtk_widget_destroy(dialog->voice_frame);
1179 dialog->voice_frame = NULL;
1180 dialog->suppression_check = NULL;
1181 }
1182 return;
1183 }
1184
1185 if (!dialog->voice_frame) {
1186 dialog->voice_frame = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
1187 gtk_container_set_border_width(GTK_CONTAINER(dialog->voice_frame),
1188 PIDGIN_HIG_BORDER);
1189
1190 dialog->suppression_check =
1191 gtk_check_button_new_with_mnemonic(_("Use _silence suppression"));
1192 gtk_box_pack_start(GTK_BOX(dialog->voice_frame), dialog->suppression_check,
1193 FALSE, FALSE, 0);
1194
1195 gtk_notebook_append_page(GTK_NOTEBOOK(dialog->notebook),
1196 dialog->voice_frame, gtk_label_new_with_mnemonic(_("_Voice and Video")));
1197 gtk_widget_show_all(dialog->voice_frame);
1198 }
1199
1200 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->suppression_check),
1201 purple_account_get_silence_suppression(dialog->account));
1202 #endif
1164 } 1203 }
1165 1204
1166 static gboolean 1205 static gboolean
1167 account_win_destroy_cb(GtkWidget *w, GdkEvent *event, 1206 account_win_destroy_cb(GtkWidget *w, GdkEvent *event,
1168 AccountPrefsDialog *dialog) 1207 AccountPrefsDialog *dialog)
1435 { 1474 {
1436 purple_account_set_proxy_info(account, NULL); 1475 purple_account_set_proxy_info(account, NULL);
1437 proxy_info = NULL; 1476 proxy_info = NULL;
1438 } 1477 }
1439 1478
1479 /* Voice and Video settings */
1480 if (dialog->voice_frame) {
1481 purple_account_set_silence_suppression(account,
1482 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->suppression_check)));
1483 }
1484
1440 /* If this is a new account, add it to our list */ 1485 /* If this is a new account, add it to our list */
1441 if (new_acct) 1486 if (new_acct)
1442 purple_accounts_add(account); 1487 purple_accounts_add(account);
1443 else 1488 else
1444 purple_signal_emit(pidgin_account_get_handle(), "account-modified", account); 1489 purple_signal_emit(pidgin_account_get_handle(), "account-modified", account);
1555 gtk_container_set_border_width(GTK_CONTAINER(dbox), PIDGIN_HIG_BORDER); 1600 gtk_container_set_border_width(GTK_CONTAINER(dbox), PIDGIN_HIG_BORDER);
1556 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), dbox, 1601 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), dbox,
1557 gtk_label_new_with_mnemonic(_("P_roxy"))); 1602 gtk_label_new_with_mnemonic(_("P_roxy")));
1558 gtk_widget_show(dbox); 1603 gtk_widget_show(dbox);
1559 add_proxy_options(dialog, dbox); 1604 add_proxy_options(dialog, dbox);
1605
1606 add_voice_options(dialog);
1560 1607
1561 /* Cancel button */ 1608 /* Cancel button */
1562 pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CANCEL, G_CALLBACK(cancel_account_prefs_cb), dialog); 1609 pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CANCEL, G_CALLBACK(cancel_account_prefs_cb), dialog);
1563 1610
1564 /* Save button */ 1611 /* Save button */