Allow creation of folders under the MMC root folder
[modest] / src / modest-ui-actions.c
index 7c581bd..7bc729e 100644 (file)
@@ -3707,12 +3707,15 @@ on_move_to_dialog_folder_selection_changed (ModestFolderView* self,
        /* check if folder_store is an remote account */
        if (TNY_IS_ACCOUNT (folder_store)) {
                TnyAccount *local_account = NULL;
+               TnyAccount *mmc_account = NULL;
                ModestTnyAccountStore *account_store = NULL;
 
                account_store = modest_runtime_get_account_store ();
                local_account = modest_tny_account_store_get_local_folders_account (account_store);
+               mmc_account = modest_tny_account_store_get_mmc_folders_account (account_store);
 
-               if ((gpointer) local_account != (gpointer) folder_store) {
+               if ((gpointer) local_account != (gpointer) folder_store &&
+                   (gpointer) mmc_account != (gpointer) folder_store) {
                        is_local_account = FALSE;
                        /* New button should be dimmed on remote
                           account root */
@@ -4187,15 +4190,23 @@ modest_ui_actions_on_main_window_remove_attachments (GtkAction *action,
                                                           MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
 
        header_list = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW (header_view));
-
+       if (!header_list) {
+               g_warning ("%s: no header selected", __FUNCTION__);
+               return;
+       }
+       
        if (tny_list_get_length (header_list) == 1) {
                iter = tny_list_create_iterator (header_list);
                header = TNY_HEADER (tny_iterator_get_current (iter));
                g_object_unref (iter);
-       } else {
+       } else
+               return;
+       
+       if (!header || !TNY_IS_HEADER(header)) {
+               g_warning ("%s: header is not valid", __FUNCTION__);
                return;
        }
-
+       
        found = modest_window_mgr_find_registered_header (modest_runtime_get_window_mgr (),
                                                          header, &msg_view_window);
        flags = tny_header_get_flags (header);
@@ -4426,17 +4437,27 @@ modest_ui_actions_on_msg_view_window_move_to (GtkAction *action,
        TnyHeader *header = NULL;
        TnyFolder *src_folder = NULL;
        TnyAccount *account = NULL;
+       gboolean do_xfer = FALSE;
 
        /* Create header list */
        header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (win));              
        src_folder = TNY_FOLDER (tny_header_get_folder(header));
        g_object_unref (header);
 
-       /* Transfer the message if online or confirmed by the user */
        account = tny_folder_get_account (src_folder);
-        if (remote_folder_is_pop(TNY_FOLDER_STORE (src_folder)) ||
-            (modest_platform_is_network_folderstore(TNY_FOLDER_STORE (src_folder)) && 
-            connect_to_get_msg(MODEST_WINDOW (win), 1, account))) {
+       if (!modest_platform_is_network_folderstore(TNY_FOLDER_STORE(src_folder))) {
+               /* Transfer if the source folder is local */
+               do_xfer = TRUE;
+       } else if (remote_folder_is_pop(TNY_FOLDER_STORE(src_folder))) {
+               /* Transfer if the source folder is POP (as it means
+                * that the message is already downloaded) */
+               do_xfer = TRUE;
+       } else if (connect_to_get_msg(MODEST_WINDOW(win), 1, account)) {
+               /* Transfer after asking confirmation */
+               do_xfer = TRUE;
+       }
+
+       if (do_xfer) {
                modest_ui_actions_xfer_messages_from_move_to (dst_folder, MODEST_WINDOW (win));
         }
        g_object_unref (account);