From: Chenthill Palanisamy Date: Fri, 26 Feb 2010 20:40:54 +0000 (+0530) Subject: Implement sync message X-Git-Tag: upstream/3.7.4~3338 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=92c10e0c6fffc77eef78ab713c56ab52ed68eae9;p=platform%2Fupstream%2Fevolution-data-server.git Implement sync message --- 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 */