diff options
-rw-r--r-- | mail/e-mail-reader.c | 37 | ||||
-rw-r--r-- | mail/evolution-mail.schemas.in | 16 | ||||
-rw-r--r-- | mail/mail-config.ui | 15 | ||||
-rw-r--r-- | mail/mail.error.xml | 9 | ||||
-rw-r--r-- | modules/mail/e-mail-shell-settings.c | 4 | ||||
-rw-r--r-- | modules/mail/em-composer-prefs.c | 5 |
6 files changed, 85 insertions, 1 deletions
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c index d1e6a12ae0..17242d7725 100644 --- a/mail/e-mail-reader.c +++ b/mail/e-mail-reader.c @@ -32,6 +32,7 @@ #include "e-util/e-binding.h" #include "e-util/e-charset.h" #include "e-util/e-util.h" +#include "e-util/e-alert-dialog.h" #include "e-util/gconf-bridge.h" #include "shell/e-shell-utils.h" #include "widgets/misc/e-popup-action.h" @@ -838,7 +839,41 @@ static void action_mail_reply_sender_cb (GtkAction *action, EMailReader *reader) { - e_mail_reader_reply_to_message (reader, REPLY_MODE_SENDER); + gint mode = REPLY_MODE_SENDER; + GConfClient *gconf; + + gconf = mail_config_get_gconf_client (); + if (gconf_client_get_bool (gconf, "/apps/evolution/mail/prompts/private_list_reply", NULL) && + e_mail_reader_check_state(reader) & E_MAIL_READER_SELECTION_IS_MAILING_LIST) { + GtkDialog *dialog; + GtkWidget *content_area, *check; + gint response; + + dialog = (GtkDialog*) e_alert_dialog_new_for_args (e_mail_reader_get_window (reader), + "mail:ask-list-private-reply", NULL); + + /*Check buttons*/ + check = gtk_check_button_new_with_mnemonic (_("_Do not ask me again.")); + gtk_container_set_border_width((GtkContainer *)check, 12); + content_area = gtk_dialog_get_content_area (dialog); + gtk_box_pack_start (GTK_BOX (content_area), check, TRUE, TRUE, 0); + gtk_widget_show (check); + + response = gtk_dialog_run ((GtkDialog *) dialog); + + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check))) + gconf_client_set_bool(gconf, "/apps/evolution/mail/prompts/private_list_reply", FALSE, NULL); + + gtk_widget_destroy((GtkWidget *)dialog); + + if (response == GTK_RESPONSE_YES) + mode = REPLY_MODE_ALL; + else if (response == GTK_RESPONSE_OK) + mode = REPLY_MODE_LIST; + else if (response == GTK_RESPONSE_CANCEL) + return; + } + e_mail_reader_reply_to_message (reader, mode); } static void diff --git a/mail/evolution-mail.schemas.in b/mail/evolution-mail.schemas.in index 5ab3e37735..8956974393 100644 --- a/mail/evolution-mail.schemas.in +++ b/mail/evolution-mail.schemas.in @@ -1051,6 +1051,22 @@ </locale> </schema> + <schema> + <key>/schemas/apps/evolution/mail/prompts/private_list_reply</key> + <applyto>/apps/evolution/mail/prompts/private_list_reply</applyto> + <owner>evolution-mail</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Prompt when replying privately to list messages</short> + <long> + It disables/enables the repeated prompts to warn that you are + sending a private reply to a message which arrived via a + mailing list. + </long> + </locale> + </schema> + <!-- Trash settings --> <schema> diff --git a/mail/mail-config.ui b/mail/mail-config.ui index ce2a19845d..3817d06792 100644 --- a/mail/mail-config.ui +++ b/mail/mail-config.ui @@ -4801,6 +4801,21 @@ For example: "Work" or "Personal"</property> <property name="position">1</property> </packing> </child> + <child> + <object class="GtkCheckButton" id="chkPromptPrivateListReply"> + <property name="label" translatable="yes">Prompt when sending private replies to mailing _list messages</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> </object> </child> </object> diff --git a/mail/mail.error.xml b/mail/mail.error.xml index 129b4e6250..a9be483a99 100644 --- a/mail/mail.error.xml +++ b/mail/mail.error.xml @@ -58,6 +58,15 @@ Many email systems add an Apparently-To header to messages that only have BCC re <button _label="_Send" response="GTK_RESPONSE_YES"/> </error> + <error id="ask-list-private-reply" type="question" default="GTK_RESPONSE_CANCEL"> + <_primary>Send private reply?</_primary> + <_secondary>You are replying to a message which arrived via a mailing list, but you are replying privately to the sender; not to the list. Are you sure you want to proceed?</_secondary> + <button response="GTK_RESPONSE_NO" _label="Reply _Privately"/> + <button stock="gtk-cancel" response="GTK_RESPONSE_CANCEL"/> + <button response="GTK_RESPONSE_YES" _label="Reply to _All"></button> + <button response="GTK_RESPONSE_OK" _label="Reply to _List"></button> + </error> + <error id="send-no-recipients" type="warning"> <_primary>This message cannot be sent because you have not specified any recipients</_primary> <_secondary xml:space="preserve">Please enter a valid email address in the To: field. You can search for email addresses by clicking on the To: button next to the entry box.</_secondary> diff --git a/modules/mail/e-mail-shell-settings.c b/modules/mail/e-mail-shell-settings.c index 8839341451..d46972ffd8 100644 --- a/modules/mail/e-mail-shell-settings.c +++ b/modules/mail/e-mail-shell-settings.c @@ -220,6 +220,10 @@ e_mail_shell_settings_init (EShell *shell) "/apps/evolution/mail/prompts/only_bcc"); e_shell_settings_install_property_for_key ( + "composer-prompt-private-list-reply", + "/apps/evolution/mail/prompts/private_list_reply"); + + e_shell_settings_install_property_for_key ( "composer-prompt-empty-subject", "/apps/evolution/mail/prompts/empty_subject"); diff --git a/modules/mail/em-composer-prefs.c b/modules/mail/em-composer-prefs.c index 7c0f39ea31..f2def6b123 100644 --- a/modules/mail/em-composer-prefs.c +++ b/modules/mail/em-composer-prefs.c @@ -417,6 +417,11 @@ em_composer_prefs_construct (EMComposerPrefs *prefs, shell_settings, "composer-prompt-only-bcc", widget, "active"); + widget = e_builder_get_widget (prefs->builder, "chkPromptPrivateListReply"); + e_mutual_binding_new ( + shell_settings, "composer-prompt-private-list-reply", + widget, "active"); + widget = e_builder_get_widget (prefs->builder, "chkAutoSmileys"); e_mutual_binding_new ( shell_settings, "composer-magic-smileys", |