From c397a95d08f8c2b9ce1dd2830324e3cc14a13926 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Fri, 14 Jun 2002 22:03:05 +0000 Subject: Freeze source folders. (vee_thaw): Thaw all source folders. Fixes bug 2002-06-14 Jeffrey Stedfast * camel-vee-folder.c (vee_freeze): Freeze source folders. (vee_thaw): Thaw all source folders. Fixes bug #24317. svn path=/trunk/; revision=17189 --- camel/camel-vee-folder.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'camel/camel-vee-folder.c') diff --git a/camel/camel-vee-folder.c b/camel/camel-vee-folder.c index 7904ab5f12..eb9a5d21b9 100644 --- a/camel/camel-vee-folder.c +++ b/camel/camel-vee-folder.c @@ -53,6 +53,9 @@ static void vee_refresh_info(CamelFolder *folder, CamelException *ex); static void vee_sync (CamelFolder *folder, gboolean expunge, CamelException *ex); static void vee_expunge (CamelFolder *folder, CamelException *ex); +static void vee_freeze (CamelFolder *folder); +static void vee_thaw (CamelFolder *folder); + static CamelMimeMessage *vee_get_message (CamelFolder *folder, const gchar *uid, CamelException *ex); static void vee_append_message(CamelFolder *folder, CamelMimeMessage *message, const CamelMessageInfo *info, char **appended_uid, CamelException *ex); static void vee_transfer_messages_to(CamelFolder *source, GPtrArray *uids, CamelFolder *dest, GPtrArray **transferred_uids, gboolean delete_originals, CamelException *ex); @@ -134,6 +137,9 @@ camel_vee_folder_class_init (CamelVeeFolderClass *klass) folder_class->set_message_user_flag = vee_set_message_user_flag; folder_class->rename = vee_rename; + + folder_class->freeze = vee_freeze; + folder_class->thaw = vee_thaw; } static void @@ -1566,3 +1572,50 @@ subfolder_deleted(CamelFolder *f, void *event_data, CamelVeeFolder *vf) { camel_vee_folder_remove_folder(vf, f); } + + +static void +vee_freeze (CamelFolder *folder) +{ + CamelVeeFolder *vfolder = (CamelVeeFolder *) folder; + struct _CamelVeeFolderPrivate *p = _PRIVATE (vfolder); + GList *node; + + CAMEL_VEE_FOLDER_LOCK (vfolder, subfolder_lock); + + node = p->folders; + while (node) { + CamelFolder *f = node->data; + + camel_folder_freeze (f); + node = node->next; + } + + CAMEL_VEE_FOLDER_UNLOCK (vfolder, subfolder_lock); + + /* call parent implementation */ + CAMEL_FOLDER_CLASS (camel_vee_folder_parent)->freeze (folder); +} + +static void +vee_thaw (CamelFolder *folder) +{ + CamelVeeFolder *vfolder = (CamelVeeFolder *) folder; + struct _CamelVeeFolderPrivate *p = _PRIVATE (vfolder); + GList *node; + + CAMEL_VEE_FOLDER_LOCK (vfolder, subfolder_lock); + + node = p->folders; + while (node) { + CamelFolder *f = node->data; + + camel_folder_thaw (f); + node = node->next; + } + + CAMEL_VEE_FOLDER_UNLOCK (vfolder, subfolder_lock); + + /* call parent implementation */ + CAMEL_FOLDER_CLASS (camel_vee_folder_parent)->thaw (folder); +} -- cgit v1.2.3