diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2002-06-15 06:03:05 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2002-06-15 06:03:05 +0800 |
commit | c397a95d08f8c2b9ce1dd2830324e3cc14a13926 (patch) | |
tree | 4eb00a75eb783f4100dc58b9ee60787d2eb1771e /camel/camel-vee-folder.c | |
parent | 3cbdcff43de5d8a9c379c6f64b8f192b1532fffb (diff) | |
download | gsoc2013-evolution-c397a95d08f8c2b9ce1dd2830324e3cc14a13926.tar.gz gsoc2013-evolution-c397a95d08f8c2b9ce1dd2830324e3cc14a13926.tar.zst gsoc2013-evolution-c397a95d08f8c2b9ce1dd2830324e3cc14a13926.zip |
Freeze source folders. (vee_thaw): Thaw all source folders. Fixes bug
2002-06-14 Jeffrey Stedfast <fejj@ximian.com>
* camel-vee-folder.c (vee_freeze): Freeze source folders.
(vee_thaw): Thaw all source folders. Fixes bug #24317.
svn path=/trunk/; revision=17189
Diffstat (limited to 'camel/camel-vee-folder.c')
-rw-r--r-- | camel/camel-vee-folder.c | 53 |
1 files changed, 53 insertions, 0 deletions
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); +} |