Do not exclude embedded messages in remove attachment dialogs
[modest] / src / modest-mail-operation.c
index 30f1a57..cd899a5 100644 (file)
@@ -45,6 +45,7 @@
 #include <tny-folder-observer.h>
 #include <camel/camel-stream-mem.h>
 #include <glib/gi18n.h>
+#include <modest-defs.h>
 #include "modest-platform.h"
 #include "modest-account-mgr-helpers.h"
 #include <modest-tny-account.h>
@@ -1329,8 +1330,7 @@ G_DEFINE_TYPE_WITH_CODE (InternalFolderObserver,
 static void
 foreach_add_item (gpointer header, gpointer user_data)
 {
-       tny_list_prepend (TNY_LIST (user_data), 
-                         G_OBJECT (header));
+       tny_list_append (TNY_LIST (user_data), G_OBJECT (header));
 }
 
 /* This is the method that looks for new messages in a folder */
@@ -1411,9 +1411,9 @@ update_account_send_mail (UpdateAccountInfo *info)
                return;
 
        /* Get the transport account */
-       transport_account = (TnyTransportAccount *)
-               modest_tny_account_store_get_transport_account_for_open_connection (account_store,
-                                                                                   info->account_name);
+       transport_account = (TnyTransportAccount *) 
+               modest_tny_account_store_get_server_account (account_store, info->account_name, 
+                                                            TNY_ACCOUNT_TYPE_TRANSPORT);
 
        if (transport_account) {
                ModestTnySendQueue *send_queue;
@@ -1435,8 +1435,12 @@ update_account_send_mail (UpdateAccountInfo *info)
                        }
                
                        if (num_messages != 0) {
+                               ModestMailOperation *mail_op;
                                /* Reenable suspended items */
-                               modest_tny_send_queue_wakeup (MODEST_TNY_SEND_QUEUE (send_queue));
+                               mail_op = modest_mail_operation_new (NULL);
+                               modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
+                                                                mail_op);
+                               modest_mail_operation_queue_wakeup (mail_op, MODEST_TNY_SEND_QUEUE (send_queue));
                                
                                /* Try to send */
                                tny_camel_send_queue_flush (TNY_CAMEL_SEND_QUEUE (send_queue));
@@ -1536,7 +1540,7 @@ inbox_refreshed_cb (TnyFolder *inbox,
        UpdateAccountInfo *info;
        ModestMailOperationPrivate *priv;
        TnyIterator *new_headers_iter;
-       GPtrArray *new_headers_array = NULL;   
+       GPtrArray *new_headers_array = NULL;
        gint max_size, retrieve_limit, i;
        ModestAccountMgr *mgr;
        ModestAccountRetrieveType retrieve_type;
@@ -1547,9 +1551,6 @@ inbox_refreshed_cb (TnyFolder *inbox,
        priv = MODEST_MAIL_OPERATION_GET_PRIVATE (info->mail_op);
        mgr = modest_runtime_get_account_mgr ();
 
-       /* Set the last updated as the current time, do it even if the inbox refresh failed */
-       modest_account_mgr_set_last_updated (mgr, tny_account_get_id (priv->account), time (NULL));
-
        if (canceled || err) {
                priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
                if (err)
@@ -1573,6 +1574,9 @@ inbox_refreshed_cb (TnyFolder *inbox,
                goto send_mail;
        }
 
+       /* Set the last updated as the current time */
+       modest_account_mgr_set_last_updated (mgr, tny_account_get_id (priv->account), time (NULL));
+
        /* Get the message max size */
        max_size  = modest_conf_get_int (modest_runtime_get_conf (),
                                         MODEST_CONF_MSG_SIZE_LIMIT, NULL);
@@ -2188,7 +2192,6 @@ transfer_folder_status_cb (GObject *obj,
        g_slice_free (ModestMailOperationState, state);
 }
 
-
 static void
 transfer_folder_cb (TnyFolder *folder, 
                    gboolean cancelled, 
@@ -2202,7 +2205,7 @@ transfer_folder_cb (TnyFolder *folder,
        ModestMailOperationPrivate *priv = NULL;
 
        helper = (XFerFolderAsyncHelper *) user_data;
-       g_return_if_fail (helper != NULL);       
+       g_return_if_fail (helper != NULL);
 
        self = helper->mail_op;
        priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
@@ -2221,7 +2224,11 @@ transfer_folder_cb (TnyFolder *folder,
                priv->done = 1;
                priv->status = MODEST_MAIL_OPERATION_STATUS_SUCCESS;
        }
-               
+
+       /* Update state of new folder */
+       tny_folder_refresh_async (new_folder, NULL, NULL, NULL);
+       tny_folder_poke_status (new_folder);
+
        /* Notify about operation end */
        modest_mail_operation_notify_end (self);
 
@@ -3419,6 +3426,45 @@ modest_mail_operation_run_queue (ModestMailOperation *self,
 }
 
 static void
+queue_wakeup_callback (ModestTnySendQueue *queue,
+                      gboolean cancelled,
+                      GError *error,
+                      gpointer userdata)
+{
+       ModestMailOperation *mail_op;
+       ModestMailOperationPrivate *priv;
+
+       mail_op = (ModestMailOperation *) userdata;
+       priv = MODEST_MAIL_OPERATION_GET_PRIVATE (mail_op);
+
+       priv->status = MODEST_MAIL_OPERATION_STATUS_SUCCESS;
+
+       /* Notify end */
+       modest_mail_operation_notify_end (mail_op);
+       g_object_unref (mail_op);
+}
+
+void
+modest_mail_operation_queue_wakeup (ModestMailOperation *self,
+                                   ModestTnySendQueue *queue)
+{
+       ModestMailOperationPrivate *priv;
+
+       g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
+       g_return_if_fail (MODEST_IS_TNY_SEND_QUEUE (queue));
+       priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
+
+       priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
+       priv->account = TNY_ACCOUNT (tny_camel_send_queue_get_transport_account (TNY_CAMEL_SEND_QUEUE (queue)));
+       priv->op_type = MODEST_MAIL_OPERATION_TYPE_QUEUE_WAKEUP;
+
+       g_object_ref (self);
+
+       modest_tny_send_queue_wakeup (queue, queue_wakeup_callback, self);
+       modest_mail_operation_notify_start (self);
+}
+
+static void
 shutdown_callback (ModestTnyAccountStore *account_store, gpointer userdata)
 {
        ModestMailOperation *self = (ModestMailOperation *) userdata;