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-disco-diary.c | |
parent | 409f147b81748829457ee9110ccd0488ad9bfbf4 (diff) | |
download | gsoc2013-evolution-6952dcb7c0821d705fad562ff5b96613b7c7b248.tar.gz 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-disco-diary.c')
-rw-r--r-- | camel/camel-disco-diary.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/camel/camel-disco-diary.c b/camel/camel-disco-diary.c index a437f5aa09..198ec607c8 100644 --- a/camel/camel-disco-diary.c +++ b/camel/camel-disco-diary.c @@ -149,12 +149,12 @@ camel_disco_diary_log (CamelDiscoDiary *diary, CamelDiscoDiaryAction action, break; } - case CAMEL_DISCO_DIARY_FOLDER_MOVE: - case CAMEL_DISCO_DIARY_FOLDER_COPY: + case CAMEL_DISCO_DIARY_FOLDER_TRANSFER: { CamelFolder *source = va_arg (ap, CamelFolder *); CamelFolder *destination = va_arg (ap, CamelFolder *); GPtrArray *uids = va_arg (ap, GPtrArray *); + gboolean delete_originals = va_arg (ap, gboolean); status = camel_file_util_encode_string (diary->file, source->full_name); if (status == -1) @@ -163,6 +163,9 @@ camel_disco_diary_log (CamelDiscoDiary *diary, CamelDiscoDiaryAction action, if (status == -1) break; status = diary_encode_uids (diary, uids); + if (status == -1) + break; + status = camel_file_util_encode_uint32 (diary->file, delete_originals); break; } @@ -332,27 +335,26 @@ camel_disco_diary_replay (CamelDiscoDiary *diary, CamelException *ex) break; } - case CAMEL_DISCO_DIARY_FOLDER_COPY: - case CAMEL_DISCO_DIARY_FOLDER_MOVE: + case CAMEL_DISCO_DIARY_FOLDER_TRANSFER: { CamelFolder *source, *destination; GPtrArray *uids; + guint32 delete_originals; source = diary_decode_folder (diary); destination = diary_decode_folder (diary); uids = diary_decode_uids (diary); if (!uids) goto lose; + if (camel_file_util_decode_uint32 (diary->file, &delete_originals) == -1) + goto lose; if (!source || !destination) { free_uids (uids); continue; } - if (action == CAMEL_DISCO_DIARY_FOLDER_COPY) - camel_folder_copy_messages_to (source, uids, destination, ex); - else - camel_folder_move_messages_to (source, uids, destination, ex); + camel_folder_transfer_messages_to (source, uids, destination, delete_originals, ex); free_uids (uids); break; } |