From 8dba1c63d3a4549562e2c94fff8d26dbae616e49 Mon Sep 17 00:00:00 2001 From: Chenthill Palanisamy Date: Mon, 1 Feb 2010 22:17:54 +0530 Subject: [PATCH] add get_junk, hash_folder, compare_folder_name virtual functions --- camel/providers/imapx/camel-imapx-store.c | 47 +++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/camel/providers/imapx/camel-imapx-store.c b/camel/providers/imapx/camel-imapx-store.c index bdaa86b..6dc2784 100644 --- a/camel/providers/imapx/camel-imapx-store.c +++ b/camel/providers/imapx/camel-imapx-store.c @@ -213,8 +213,26 @@ imap_disconnect (CamelService *service, gboolean clean, CamelException *ex) return TRUE; } + +static CamelFolder * +imapx_get_junk(CamelStore *store, CamelException *ex) +{ + CamelFolder *folder = CAMEL_STORE_CLASS(parent_class)->get_junk(store, ex); + + if (folder) { + gchar *state = g_build_filename(((CamelIMAPXStore *)store)->storage_path, "system", "Junk.cmeta", NULL); + + camel_object_set(folder, NULL, CAMEL_OBJECT_STATE_FILE, state, NULL); + g_free(state); + /* no defaults? */ + camel_object_state_read(folder); + } + + return folder; +} + static CamelFolder * -imap_get_trash (CamelStore *store, CamelException *ex) +imapx_get_trash (CamelStore *store, CamelException *ex) { CamelFolder *folder = CAMEL_STORE_CLASS(parent_class)->get_trash(store, ex); @@ -230,6 +248,28 @@ imap_get_trash (CamelStore *store, CamelException *ex) return folder; } + +static guint +imapx_hash_folder_name (gconstpointer key) +{ + if (g_ascii_strcasecmp (key, "INBOX") == 0) + return g_str_hash ("INBOX"); + else + return g_str_hash (key); +} + +static gint +imapx_compare_folder_name (gconstpointer a, gconstpointer b) +{ + gconstpointer aname = a, bname = b; + + if (g_ascii_strcasecmp (a, "INBOX") == 0) + aname = "INBOX"; + if (g_ascii_strcasecmp (b, "INBOX") == 0) + bname = "INBOX"; + return g_str_equal (aname, bname); +} + static CamelFolder * get_folder_offline (CamelStore *store, const gchar *folder_name, guint32 flags, CamelException *ex) @@ -1111,9 +1151,12 @@ camel_imapx_store_class_init(CamelIMAPXStoreClass *klass) camel_service_class->connect = imap_connect; camel_service_class->disconnect = imap_disconnect; - camel_store_class->get_trash = imap_get_trash; + camel_store_class->get_trash = imapx_get_trash; + camel_store_class->get_junk = imapx_get_junk; camel_store_class->get_folder = imap_get_folder; camel_store_class->get_inbox = imap_get_inbox; + camel_store_class->hash_folder_name = imapx_hash_folder_name; + camel_store_class->compare_folder_name = imapx_compare_folder_name; camel_store_class->create_folder = imap_create_folder; camel_store_class->rename_folder = imap_rename_folder; -- 2.7.4