aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-vee-folder.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2001-03-14 02:59:32 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2001-03-14 02:59:32 +0800
commit56737afcb166d3b928f9a89d9ac9d76c079a575d (patch)
tree739b71e488feec5d3bbdc5c475222b2c0b7b3761 /camel/camel-vee-folder.c
parentb4269e1f42c26ad7e02759d46e61542d1119adcc (diff)
downloadgsoc2013-evolution-56737afcb166d3b928f9a89d9ac9d76c079a575d.tar
gsoc2013-evolution-56737afcb166d3b928f9a89d9ac9d76c079a575d.tar.gz
gsoc2013-evolution-56737afcb166d3b928f9a89d9ac9d76c079a575d.tar.bz2
gsoc2013-evolution-56737afcb166d3b928f9a89d9ac9d76c079a575d.tar.lz
gsoc2013-evolution-56737afcb166d3b928f9a89d9ac9d76c079a575d.tar.xz
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.c46
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)
{