aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Woodhouse <David.Woodhouse@intel.com>2010-07-14 01:00:19 +0800
committerDavid Woodhouse <David.Woodhouse@intel.com>2010-07-15 23:48:45 +0800
commit0f7b73d6396ccc08c479c86759c0a3016a1aaf3e (patch)
treeecbca25b3dc91b82f54f6282522acf66c2602ccc
parentd3d4fbbe25bccb73bfadef4f5b60a5c9f44aae2b (diff)
downloadgsoc2013-evolution-0f7b73d6396ccc08c479c86759c0a3016a1aaf3e.tar
gsoc2013-evolution-0f7b73d6396ccc08c479c86759c0a3016a1aaf3e.tar.gz
gsoc2013-evolution-0f7b73d6396ccc08c479c86759c0a3016a1aaf3e.tar.bz2
gsoc2013-evolution-0f7b73d6396ccc08c479c86759c0a3016a1aaf3e.tar.lz
gsoc2013-evolution-0f7b73d6396ccc08c479c86759c0a3016a1aaf3e.tar.xz
gsoc2013-evolution-0f7b73d6396ccc08c479c86759c0a3016a1aaf3e.tar.zst
gsoc2013-evolution-0f7b73d6396ccc08c479c86759c0a3016a1aaf3e.zip
Bug 624204 - Warn when replying privately to a mailing list message
-rw-r--r--mail/e-mail-reader.c37
-rw-r--r--mail/evolution-mail.schemas.in16
-rw-r--r--mail/mail-config.ui15
-rw-r--r--mail/mail.error.xml9
-rw-r--r--modules/mail/e-mail-shell-settings.c4
-rw-r--r--modules/mail/em-composer-prefs.c5
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",