* groundwork for dragging to the desktop
[modest] / src / modest-mail-operation.c
index c3defdf..49a6875 100644 (file)
@@ -37,6 +37,7 @@
 #include <tny-folder-store-query.h>
 #include <tny-camel-stream.h>
 #include <tny-simple-list.h>
+#include <tny-send-queue.h>
 #include <camel/camel-stream-mem.h>
 #include <glib/gi18n.h>
 #include <modest-tny-account.h>
@@ -204,7 +205,7 @@ modest_mail_operation_send_mail (ModestMailOperation *self,
        
        g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
        g_return_if_fail (TNY_IS_TRANSPORT_ACCOUNT (transport_account));
-
+       
        send_queue = TNY_SEND_QUEUE (modest_runtime_get_send_queue (transport_account));
        if (!TNY_IS_SEND_QUEUE(send_queue))
                g_printerr ("modest: could not find send queue for account\n");
@@ -215,7 +216,8 @@ modest_mail_operation_send_mail (ModestMailOperation *self,
                        g_printerr ("modest: error adding msg to send queue: %s\n",
                                    err->message);
                        g_error_free (err);
-               }
+               } else
+                       g_message ("modest: message added to send queue");
        }
 }
 
@@ -311,9 +313,7 @@ create_reply_forward_mail (TnyMsg *msg, const gchar *from, gboolean is_reply, gu
        g_object_unref (G_OBJECT(body));
        
        /* Fill the header */
-       new_header = TNY_HEADER (tny_platform_factory_new_header
-                                (modest_runtime_get_platform_factory()));
-       tny_msg_set_header (new_msg, new_header);
+       new_header = tny_msg_get_header (new_msg);      
        tny_header_set_from (new_header, from);
        tny_header_set_replyto (new_header, from);
 
@@ -468,10 +468,12 @@ folder_refresh_cb (TnyFolder *folder, gboolean canceled, GError **err, gpointer
                g_slice_free (RefreshFolderAsyncHelper, helper);
        } else {
                TnyFolder *folder = TNY_FOLDER (tny_iterator_get_current (helper->iter));
-               tny_folder_refresh_async (folder, folder_refresh_cb,
-                                         status_update_cb, 
-                                         helper);
-               g_object_unref (G_OBJECT(folder));
+               if (folder) {
+                       g_message ("modest: refreshing folder %s",
+                                  tny_folder_get_name (folder));
+                       tny_folder_refresh_async (folder, folder_refresh_cb, status_update_cb, helper);
+                       g_object_unref (G_OBJECT(folder)); // FIXME: don't unref yet
+               }
        }
        g_signal_emit (G_OBJECT (self), signals[PROGRESS_CHANGED_SIGNAL], 0, NULL);
 }
@@ -506,9 +508,12 @@ update_folders_cb (TnyFolderStore *folder_store, TnyList *list, GError **err, gp
 
        /* Async refresh folders */
        folder = TNY_FOLDER (tny_iterator_get_current (helper->iter));
-       tny_folder_refresh_async (folder, folder_refresh_cb,
-                                 status_update_cb, helper);
-       g_object_unref (G_OBJECT(folder));
+       if (folder) {
+               g_message ("modest: refreshing folder %s", tny_folder_get_name (folder));
+               tny_folder_refresh_async (folder, folder_refresh_cb,
+                                         status_update_cb, helper);
+       }
+       //g_object_unref (G_OBJECT(folder)); /* FIXME -==> don't unref yet... */
 }
 
 gboolean
