diff options
author | Dan Winship <danw@src.gnome.org> | 2002-05-11 00:44:36 +0800 |
---|---|---|
committer | Dan Winship <danw@src.gnome.org> | 2002-05-11 00:44:36 +0800 |
commit | 6952dcb7c0821d705fad562ff5b96613b7c7b248 (patch) | |
tree | 8610ea39d3c105a615318c00145897adb5dc00cf /camel/camel-vee-folder.c | |
parent | 409f147b81748829457ee9110ccd0488ad9bfbf4 (diff) | |
download | gsoc2013-evolution-6952dcb7c0821d705fad562ff5b96613b7c7b248.tar gsoc2013-evolution-6952dcb7c0821d705fad562ff5b96613b7c7b248.tar.gz gsoc2013-evolution-6952dcb7c0821d705fad562ff5b96613b7c7b248.tar.bz2 gsoc2013-evolution-6952dcb7c0821d705fad562ff5b96613b7c7b248.tar.lz gsoc2013-evolution-6952dcb7c0821d705fad562ff5b96613b7c7b248.tar.xz gsoc2013-evolution-6952dcb7c0821d705fad562ff5b96613b7c7b248.tar.zst gsoc2013-evolution-6952dcb7c0821d705fad562ff5b96613b7c7b248.zip |
Replace copy_messages_to and move_messages_to with a single function that
* camel-folder.c (camel_folder_transfer_messages_to): Replace
copy_messages_to and move_messages_to with a single function that
just takes a "delete_originals" flag. Also, use the vtrash
implementation if *either* folder is a vtrash.
(transfer_messages_to): Make this use camel_operation_progress
(previously move_messages_to did but copy_messages_to didn't), and
freeze/thaw the folder(s) if doing multiple messages.
* camel-vtrash-folder.c (vtrash_transfer_messages_to): Update for
move/copy merge. Move the "move messages into vtrash" code here
from mail-ops.c. Now all of the vtrash move/copy special casing is
in camel instead of half of it being here and half in mail/. (This
should also make it so that "Move to Trash" will work in filter
rules.)
* camel-vee-folder.c (vee_transfer_messages_to): Make this just
return an exception, since it will only be called when trying to
move/copy messages from one vfolder to another.
(vee_append_message): Add this too so we get a nicer error message
than the default "unimplemented" one in camel-folder.c.
* camel-digest-folder.c: Replace copy_messages_to and
move_messages_to with transfer_messages_to.
* camel-disco-folder.c: Likewise
* camel-disco-diary.c (camel_disco_diary_log,
camel_disco_diary_replay): replace MOVE/COPY with TRANSFER.
* providers/imap/camel-imap-folder.c (imap_transfer_offline,
imap_transfer_online, imap_transfer_resyncing): Update for
changes. (This ends up being a bit more complicated than it was
before for now, but later disconnected operation changes should
resimplify it.)
* camel-filter-driver.c (camel_filter_driver_filter_message,
do_copy, do_move): Use transfer_messages_to instead of copy.
svn path=/trunk/; revision=16744
Diffstat (limited to 'camel/camel-vee-folder.c')
-rw-r--r-- | camel/camel-vee-folder.c | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/camel/camel-vee-folder.c b/camel/camel-vee-folder.c index 7ccaae72ab..785d70b057 100644 --- a/camel/camel-vee-folder.c +++ b/camel/camel-vee-folder.c @@ -54,7 +54,8 @@ static void vee_sync (CamelFolder *folder, gboolean expunge, CamelException *ex) static void vee_expunge (CamelFolder *folder, CamelException *ex); static CamelMimeMessage *vee_get_message (CamelFolder *folder, const gchar *uid, CamelException *ex); -static void vee_move_messages_to(CamelFolder *source, GPtrArray *uids, CamelFolder *dest, CamelException *ex); +static void vee_append_message(CamelFolder *folder, CamelMimeMessage *message, const CamelMessageInfo *info, CamelException *ex); +static void vee_transfer_messages_to(CamelFolder *source, GPtrArray *uids, CamelFolder *dest, gboolean delete_originals, CamelException *ex); static GPtrArray *vee_search_by_expression(CamelFolder *folder, const char *expression, CamelException *ex); static GPtrArray *vee_search_by_uids(CamelFolder *folder, const char *expression, GPtrArray *uids, CamelException *ex); @@ -123,7 +124,8 @@ camel_vee_folder_class_init (CamelVeeFolderClass *klass) folder_class->expunge = vee_expunge; folder_class->get_message = vee_get_message; - folder_class->move_messages_to = vee_move_messages_to; + folder_class->append_message = vee_append_message; + folder_class->transfer_messages_to = vee_transfer_messages_to; folder_class->search_by_expression = vee_search_by_expression; folder_class->search_by_uids = vee_search_by_uids; @@ -730,29 +732,15 @@ vee_set_message_user_flag(CamelFolder *folder, const char *uid, const char *name } static void -vee_move_messages_to (CamelFolder *folder, GPtrArray *uids, CamelFolder *dest, CamelException *ex) +vee_append_message(CamelFolder *folder, CamelMimeMessage *message, const CamelMessageInfo *info, CamelException *ex) { - CamelVeeMessageInfo *mi; - int i; - - for (i = 0; i < uids->len && !camel_exception_is_set (ex); i++) { - mi = (CamelVeeMessageInfo *) camel_folder_summary_uid (folder->summary, uids->pdata[i]); - if (mi) { - /* noop if it we're moving from the same vfolder (uh, which should't happen but who knows) */ - if (folder != mi->folder) { - GPtrArray *uids; - - uids = g_ptr_array_new (); - g_ptr_array_add (uids, (char *) (camel_message_info_uid (mi) + 8)); - camel_folder_move_messages_to (mi->folder, uids, dest, ex); - g_ptr_array_free (uids, TRUE); - } - camel_folder_summary_info_free (folder->summary, (CamelMessageInfo *)mi); - } else { - camel_exception_setv (ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID, - _("No such message: %s"), uids->pdata[i]); - } - } + camel_exception_set(ex, CAMEL_EXCEPTION_SYSTEM, _("Cannot copy or move messages into a Virtual Folder")); +} + +static void +vee_transfer_messages_to (CamelFolder *folder, GPtrArray *uids, CamelFolder *dest, gboolean delete_originals, CamelException *ex) +{ + camel_exception_set(ex, CAMEL_EXCEPTION_SYSTEM, _("Cannot copy or move messages into a Virtual Folder")); } static void vee_rename(CamelFolder *folder, const char *new) |