[evolution-data-server] add get_junk, hash_folder, compare_folder_name virtual functions



commit 8dba1c63d3a4549562e2c94fff8d26dbae616e49
Author: Chenthill Palanisamy <pchenthill novell com>
Date:   Mon Feb 1 22:17:54 2010 +0530

    add get_junk, hash_folder, compare_folder_name virtual functions

 camel/providers/imapx/camel-imapx-store.c |   47 +++++++++++++++++++++++++++-
 1 files 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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]