@@ -526,12 +531,17 @@ modest_mail_operation_update_account (ModestMailOperation *self,
 
        /* Get subscribed folders & refresh them */
        folders = TNY_LIST (tny_simple_list_new ());
-       query = tny_folder_store_query_new ();
-       tny_folder_store_query_add_item (query, NULL, TNY_FOLDER_STORE_QUERY_OPTION_SUBSCRIBED);
+       query = NULL; //tny_folder_store_query_new ();
+
+       /* FIXME: is this needed? */
+       tny_device_force_online (TNY_DEVICE(modest_runtime_get_device()));
+       
+       /* FIXME: let query be NULL: do it for all */ 
+       //tny_folder_store_query_add_item (query, NULL, TNY_FOLDER_STORE_QUERY_OPTION_SUBSCRIBED);
        tny_folder_store_get_folders_async (TNY_FOLDER_STORE (store_account),
                                            folders, update_folders_cb, query, self);
-       g_object_unref (query);
-
+       //g_object_unref (query); /* FIXME */
+       
        return TRUE;
 }
 
@@ -626,7 +636,7 @@ modest_mail_operation_create_folder (ModestMailOperation *self,
 {
        ModestMailOperationPrivate *priv;
        TnyFolder *new_folder = NULL;
-       TnyStoreAccount *store_account;
+       //TnyStoreAccount *store_account;
 
        g_return_val_if_fail (TNY_IS_FOLDER_STORE (parent), NULL);
        g_return_val_if_fail (name, NULL);
@@ -637,12 +647,12 @@ modest_mail_operation_create_folder (ModestMailOperation *self,
        new_folder = tny_folder_store_create_folder (parent, name, &(priv->error));
        CHECK_EXCEPTION (priv, MODEST_MAIL_OPERATION_STATUS_FAILED, return NULL);
 
-       /* Subscribe to folder */
-       if (!tny_folder_is_subscribed (new_folder)) {
-               store_account = TNY_STORE_ACCOUNT (tny_folder_get_account (TNY_FOLDER (parent)));
-               tny_store_account_subscribe (store_account, new_folder);
-               g_object_unref (G_OBJECT (store_account));
-       }
+/*     /\* Subscribe to folder *\/ */
+/*     if (!tny_folder_is_subscribed (new_folder)) { */
+/*             store_account = TNY_STORE_ACCOUNT (tny_folder_get_account (TNY_FOLDER (parent))); */
+/*             tny_store_account_subscribe (store_account, new_folder); */
+/*             g_object_unref (G_OBJECT (store_account)); */
+/*     } */
 
        return new_folder;
 }
@@ -679,7 +689,8 @@ modest_mail_operation_remove_folder (ModestMailOperation *self,
                tny_folder_store_remove_folder (parent, folder, &(priv->error));
                CHECK_EXCEPTION (priv, MODEST_MAIL_OPERATION_STATUS_FAILED, );
 
-               if (parent) g_object_unref (G_OBJECT (parent));
+               if (parent)
+                       g_object_unref (G_OBJECT (parent));
        }
        g_object_unref (G_OBJECT (account));
 }
@@ -781,8 +792,15 @@ transfer_msgs_cb (TnyFolder *folder, GError **err, gpointer user_data)
        ModestMailOperationPrivate *priv;
 
        priv = MODEST_MAIL_OPERATION_GET_PRIVATE(user_data);
-       priv->done = 1;
-       priv->status = MODEST_MAIL_OPERATION_STATUS_SUCCESS;
+
+       if (*err) {
+               priv->error = g_error_copy (*err);
+               priv->done = 0;
+               priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
+       } else {
+               priv->done = 1;
+               priv->status = MODEST_MAIL_OPERATION_STATUS_SUCCESS;
+       }
 
        g_signal_emit (G_OBJECT (user_data), signals[PROGRESS_CHANGED_SIGNAL], 0, NULL);
 }
@@ -811,11 +829,13 @@ modest_mail_operation_xfer_msg (ModestMailOperation *self,
 
        tny_list_prepend (headers, G_OBJECT (header));
        tny_folder_transfer_msgs_async (src_folder, headers, folder, 
-                                       delete_original, transfer_msgs_cb, self);
+                                       delete_original, transfer_msgs_cb, 
+                                       g_object_ref(self));
 
        /* Free */
-       g_object_unref (headers);
-       g_object_unref (folder);
+       /* FIXME: don't free 'm yet */
+       ///g_object_unref (headers);
+       ///g_object_unref (src_folder);
 
        return TRUE;
 }