* src/widgets/modest-hbox-cell-renderer.c,
[modest] / src / modest-mail-operation.c
index 32b2c78..9186d21 100644 (file)
@@ -635,20 +635,21 @@ modest_mail_operation_send_mail (ModestMailOperation *self,
        } else {
                /* Add the msg to the queue */
                modest_mail_operation_notify_start (self);
-               modest_tny_send_queue_add (MODEST_TNY_SEND_QUEUE(send_queue), 
-                                          msg, 
-                                          &(priv->error));
-
-               priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
 
                info = g_slice_new0 (SendMsgInfo);
 
                info->mail_op = g_object_ref (self);
                info->msg = g_object_ref (msg);
                info->msg_sent_handler = g_signal_connect (G_OBJECT (send_queue), "msg-sent",
-                                                          G_CALLBACK (send_mail_msg_sent_handler), info);
+                               G_CALLBACK (send_mail_msg_sent_handler), info);
                info->error_happened_handler = g_signal_connect (G_OBJECT (send_queue), "error-happened",
-                                                                G_CALLBACK (send_mail_error_happened_handler), info);
+                               G_CALLBACK (send_mail_error_happened_handler), info);
+
+               modest_tny_send_queue_add (MODEST_TNY_SEND_QUEUE(send_queue), 
+                               msg, 
+                               &(priv->error));
+
+               priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
        }
 
 }
@@ -707,6 +708,8 @@ send_mail_error_happened_handler (TnySendQueue *queue, TnyHeader *header, TnyMsg
        if (msgid2 == NULL) msgid2 = "(null)";
 
        if (!strcmp (msgid1, msgid2)) {
+               if (error != NULL)
+                       g_warning ("%s: %s\n", __FUNCTION__, error->message);
                ModestMailOperationPrivate *priv = MODEST_MAIL_OPERATION_GET_PRIVATE (info->mail_op);
                priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
                g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
@@ -872,8 +875,16 @@ modest_mail_operation_send_new_mail_cb (ModestMailOperation *self,
        /* Remove old mail from its source folder */
        draft_folder = modest_tny_account_get_special_folder (TNY_ACCOUNT (info->transport_account),
                                                              TNY_FOLDER_TYPE_DRAFTS);
+       if (!draft_folder) {
+               g_warning ("%s: modest_tny_account_get_special_folder(..) returned a NULL drafts folder", __FUNCTION__);
+               goto end;
+       }
        outbox_folder = modest_tny_account_get_special_folder (TNY_ACCOUNT (info->transport_account),
                                                               TNY_FOLDER_TYPE_OUTBOX);
+       if (!outbox_folder) {
+               g_warning ("%s: modest_tny_account_get_special_folder(..) returned a NULL outbox folder", __FUNCTION__);
+               goto end;
+       }
        if (info->draft_msg != NULL) {
                TnyFolder *folder = NULL;
                TnyFolder *src_folder = NULL;
@@ -1051,13 +1062,15 @@ modest_mail_operation_save_to_drafts_cb (ModestMailOperation *self,
        priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
 
        if (!msg) {
-               g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
-                            MODEST_MAIL_OPERATION_ERROR_INSTANCE_CREATION_FAILED,
-                            "modest: failed to create a new msg\n");
+               if (!(priv->error)) {
+                       g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
+                                    MODEST_MAIL_OPERATION_ERROR_INSTANCE_CREATION_FAILED,
+                                    "modest: failed to create a new msg\n");
+               }
        } else {
                drafts = modest_tny_account_get_special_folder (TNY_ACCOUNT (info->transport_account),
                                                                TNY_FOLDER_TYPE_DRAFTS);
-               if (!drafts) {
+               if (!drafts && !(priv->error)) {
                        g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
                                     MODEST_MAIL_OPERATION_ERROR_ITEM_NOT_FOUND,
                                     "modest: failed to create a new msg\n");
@@ -1448,8 +1461,9 @@ recurse_folders_async_cb (TnyFolderStore *folder_store,
                        /* Add pending call */
                        info->pending_calls++;
                        
-                       tny_folder_store_get_folders_async (folder, folders, recurse_folders_async_cb, 
-                                                           NULL, NULL, info);
+                       tny_folder_store_get_folders_async (folder, folders, NULL,
+                                                           recurse_folders_async_cb, 
+                                                           NULL, info);
                        
                        g_object_unref (G_OBJECT (folder));
                        
@@ -1569,8 +1583,9 @@ modest_mail_operation_update_account (ModestMailOperation *self,
        /* Get all folders and continue in the callback */    
        folders = tny_simple_list_new ();
        tny_folder_store_get_folders_async (TNY_FOLDER_STORE (store_account),
-                               folders, recurse_folders_async_cb, 
-                               NULL, NULL, info);
+                                           folders, NULL,
+                                           recurse_folders_async_cb, 
+                                           NULL, info);
 }
 
 /*
@@ -1771,6 +1786,8 @@ modest_mail_operation_remove_folder (ModestMailOperation *self,
                                                    TNY_FOLDER_STORE (trash_folder), 
                                                    TRUE, NULL, NULL);
                        g_object_unref (trash_folder);
+               } else {
+                       g_warning ("%s: modest_tny_account_get_special_folder(..) returned a NULL trash folder", __FUNCTION__);
                }
        } else {
                TnyFolderStore *parent = tny_folder_get_folder_store (folder);
@@ -2227,7 +2244,7 @@ modest_mail_operation_get_msgs_full (ModestMailOperation *self,
        TnyIterator *iter = NULL;
        
        g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
-       
+
        /* Init mail operation */
        priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
        priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
@@ -2331,6 +2348,7 @@ modest_mail_operation_get_msgs_full (ModestMailOperation *self,
                if (notify)
                        notify (user_data);
        }
+
 }
 
 
@@ -2475,8 +2493,9 @@ modest_mail_operation_remove_msgs (ModestMailOperation *self,
        if (!priv->error) {
                gboolean expunge, leave_on_server;
                const gchar *account_name;
+               const gchar *proto;
                TnyAccount *account;
-               ModestTransportStoreProtocol account_proto;
+               ModestTransportStoreProtocol account_proto = MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN;
                
                account = tny_folder_get_account (folder);
                account_name = modest_tny_account_get_parent_modest_account_name_for_server_account (account);
@@ -2484,7 +2503,10 @@ modest_mail_operation_remove_msgs (ModestMailOperation *self,
                        modest_account_mgr_get_leave_on_server (modest_runtime_get_account_mgr (),
                                        account_name);
 
-               account_proto = modest_protocol_info_get_transport_store_protocol (tny_account_get_proto (account));
+               proto = tny_account_get_proto (account);
+               if (proto) {
+                       account_proto = modest_protocol_info_get_transport_store_protocol (proto);
+               }
 
                if (((account_proto == MODEST_PROTOCOL_STORE_POP) && !leave_on_server) ||
                    modest_tny_folder_is_remote_folder (folder) == FALSE)
@@ -2627,7 +2649,6 @@ transfer_msgs_cb (TnyFolder *folder, gboolean cancelled, GError *err, gpointer u
 
                        tny_iterator_next (iter);
                }
-
        }