aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
Diffstat (limited to 'mail')
-rw-r--r--mail/ChangeLog8
-rw-r--r--mail/em-account-editor.c5
-rw-r--r--mail/mail-ops.c86
3 files changed, 56 insertions, 43 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 84d635ba65..1fdd52735e 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,11 @@
+2005-05-07 Sankar P <psankar@novell.com>
+
+ * mail-ops.c (mail_send_message)
+ Added code to prevent copying of sent items, based on provider type
+
+ * em-account-editor.c (emae_defaults_page)
+ Added code to disable the Sent Folders button
+
2005-05-06 Not Zed <NotZed@Ximian.com>
* mail.error.xml: renamed from mail-errors.xml, add i18n tags, fix
diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c
index 56c7b50aad..390f092148 100644
--- a/mail/em-account-editor.c
+++ b/mail/em-account-editor.c
@@ -2135,9 +2135,10 @@ emae_defaults_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, st
emae_account_entry(emae, "bcc_addrs", E_ACCOUNT_BCC_ADDRS, xml);
gtk_widget_set_sensitive((GtkWidget *)gui->drafts_folder_button, e_account_writable(emae->account, E_ACCOUNT_DRAFTS_FOLDER_URI));
- gtk_widget_set_sensitive((GtkWidget *)gui->sent_folder_button, e_account_writable(emae->account, E_ACCOUNT_SENT_FOLDER_URI));
+ gtk_widget_set_sensitive((GtkWidget *)gui->sent_folder_button, e_account_writable(emae->account, E_ACCOUNT_SENT_FOLDER_URI)&& !(emae->priv->source.provider->flags & CAMEL_PROVIDER_DISABLE_SENT_FOLDER));
gtk_widget_set_sensitive((GtkWidget *)gui->restore_folders_button,
- e_account_writable(emae->account, E_ACCOUNT_SENT_FOLDER_URI)
+ (e_account_writable(emae->account, E_ACCOUNT_SENT_FOLDER_URI) &&
+ ! ( emae->priv->source.provider->flags & CAMEL_PROVIDER_DISABLE_SENT_FOLDER))
|| e_account_writable(emae->account, E_ACCOUNT_DRAFTS_FOLDER_URI));
/* Receipt policy */
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index 98de077b36..d66cb5d22a 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -550,21 +550,6 @@ mail_send_message(CamelFolder *queue, const char *uid, const char *destination,
/* post process */
mail_tool_restore_xevolution_headers (message, xev);
- if (sent_folder_uri) {
- folder = mail_tool_uri_to_folder (sent_folder_uri, 0, ex);
- if (camel_exception_is_set(ex)) {
- g_string_append_printf (err, _("Failed to append to %s: %s\n"
- "Appending to local `Sent' folder instead."),
- sent_folder_uri, camel_exception_get_description (ex));
- camel_exception_clear (ex);
- }
- }
-
- if (!folder) {
- folder = mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_SENT);
- camel_object_ref(folder);
- }
-
if (driver) {
camel_filter_driver_filter_message (driver, message, info,
NULL, NULL, NULL, "", ex);
@@ -580,46 +565,65 @@ mail_send_message(CamelFolder *queue, const char *uid, const char *destination,
}
camel_exception_clear (ex);
- camel_folder_append_message (folder, message, info, NULL, ex);
- if (camel_exception_is_set (ex)) {
- CamelFolder *sent_folder;
- if (camel_exception_get_id (ex) == CAMEL_EXCEPTION_USER_CANCEL)
- goto exit;
+ if (!( ((CamelService *)xport)->provider->flags & CAMEL_PROVIDER_DISABLE_SENT_FOLDER)) {
+ if (sent_folder_uri) {
+ folder = mail_tool_uri_to_folder (sent_folder_uri, 0, ex);
+ if (camel_exception_is_set(ex)) {
+ g_string_append_printf (err, _("Failed to append to %s: %s\n"
+ "Appending to local `Sent' folder instead."),
+ sent_folder_uri, camel_exception_get_description (ex));
+ camel_exception_clear (ex);
+ }
+ }
- sent_folder = mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_SENT);
+ if (!folder) {
+ folder = mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_SENT);
+ camel_object_ref(folder);
+ }
- if (folder != sent_folder) {
- const char *name;
-
- camel_object_get (folder, NULL, CAMEL_OBJECT_DESCRIPTION, (char **) &name, 0);
- if (err->len)
- g_string_append(err, "\n\n");
- g_string_append_printf (err, _("Failed to append to %s: %s\n"
- "Appending to local `Sent' folder instead."),
- name, camel_exception_get_description (ex));
- camel_object_ref (sent_folder);
- camel_object_unref (folder);
- folder = sent_folder;
- camel_exception_clear (ex);
- camel_folder_append_message (folder, message, info, NULL, ex);
- }
+ camel_folder_append_message (folder, message, info, NULL, ex);
if (camel_exception_is_set (ex)) {
+ CamelFolder *sent_folder;
+
if (camel_exception_get_id (ex) == CAMEL_EXCEPTION_USER_CANCEL)
goto exit;
- if (err->len)
- g_string_append(err, "\n\n");
- g_string_append_printf (err, _("Failed to append to local `Sent' folder: %s"),
+ sent_folder = mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_SENT);
+
+ if (folder != sent_folder) {
+ const char *name;
+
+ camel_object_get (folder, NULL, CAMEL_OBJECT_DESCRIPTION, (char **) &name, 0);
+ if (err->len)
+ g_string_append(err, "\n\n");
+ g_string_append_printf (err, _("Failed to append to %s: %s\n"
+ "Appending to local `Sent' folder instead."),
+ name, camel_exception_get_description (ex));
+ camel_object_ref (sent_folder);
+ camel_object_unref (folder);
+ folder = sent_folder;
+
+ camel_exception_clear (ex);
+ camel_folder_append_message (folder, message, info, NULL, ex);
+ }
+
+ if (camel_exception_is_set (ex)) {
+ if (camel_exception_get_id (ex) == CAMEL_EXCEPTION_USER_CANCEL)
+ goto exit;
+
+ if (err->len)
+ g_string_append(err, "\n\n");
+ g_string_append_printf (err, _("Failed to append to local `Sent' folder: %s"),
camel_exception_get_description (ex));
+ }
}
}
-
if (!camel_exception_is_set(ex))
camel_folder_set_message_flags (queue, uid, CAMEL_MESSAGE_DELETED|CAMEL_MESSAGE_SEEN, ~0);
-
+
if (err->len) {
/* set the culmulative exception report */
camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, err->str);