From 92c10e0c6fffc77eef78ab713c56ab52ed68eae9 Mon Sep 17 00:00:00 2001 From: Chenthill Palanisamy Date: Sat, 27 Feb 2010 02:10:54 +0530 Subject: [PATCH] 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(+) 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 */ -- 2.7.4