From 1aba985def3755dbc5f9c49caee5207aa80e5d94 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Mon, 26 Feb 2001 17:35:53 +0000 Subject: Re-add the mail_vtrash_create() hack back in for LocalStores since there's 2001-02-25 Jeffrey Stedfast * component-factory.c (owner_set_cb): Re-add the mail_vtrash_create() hack back in for LocalStores since there's no better way to register a vTrash folder on the Local Storage yet. * mail-local.c (register_folder_registered): Add folders to the vTrash folder here since the LocalStore does not let the parent CamelStore class keep it's own hash of the folders. svn path=/trunk/; revision=8391 --- mail/ChangeLog | 10 ++++++++++ mail/component-factory.c | 3 +++ mail/mail-local.c | 21 ++++++++++++++++----- mail/mail-vtrash.c | 22 +++++++++++++++++++++- 4 files changed, 50 insertions(+), 6 deletions(-) diff --git a/mail/ChangeLog b/mail/ChangeLog index 7434ea30e2..c1d9990836 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,13 @@ +2001-02-25 Jeffrey Stedfast + + * component-factory.c (owner_set_cb): Re-add the + mail_vtrash_create() hack back in for LocalStores since there's no + better way to register a vTrash folder on the Local Storage yet. + + * mail-local.c (register_folder_registered): Add folders to the + vTrash folder here since the LocalStore does not let the parent + CamelStore class keep it's own hash of the folders. + 2001-02-25 Jeffrey Stedfast * session.c (mail_session_forget_password): New function to force diff --git a/mail/component-factory.c b/mail/component-factory.c index 9fdfd0b3cd..d72df7281d 100644 --- a/mail/component-factory.c +++ b/mail/component-factory.c @@ -43,6 +43,7 @@ #include "mail-mt.h" #include "mail-importer.h" #include "mail-vfolder.h" /* vfolder_create_storage */ +#include "mail-vtrash.h" #include "openpgp-utils.h" #include @@ -215,6 +216,8 @@ owner_set_cb (EvolutionShellComponent *shell_component, g_free (uri); } + mail_vtrash_create ("file:/", "vTrash"); + mail_session_enable_interaction (TRUE); mail_autoreceive_setup (); diff --git a/mail/mail-local.c b/mail/mail-local.c index f27778aaac..4d2a7e0615 100644 --- a/mail/mail-local.c +++ b/mail/mail-local.c @@ -49,6 +49,7 @@ #include "evolution-storage-listener.h" #include "camel/camel.h" +#include "camel/camel-vee-folder.h" #include "filter/vfolder-context.h" #include "filter/vfolder-rule.h" @@ -119,7 +120,7 @@ load_metainfo(const char *path) xmlFreeDoc(doc); return meta; -dodefault: + dodefault: meta->format = g_strdup("mbox"); /* defaults */ meta->name = g_strdup("mbox"); meta->indexed = TRUE; @@ -324,7 +325,8 @@ get_folder (CamelStore *store, const char *folder_name, camel_object_ref (CAMEL_OBJECT (folder)); } else { folder = NULL; - camel_exception_setv (ex, CAMEL_EXCEPTION_STORE_NO_FOLDER, "No such folder %s", folder_name); + camel_exception_setv (ex, CAMEL_EXCEPTION_STORE_NO_FOLDER, + "No such folder %s", folder_name); } return folder; } @@ -507,11 +509,20 @@ register_folder_registered(struct _mail_msg *mm) int unread; if (local_folder->folder) { - g_hash_table_insert (local_folder->local_store->folders, local_folder->uri + 8, local_folder); - + CamelStore *store = CAMEL_STORE (local_folder->local_store); + + g_hash_table_insert (local_folder->local_store->folders, local_folder->uri + 8, + local_folder); + + /* Add the folder to the vTrash folder */ + if (store->vtrash) + camel_vee_folder_add_folder (CAMEL_VEE_FOLDER (store->vtrash), + local_folder->folder); + unread = local_folder->last_unread; local_folder->last_unread = 0; - local_folder_changed (CAMEL_OBJECT (local_folder->folder), GINT_TO_POINTER (unread), local_folder); + local_folder_changed (CAMEL_OBJECT (local_folder->folder), GINT_TO_POINTER (unread), + local_folder); m->local_folder = NULL; } } diff --git a/mail/mail-vtrash.c b/mail/mail-vtrash.c index bc26afd9a5..565f60dd98 100644 --- a/mail/mail-vtrash.c +++ b/mail/mail-vtrash.c @@ -42,6 +42,16 @@ extern char *evolution_dir; extern CamelSession *session; + +/** + * mail_vtrash_add: add a "vTrash" folder on the EvolutionStorage + * @store: the CamelStore that the vTrash exists on + * @store_uri: the URL of the store + * @name: the name to give the vTrash folder + * + * Creates the vTrash folder for the provided store in the folder view + * (EvolutionStorage) and creates the URL for that vTrash folder. + **/ void mail_vtrash_add (CamelStore *store, const char *store_uri, const char *name) { @@ -73,7 +83,7 @@ mail_vtrash_add (CamelStore *store, const char *store_uri, const char *name) struct _get_trash_msg { struct _mail_msg msg; - + CamelStore *store; char *store_uri; char *name; @@ -136,6 +146,16 @@ static struct _mail_msg_op get_trash_op = { get_trash_free, }; + +/** + * mail_vtrash_create: Create a vTrash folder + * @store_uri: URL of the CamelStore + * @name: name to give the vTrash folder + * + * Async function to lookup the CamelStore corresponding to @store_uri + * and then calls mail_vtrash_add() to create the vTrash folder/URL on + * the EvolutionStorage. + **/ int mail_vtrash_create (const char *store_uri, const char *name) { -- cgit v1.2.3