* Migrated Modest to the new send queue API
[modest] / src / modest-ui-actions.c
index d495f70..110a26f 100644 (file)
@@ -398,7 +398,8 @@ modest_ui_actions_refresh_message_window_after_delete (ModestMsgViewWindow* win)
        if (modest_msg_view_window_last_message_selected (win) &&
                modest_msg_view_window_first_message_selected (win)) {
                modest_ui_actions_on_close_window (NULL, MODEST_WINDOW (win));
-       } else if (!modest_msg_view_window_select_next_message (win)) {
+       } else if (!modest_msg_view_window_select_next_message (win) &&
+                  !modest_msg_view_window_select_previous_message (win)) {
                gboolean ret_value;
                g_signal_emit_by_name (G_OBJECT (win), "delete-event", NULL, &ret_value);       
        }
@@ -1829,9 +1830,12 @@ modest_ui_actions_do_cancel_send (const gchar *account_name,
                             MODEST_MAIL_OPERATION_ERROR_ITEM_NOT_FOUND,
                             "modest: could not find send queue for account\n");
        } else {
-               /* Keeep messages in outbox folder */
-               tny_send_queue_cancel (send_queue, FALSE, &error);
-       }       
+               /* Cancel the current send */
+               tny_account_cancel (TNY_ACCOUNT (transport_account));
+
+               /* Suspend all pending messages */
+               tny_send_queue_cancel (send_queue, TNY_SEND_QUEUE_CANCEL_ACTION_SUSPEND, &error);
+       }
 
  frees:
        if (transport_account != NULL) 
@@ -3939,10 +3943,15 @@ on_move_to_dialog_folder_selection_changed (ModestFolderView* self,
 
                if ((gpointer) local_account != (gpointer) folder_store &&
                    (gpointer) mmc_account != (gpointer) folder_store) {
+                       const char *proto_name = tny_account_get_proto (TNY_ACCOUNT (folder_store));
+                       ModestTransportStoreProtocol proto = MODEST_PROTOCOL_STORE_MAILDIR;
+                       if (proto_name != NULL) {
+                               proto = modest_protocol_info_get_transport_store_protocol (proto_name);
+                       }
                        is_local_account = FALSE;
                        /* New button should be dimmed on remote
-                          account root */
-                       new_sensitive = FALSE;
+                          POP account root */
+                       new_sensitive = (proto != MODEST_PROTOCOL_STORE_POP);
                }
                g_object_unref (local_account);
        }
@@ -4253,10 +4262,14 @@ move_to_cb (ModestMailOperation *mail_op,
                if (MODEST_IS_MSG_VIEW_WINDOW (object)) {
                        ModestMsgViewWindow *self = MODEST_MSG_VIEW_WINDOW (object);
 
-                       if (!modest_msg_view_window_select_next_message (self))
-                               if (!modest_msg_view_window_select_previous_message (self))
-                                       /* No more messages to view, so close this window */
-                                       modest_ui_actions_on_close_window (NULL, MODEST_WINDOW(self));
+                       if (modest_msg_view_window_last_message_selected (self) &&
+                           modest_msg_view_window_first_message_selected (self)) {
+                               modest_ui_actions_on_close_window (NULL, MODEST_WINDOW (self));
+                       } else if (!modest_msg_view_window_select_next_message (self) &&
+                                  !modest_msg_view_window_select_previous_message (self)) {
+                               /* No more messages to view, so close this window */
+                               modest_ui_actions_on_close_window (NULL, MODEST_WINDOW(self));
+                       }
                } else if (MODEST_IS_MAIN_WINDOW (object) && helper->reference != NULL) {
                        GtkWidget *header_view;
                        GtkTreePath *path;
@@ -5333,6 +5346,10 @@ modest_ui_actions_on_send_queue_status_changed (ModestTnySendQueue *send_queue,
 #else
        gtk_widget_queue_draw (header_view);
 #endif         
+
+       /* Rerun dimming rules, because the message could become deletable for example */
+       modest_window_check_dimming_rules_group (MODEST_WINDOW (main_window), 
+                                                MODEST_DIMMING_RULES_TOOLBAR);
        
        /* Free */
  frees: