aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-store.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/e-mail-store.c')
-rw-r--r--mail/e-mail-store.c44
1 files changed, 25 insertions, 19 deletions
diff --git a/mail/e-mail-store.c b/mail/e-mail-store.c
index ef997d2fe2..b23e6f2121 100644
--- a/mail/e-mail-store.c
+++ b/mail/e-mail-store.c
@@ -35,7 +35,8 @@
typedef struct _StoreInfo StoreInfo;
-typedef void (*AddStoreCallback) (CamelStore *store,
+typedef void (*AddStoreCallback) (MailFolderCache *folder_cache,
+ CamelStore *store,
CamelFolderInfo *info,
StoreInfo *store_info);
@@ -132,25 +133,25 @@ store_table_free (StoreInfo *store_info)
}
static gboolean
-mail_store_note_store_cb (CamelStore *store,
+mail_store_note_store_cb (MailFolderCache *folder_cache,
+ CamelStore *store,
CamelFolderInfo *info,
gpointer user_data)
{
StoreInfo *store_info = user_data;
if (store_info->callback != NULL)
- store_info->callback (store, info, store_info);
+ store_info->callback (
+ folder_cache, store, info, store_info);
if (!store_info->removed) {
/* This keeps message counters up-to-date. */
if (store_info->vtrash != NULL)
mail_folder_cache_note_folder (
- mail_folder_cache_get_default (),
- store_info->vtrash);
+ folder_cache, store_info->vtrash);
if (store_info->vjunk != NULL)
mail_folder_cache_note_folder (
- mail_folder_cache_get_default (),
- store_info->vjunk);
+ folder_cache, store_info->vjunk);
}
store_info_unref (store_info);
@@ -165,11 +166,13 @@ mail_store_add (EMailSession *session,
AddStoreCallback callback)
{
EMFolderTreeModel *default_model;
+ MailFolderCache *folder_cache;
StoreInfo *store_info;
g_return_if_fail (store_table != NULL);
default_model = em_folder_tree_model_get_default ();
+ folder_cache = e_mail_session_get_folder_cache (session);
store_info = store_info_new (store, display_name);
store_info->callback = callback;
@@ -180,14 +183,13 @@ mail_store_add (EMailSession *session,
default_model, store, store_info->display_name);
mail_folder_cache_note_store (
- mail_folder_cache_get_default (),
- CAMEL_SESSION (session), store, NULL,
- mail_store_note_store_cb,
- store_info_ref (store_info));
+ folder_cache, CAMEL_SESSION (session), store, NULL,
+ mail_store_note_store_cb, store_info_ref (store_info));
}
static void
-mail_store_add_local_done_cb (CamelStore *store,
+mail_store_add_local_done_cb (MailFolderCache *folder_cache,
+ CamelStore *store,
CamelFolderInfo *info,
StoreInfo *store_info)
{
@@ -196,9 +198,9 @@ mail_store_add_local_done_cb (CamelStore *store,
for (ii = 0; ii < E_MAIL_NUM_LOCAL_FOLDERS; ii++) {
folder = e_mail_local_get_folder (ii);
- if (folder != NULL)
- mail_folder_cache_note_folder (
- mail_folder_cache_get_default (), folder);
+ if (folder == NULL)
+ continue;
+ mail_folder_cache_note_folder (folder_cache, folder);
}
}
@@ -337,10 +339,13 @@ fail:
}
void
-e_mail_store_remove (CamelStore *store)
+e_mail_store_remove (EMailSession *session,
+ CamelStore *store)
{
+ MailFolderCache *folder_cache;
EMFolderTreeModel *default_model;
+ g_return_if_fail (E_IS_MAIL_SESSION (session));
g_return_if_fail (CAMEL_IS_STORE (store));
g_return_if_fail (store_table != NULL);
@@ -355,8 +360,9 @@ e_mail_store_remove (CamelStore *store)
g_object_ref (store);
g_hash_table_remove (store_table, store);
- mail_folder_cache_note_store_remove (
- mail_folder_cache_get_default (), store);
+
+ folder_cache = e_mail_session_get_folder_cache (session);
+ mail_folder_cache_note_store_remove (folder_cache, store);
default_model = em_folder_tree_model_get_default ();
em_folder_tree_model_remove_store (default_model, store);
@@ -389,7 +395,7 @@ e_mail_store_remove_by_uri (EMailSession *session,
if (service == NULL)
return;
- e_mail_store_remove (CAMEL_STORE (service));
+ e_mail_store_remove (session, CAMEL_STORE (service));
g_object_unref (service);
}