aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/camel-vtrash-folder.c18
-rw-r--r--camel/camel-vtrash-folder.h1
2 files changed, 14 insertions, 5 deletions
diff --git a/camel/camel-vtrash-folder.c b/camel/camel-vtrash-folder.c
index cd5df81dc6..667b574646 100644
--- a/camel/camel-vtrash-folder.c
+++ b/camel/camel-vtrash-folder.c
@@ -38,9 +38,12 @@ static struct {
const char *expr;
guint32 bit;
guint32 flags;
+ const char *error_copy;
} vdata[] = {
- { CAMEL_VTRASH_NAME, "(match-all (system-flag \"Deleted\"))", CAMEL_MESSAGE_DELETED, CAMEL_FOLDER_IS_TRASH },
- { CAMEL_VJUNK_NAME, "(match-all (system-flag \"Junk\"))", CAMEL_MESSAGE_JUNK, CAMEL_FOLDER_IS_JUNK },
+ { CAMEL_VTRASH_NAME, "(match-all (system-flag \"Deleted\"))", CAMEL_MESSAGE_DELETED, CAMEL_FOLDER_IS_TRASH,
+ N_("Cannot copy messages to the Trash folder") },
+ { CAMEL_VJUNK_NAME, "(match-all (system-flag \"Junk\"))", CAMEL_MESSAGE_JUNK, CAMEL_FOLDER_IS_JUNK,
+ N_("Cannot copy messages to the Junk folder") },
};
static CamelVeeFolderClass *camel_vtrash_folder_parent;
@@ -112,6 +115,7 @@ camel_vtrash_folder_new (CamelStore *parent_store, enum _camel_vtrash_folder_t t
((CamelFolder *)vtrash)->folder_flags |= vdata[type].flags;
camel_vee_folder_set_expression((CamelVeeFolder *)vtrash, vdata[type].expr);
vtrash->bit = vdata[type].bit;
+ vtrash->type = type;
return (CamelFolder *)vtrash;
}
@@ -121,7 +125,8 @@ vtrash_append_message (CamelFolder *folder, CamelMimeMessage *message,
const CamelMessageInfo *info, char **appended_uid,
CamelException *ex)
{
- /* no-op */
+ camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
+ _(vdata[((CamelVTrashFolder *)folder)->type].error_copy));
}
struct _transfer_data {
@@ -168,12 +173,15 @@ vtrash_transfer_messages_to (CamelFolder *source, GPtrArray *uids,
if (CAMEL_IS_VTRASH_FOLDER (dest)) {
/* Copy to trash is meaningless. */
- if (!delete_originals)
+ if (!delete_originals) {
+ camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
+ _(vdata[((CamelVTrashFolder *)dest)->type].error_copy));
return;
+ }
/* Move to trash is the same as setting the message flag */
for (i = 0; i < uids->len; i++)
- camel_folder_set_message_flags(source, uids->pdata[i], sbit, ~0);
+ camel_folder_set_message_flags(source, uids->pdata[i], ((CamelVTrashFolder *)dest)->bit, ~0);
return;
}
diff --git a/camel/camel-vtrash-folder.h b/camel/camel-vtrash-folder.h
index a640569296..fcb9a927c0 100644
--- a/camel/camel-vtrash-folder.h
+++ b/camel/camel-vtrash-folder.h
@@ -51,6 +51,7 @@ enum _camel_vtrash_folder_t {
struct _CamelVTrashFolder {
CamelVeeFolder parent;
+ enum _camel_vtrash_folder_t type;
guint32 bit;
};