diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2001-03-14 02:59:32 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2001-03-14 02:59:32 +0800 |
commit | 56737afcb166d3b928f9a89d9ac9d76c079a575d (patch) | |
tree | 739b71e488feec5d3bbdc5c475222b2c0b7b3761 /camel/camel-vee-folder.c | |
parent | b4269e1f42c26ad7e02759d46e61542d1119adcc (diff) | |
download | gsoc2013-evolution-56737afcb166d3b928f9a89d9ac9d76c079a575d.tar.gz gsoc2013-evolution-56737afcb166d3b928f9a89d9ac9d76c079a575d.tar.zst gsoc2013-evolution-56737afcb166d3b928f9a89d9ac9d76c079a575d.zip |
Don't allow the user to copy a message to or from the vtrash folder. Set
2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
* camel-folder.c (camel_folder_copy_message_to): Don't allow the
user to copy a message to or from the vtrash folder. Set an
exception if they try.
(camel_folder_move_message_to): This one is a bit more
complicated: 1) If the user tried to move a message from the
vtrash into the original folder, just undelete the message. 2) If
the user tries to move the message to the vtrash folder, then just
mark the message as deleted. 3) If the user tries to move the
message from the vTrash to a folder other than the original, use
the original folder as the source. As another optimization, I've
made it so that if the user tries to move a message to the same
folder, just no-op.
(move_message_to): Unset the deleted flag before moving (assuming
it's there).
(copy_message_to): Same.
* camel-vee-folder.c (camel_vee_folder_get_message_folder): New
convenience function to get the folder from which the message uid
is derived from.
svn path=/trunk/; revision=8677
Diffstat (limited to 'camel/camel-vee-folder.c')
-rw-r--r-- | camel/camel-vee-folder.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/camel/camel-vee-folder.c b/camel/camel-vee-folder.c index 5b1b704c22..cb6ef4bf91 100644 --- a/camel/camel-vee-folder.c +++ b/camel/camel-vee-folder.c @@ -703,6 +703,14 @@ message_changed(CamelFolder *f, const char *uid, CamelVeeFolder *vf) g_free(vuid); } + +/** + * camel_vee_folder_remove_folder: + * @vf: Virtual Folder object + * @sub: source CamelFolder to remove from @vf + * + * Removed the source folder, @sub, from the virtual folder, @vf. + **/ void camel_vee_folder_remove_folder(CamelVeeFolder *vf, CamelFolder *sub) { @@ -737,6 +745,14 @@ camel_vee_folder_remove_folder(CamelVeeFolder *vf, CamelFolder *sub) CAMEL_VEE_FOLDER_UNLOCK(vf, summary_lock); } + +/** + * camel_vee_folder_add_folder: + * @vf: Virtual Folder object + * @sub: source CamelFolder to add to @vf + * + * Adds @sub as a source folder to @vf. + **/ void camel_vee_folder_add_folder(CamelVeeFolder *vf, CamelFolder *sub) { @@ -774,6 +790,36 @@ camel_vee_folder_add_folder(CamelVeeFolder *vf, CamelFolder *sub) CAMEL_VEE_FOLDER_UNLOCK(vf, summary_lock); } + +/** + * camel_vee_folder_get_message_folder: + * @vf: Virtual Folder object + * @uid: message uid + * + * Returns the parent folder of @uid if it exists, otherwise NULL. + * Note: You must unref the folder when finished with it. + **/ +CamelFolder * +camel_vee_folder_get_message_folder (CamelVeeFolder *vf, const gchar *uid) +{ + CamelVeeMessageInfo *mi; + CamelFolder *folder; + + CAMEL_VEE_FOLDER_LOCK(vf, summary_lock); + + mi = (CamelVeeMessageInfo *)camel_folder_summary_uid (CAMEL_FOLDER (vf)->summary, uid); + if (mi) { + camel_object_ref (CAMEL_OBJECT (mi->folder)); + folder = mi->folder; + } else { + folder = NULL; + } + + CAMEL_VEE_FOLDER_UNLOCK(vf, summary_lock); + + return folder; +} + static void vee_sync (CamelFolder *folder, gboolean expunge, CamelException *ex) { |