Implement sync message
authorChenthill Palanisamy <pchenthill@novell.com>
Fri, 26 Feb 2010 20:40:54 +0000 (02:10 +0530)
committerChenthill Palanisamy <pchenthill@novell.com>
Fri, 26 Feb 2010 20:41:34 +0000 (02:11 +0530)
camel/providers/imapx/camel-imapx-folder.c
camel/providers/imapx/camel-imapx-server.c
camel/providers/imapx/camel-imapx-server.h

index 002282a..3ed3dd6 100644 (file)
@@ -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;
index a752cb6..fd37a62 100644 (file)
@@ -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;
index 5d98ef1..20ca075 100644 (file)
@@ -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 */