[evolution-data-server] Implement sync message



commit 92c10e0c6fffc77eef78ab713c56ab52ed68eae9
Author: Chenthill Palanisamy <pchenthill novell com>
Date:   Sat Feb 27 02:10:54 2010 +0530

    Implement sync message

 camel/providers/imapx/camel-imapx-folder.c |   13 +++++++++++++
 camel/providers/imapx/camel-imapx-server.c |   18 ++++++++++++++++++
 camel/providers/imapx/camel-imapx-server.h |    1 +
 3 files changed, 32 insertions(+), 0 deletions(-)
---
diff --git a/camel/providers/imapx/camel-imapx-folder.c b/camel/providers/imapx/camel-imapx-folder.c
index 002282a..3ed3dd6 100644
--- a/camel/providers/imapx/camel-imapx-folder.c
+++ b/camel/providers/imapx/camel-imapx-folder.c
@@ -224,6 +224,18 @@ imapx_get_message (CamelFolder *folder, const gchar *uid, CamelException *ex)
 }
 
 static void
+imapx_sync_message (CamelFolder *folder, const gchar *uid, CamelException *ex)
+{
+	CamelIMAPXStore *istore = (CamelIMAPXStore *)folder->parent_store;
+	
+	if (CAMEL_OFFLINE_STORE (istore)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL)
+		return;
+
+	if (istore->server && camel_imapx_server_connect (istore->server, 1))
+		camel_imapx_server_sync_message (istore->server, folder, uid, ex);
+}
+
+static void
 imapx_transfer_messages_to (CamelFolder *source, GPtrArray *uids,
 		      CamelFolder *dest, GPtrArray **transferred_uids,
 		      gboolean delete_originals, CamelException *ex)
@@ -395,6 +407,7 @@ imap_folder_class_init (CamelIMAPXFolderClass *klass)
 
 	((CamelFolderClass *)klass)->expunge = imapx_expunge;
 	((CamelFolderClass *)klass)->get_message = imapx_get_message;
+	((CamelFolderClass *)klass)->sync_message = imapx_sync_message;
 	((CamelFolderClass *)klass)->append_message = imapx_append_message;
 	((CamelFolderClass *)klass)->transfer_messages_to = imapx_transfer_messages_to;
 	((CamelFolderClass *)klass)->get_filename = imapx_get_filename;
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index a752cb6..fd37a62 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -3730,6 +3730,24 @@ camel_imapx_server_get_message(CamelIMAPXServer *is, CamelFolder *folder, const
 }
 
 void
+camel_imapx_server_sync_message (CamelIMAPXServer *is, CamelFolder *folder, const gchar *uid, CamelException *ex)
+{
+	gchar *cache_file = NULL;
+	CamelIMAPXFolder *ifolder = (CamelIMAPXFolder *) folder;
+	CamelStream *stream;
+
+	cache_file = camel_data_cache_get_filename  (ifolder->cache, "cur", uid, NULL);
+	if (g_file_test (cache_file, G_FILE_TEST_EXISTS)) {
+		g_free (cache_file);
+		return;
+	}
+
+	stream = imapx_server_get_message (is, folder, uid, 10, ex);
+	if (stream)
+		camel_object_unref(stream);
+}
+
+void
 camel_imapx_server_copy_message (CamelIMAPXServer *is, CamelFolder *source, CamelFolder *dest, GPtrArray *uids, gboolean delete_originals, CamelException *ex)
 {
 	CamelIMAPXJob *job;
diff --git a/camel/providers/imapx/camel-imapx-server.h b/camel/providers/imapx/camel-imapx-server.h
index 5d98ef1..20ca075 100644
--- a/camel/providers/imapx/camel-imapx-server.h
+++ b/camel/providers/imapx/camel-imapx-server.h
@@ -120,5 +120,6 @@ void camel_imapx_server_noop (CamelIMAPXServer *is, CamelFolder *folder, CamelEx
 CamelStream *camel_imapx_server_get_message(CamelIMAPXServer *is, CamelFolder *folder, const gchar *uid, struct _CamelException *ex);
 void camel_imapx_server_copy_message (CamelIMAPXServer *is, CamelFolder *source, CamelFolder *dest, GPtrArray *uids, gboolean delete_originals, CamelException *ex);
 void camel_imapx_server_append_message(CamelIMAPXServer *is, CamelFolder *folder, struct _CamelMimeMessage *message, const struct _CamelMessageInfo *mi, CamelException *ex);
+void camel_imapx_server_sync_message (CamelIMAPXServer *is, CamelFolder *folder, const gchar *uid, CamelException *ex);
 
 #endif /* _CAMEL_IMAPX_SERVER_H */



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