Mercurial > pidgin.yaz
diff 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 |
line wrap: on
line diff
--- a/pidgin/gtkaccount.c Sun Mar 13 18:14:04 2011 +0000 +++ b/pidgin/gtkaccount.c Sun Mar 13 18:17:14 2011 +0000 @@ -143,6 +143,10 @@ GtkWidget *proxy_user_entry; GtkWidget *proxy_pass_entry; + /* Voice & Video Options*/ + GtkWidget *voice_frame; + GtkWidget *suppression_check; + } AccountPrefsDialog; static AccountsWindow *accounts_window = NULL; @@ -159,6 +163,7 @@ static void add_user_options(AccountPrefsDialog *dialog, GtkWidget *parent); static void add_protocol_options(AccountPrefsDialog *dialog); static void add_proxy_options(AccountPrefsDialog *dialog, GtkWidget *parent); +static void add_voice_options(AccountPrefsDialog *dialog); static GtkWidget * add_pref_box(AccountPrefsDialog *dialog, GtkWidget *parent, @@ -237,6 +242,7 @@ add_login_options(dialog, dialog->top_vbox); add_user_options(dialog, dialog->top_vbox); add_protocol_options(dialog); + add_voice_options(dialog); gtk_widget_grab_focus(dialog->protocol_menu); @@ -1163,6 +1169,39 @@ G_CALLBACK(proxy_type_changed_cb), dialog); } +static void +add_voice_options(AccountPrefsDialog *dialog) +{ +#ifdef USE_VV + if (!dialog->prpl_info || !dialog->prpl_info->initiate_media) { + if (dialog->voice_frame) { + gtk_widget_destroy(dialog->voice_frame); + dialog->voice_frame = NULL; + dialog->suppression_check = NULL; + } + return; + } + + if (!dialog->voice_frame) { + dialog->voice_frame = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER); + gtk_container_set_border_width(GTK_CONTAINER(dialog->voice_frame), + PIDGIN_HIG_BORDER); + + dialog->suppression_check = + gtk_check_button_new_with_mnemonic(_("Use _silence suppression")); + gtk_box_pack_start(GTK_BOX(dialog->voice_frame), dialog->suppression_check, + FALSE, FALSE, 0); + + gtk_notebook_append_page(GTK_NOTEBOOK(dialog->notebook), + dialog->voice_frame, gtk_label_new_with_mnemonic(_("_Voice and Video"))); + gtk_widget_show_all(dialog->voice_frame); + } + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->suppression_check), + purple_account_get_silence_suppression(dialog->account)); +#endif +} + static gboolean account_win_destroy_cb(GtkWidget *w, GdkEvent *event, AccountPrefsDialog *dialog) @@ -1437,6 +1476,12 @@ proxy_info = NULL; } + /* Voice and Video settings */ + if (dialog->voice_frame) { + purple_account_set_silence_suppression(account, + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->suppression_check))); + } + /* If this is a new account, add it to our list */ if (new_acct) purple_accounts_add(account); @@ -1558,6 +1603,8 @@ gtk_widget_show(dbox); add_proxy_options(dialog, dbox); + add_voice_options(dialog); + /* Cancel button */ pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CANCEL, G_CALLBACK(cancel_account_prefs_cb), dialog);