Patch to compile Modest with the most recent changes
[modest] / src / modest-ui-actions.c
index 84665a0..fd84c02 100644 (file)
@@ -813,6 +813,26 @@ modest_ui_actions_on_new_msg (GtkAction *action, ModestWindow *win)
        modest_ui_actions_compose_msg(win, NULL, NULL, NULL, NULL, NULL, NULL);
 }
 
+void
+modest_ui_actions_on_new_msg_or_folder (GtkAction *action, ModestWindow *win)
+{
+       g_return_if_fail (MODEST_IS_WINDOW (win));
+
+       /* Check first if the folder view has the focus */
+       if (MODEST_IS_MAIN_WINDOW (win)) {
+               GtkWidget *w;
+               w = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
+                                                        MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
+               if (gtk_widget_is_focus (w)) {
+                       modest_ui_actions_on_new_folder (action, MODEST_MAIN_WINDOW(win));
+                       return;
+               }
+       }
+
+       modest_ui_actions_on_new_msg (action, win);
+}
+
+
 gboolean 
 modest_ui_actions_msg_retrieval_check (ModestMailOperation *mail_op,
                                       TnyHeader *header,
@@ -1000,16 +1020,10 @@ modest_ui_actions_get_msgs_full_error_handler (ModestMailOperation *mail_op,
 {
        const GError *error;
        GObject *win = NULL;
-       const gchar *err_msg;
+       const gchar *err_msg = (const gchar *) user_data;
 
        win = modest_mail_operation_get_source (mail_op);
        error = modest_mail_operation_get_error (mail_op);
-       /* Select error message */
-       if (error->code == MODEST_MAIL_OPERATION_ERROR_MESSAGE_SIZE_LIMIT)
-               err_msg = _("emev_ni_ui_imap_msg_size_exceed_error");
-       else
-               err_msg = (const gchar *) user_data;
 
        /* Show error */
        modest_platform_run_information_dialog ((GtkWindow *) win, err_msg);
@@ -1039,6 +1053,16 @@ get_account_from_header_list (TnyList *headers)
        return account;
 }
 
+static void 
+foreach_unregister_headers (gpointer data,
+                           gpointer user_data)
+{
+       ModestWindowMgr *mgr = (ModestWindowMgr *) user_data;
+       TnyHeader *header = TNY_HEADER (data);
+
+       modest_window_mgr_unregister_header (mgr, header);
+}
+
 static void
 open_msgs_performer(gboolean canceled, 
                    GError *err,
@@ -1057,6 +1081,9 @@ open_msgs_performer(gboolean canceled,
 
        status = tny_account_get_connection_status (account);
        if (err || canceled) {
+               /* Unregister the already registered headers */
+               tny_list_foreach (not_opened_headers, foreach_unregister_headers, 
+                                 modest_runtime_get_window_mgr ());
                goto clean;
        }
 
@@ -1220,7 +1247,7 @@ open_msgs_from_headers (TnyList *headers, ModestWindow *win)
 
        /* Connect to the account and perform */
        if (uncached_msgs > 0) {
-               modest_platform_connect_and_perform ((GtkWindow *) win, g_object_ref (account), 
+               modest_platform_connect_and_perform ((GtkWindow *) win, TRUE, g_object_ref (account), 
                                                     open_msgs_performer, g_object_ref (not_opened_headers));
        } else {
                /* Call directly the performer, do not need to connect */
@@ -1738,6 +1765,7 @@ do_send_receive_performer (gboolean canceled,
  */
 void
 modest_ui_actions_do_send_receive (const gchar *account_name, 
+                                  gboolean force_connection,
                                   ModestWindow *win)
 {
        gchar *acc_name = NULL;
@@ -1769,7 +1797,8 @@ modest_ui_actions_do_send_receive (const gchar *account_name,
                                                                     TNY_ACCOUNT_TYPE_STORE);
 
        /* Invoke the connect and perform */
-       modest_platform_connect_and_perform ((win) ? GTK_WINDOW (win) : NULL, info->account, 
+       modest_platform_connect_and_perform ((win) ? GTK_WINDOW (win) : NULL, 
+                                            force_connection, info->account, 
                                             do_send_receive_performer, info);
 }
 
@@ -1848,7 +1877,8 @@ modest_ui_actions_cancel_send (GtkAction *action,  ModestWindow *win)
  * updates
  */
 void
-modest_ui_actions_do_send_receive_all (ModestWindow *win)
+modest_ui_actions_do_send_receive_all (ModestWindow *win, 
+                                      gboolean force_connection)
 {
        GSList *account_names, *iter;
 
@@ -1857,7 +1887,7 @@ modest_ui_actions_do_send_receive_all (ModestWindow *win)
 
        iter = account_names;
        while (iter) {                  
-               modest_ui_actions_do_send_receive ((const char*) iter->data, win);
+               modest_ui_actions_do_send_receive ((const char*) iter->data, force_connection, win);
                iter = g_slist_next (iter);
        }
 
@@ -1898,8 +1928,8 @@ modest_ui_actions_on_send_receive (GtkAction *action, ModestWindow *win)
                        g_object_unref (folder_store);
        }       
        
-       /* Refresh the active account */
-       modest_ui_actions_do_send_receive (NULL, win);
+       /* Refresh the active account. Force the connection if needed */
+       modest_ui_actions_do_send_receive (NULL, TRUE, win);
 }
 
 
@@ -2049,8 +2079,8 @@ folder_refreshed_cb (ModestMailOperation *mail_op,
                if (current_folder != NULL && folder != current_folder) {
                        g_object_unref (current_folder);
                        return;
-               }
-               g_object_unref (current_folder);
+               } else if (current_folder)
+                       g_object_unref (current_folder);
        }
 
        /* Check if folder is empty and set headers view contents style */
@@ -2245,10 +2275,10 @@ on_save_to_drafts_cb (ModestMailOperation *mail_op,
        if (modest_mail_operation_get_error (mail_op) != NULL) {
                g_warning ("%s failed: %s\n", __FUNCTION__, (modest_mail_operation_get_error (mail_op))->message);
                modest_platform_information_banner (NULL, NULL, _("mail_ib_file_operation_failed"));
-               return;
+       } else {
+               modest_msg_edit_window_set_draft (edit_window, saved_draft);
        }
-
-       modest_msg_edit_window_set_draft (edit_window, saved_draft);
+       g_object_unref(edit_window);
 }
 
 void
@@ -2295,7 +2325,7 @@ modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edi
        from = modest_account_mgr_get_from_string (account_mgr, account_name);
 
        /* Create the mail operation */         
-       mail_operation = modest_mail_operation_new (G_OBJECT(edit_window));
+       mail_operation = modest_mail_operation_new (NULL);
        modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_operation);
 
        modest_mail_operation_save_to_drafts (mail_operation,
@@ -2312,7 +2342,7 @@ modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edi
                                              data->images,
                                              data->priority_flags,
                                              on_save_to_drafts_cb,
-                                             edit_window);
+                                             g_object_ref(edit_window));
        info_text = g_strdup_printf (_("mail_va_saved_to_drafts"), _("mcen_me_folder_drafts"));
        modest_platform_information_banner (NULL, NULL, info_text);
 
@@ -2383,7 +2413,7 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window)
        ModestAccountMgr *account_mgr = modest_runtime_get_account_mgr();
        gchar *account_name = g_strdup (data->account_name);
        if (!account_name)
-               g_strdup(modest_window_get_active_account (MODEST_WINDOW(edit_window)));
+               account_name = g_strdup(modest_window_get_active_account (MODEST_WINDOW(edit_window)));
 
        if (!account_name) 
                account_name = modest_account_mgr_get_default_account (account_mgr);
@@ -2391,8 +2421,9 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window)
        if (!account_name) {
                modest_msg_edit_window_free_msg_data (edit_window, data);
                /* Run account setup wizard */
-               if (!modest_ui_actions_run_account_setup_wizard (MODEST_WINDOW(edit_window)))
+               if (!modest_ui_actions_run_account_setup_wizard (MODEST_WINDOW(edit_window))) {
                        return;
+               }
        }
        
        /* Get the currently-active transport account for this modest account: */
@@ -2403,6 +2434,7 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window)
        }
        
        if (!transport_account) {
+               modest_msg_edit_window_free_msg_data (edit_window, data);
                /* Run account setup wizard */
                if (!modest_ui_actions_run_account_setup_wizard(MODEST_WINDOW(edit_window)))
                        return;
@@ -2411,7 +2443,7 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window)
        gchar *from = modest_account_mgr_get_from_string (account_mgr, account_name);
 
        /* Create the mail operation */
-       ModestMailOperation *mail_operation = modest_mail_operation_new (G_OBJECT(edit_window));
+       ModestMailOperation *mail_operation = modest_mail_operation_new (NULL);
        modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_operation);
 
        modest_mail_operation_send_new_mail (mail_operation,
@@ -2598,7 +2630,7 @@ do_create_folder_cb (ModestMailOperation *mail_op,
 {
        gchar *suggested_name = (gchar *) user_data;
        GtkWindow *source_win = (GtkWindow *) modest_mail_operation_get_source (mail_op);
-               
+
        if (modest_mail_operation_get_error (mail_op)) {
                /* Show an error */
                modest_platform_information_banner (GTK_WIDGET (source_win), NULL,
@@ -2689,6 +2721,7 @@ modest_ui_actions_create_folder(GtkWidget *parent_window,
        if (parent_folder) {
                /* The parent folder will be freed in the callback */
                modest_platform_connect_if_remote_and_perform (GTK_WINDOW (parent_window), 
+                                                              TRUE,
                                                               parent_folder,
                                                               create_folder_performer, 
                                                               parent_folder);
@@ -2742,8 +2775,21 @@ typedef struct {
 } RenameFolderInfo;
 
 static void
-on_rename_folder_cb (gboolean canceled, GError *err, GtkWindow *parent_window, 
-               TnyAccount *account, gpointer user_data)
+on_rename_folder_cb (ModestMailOperation *mail_op, 
+                    TnyFolder *new_folder,
+                    gpointer user_data)
+{
+       /* Select now */
+       modest_folder_view_select_folder (MODEST_FOLDER_VIEW (user_data),
+                                         new_folder, FALSE);
+}
+
+static void
+on_rename_folder_performer (gboolean canceled, 
+                           GError *err, 
+                           GtkWindow *parent_window, 
+                           TnyAccount *account, 
+                           gpointer user_data)
 {
        ModestMailOperation *mail_op = NULL;
        GtkTreeSelection *sel = NULL;
@@ -2768,20 +2814,12 @@ on_rename_folder_cb (gboolean canceled, GError *err, GtkWindow *parent_window,
                sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view));
                gtk_tree_selection_unselect_all (sel);
 
-               /* Select *after* the changes */
-               modest_folder_view_select_folder (MODEST_FOLDER_VIEW(folder_view),
-                               TNY_FOLDER(data->folder), TRUE);
-
                /* Actually rename the folder */
                modest_mail_operation_rename_folder (mail_op,
-                               TNY_FOLDER (data->folder),
-                               (const gchar *) (data->new_name));
-               
-               /* TODO folder view filter refilter */
-               /* 
-               GtkTreeModel *tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (folder_view));
-               if (GTK_IS_TREE_MODEL_FILTER (tree_model))
-                       gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (tree_model)); */
+                                                    TNY_FOLDER (data->folder),
+                                                    (const gchar *) (data->new_name),
+                                                    on_rename_folder_cb,
+                                                    folder_view);
        }
 
        g_object_unref (mail_op);
@@ -2835,8 +2873,8 @@ modest_ui_actions_on_rename_folder (GtkAction *action,
                        RenameFolderInfo *rename_folder_data = g_new0 (RenameFolderInfo, 1);
                        rename_folder_data->folder = folder;
                        rename_folder_data->new_name = folder_name;
-                       modest_platform_connect_if_remote_and_perform (GTK_WINDOW(main_window), 
-                                       folder, on_rename_folder_cb, rename_folder_data);
+                       modest_platform_connect_if_remote_and_perform (GTK_WINDOW(main_window), TRUE,
+                                       folder, on_rename_folder_performer, rename_folder_data);
                }
        }
        g_object_unref (folder);
@@ -2938,9 +2976,11 @@ delete_folder (ModestMainWindow *main_window, gboolean move_to_trash)
                info->folder = folder;
                info->move_to_trash = move_to_trash;
                g_object_ref (G_OBJECT (info->folder));
-               TnyAccount *account = tny_folder_get_account(TNY_FOLDER(folder));
-               modest_platform_connect_and_perform (GTK_WINDOW (main_window), 
-                               account, on_delete_folder_cb, info);
+               TnyAccount *account = tny_folder_get_account (TNY_FOLDER (folder));
+               modest_platform_connect_if_remote_and_perform (GTK_WINDOW (main_window), 
+                                                              TRUE,
+                                                              TNY_FOLDER_STORE (account), 
+                                                              on_delete_folder_cb, info);
                g_object_unref (account);
        }
        g_object_unref (G_OBJECT (folder));
@@ -3310,7 +3350,17 @@ modest_ui_actions_on_redo (GtkAction *action,
 
 
 static void
-destroy_information_note (ModestMailOperation *mail_op, gpointer user_data)
+destroy_information_note (ModestMailOperation *mail_op, 
+                         gpointer user_data)
+{
+       /* destroy information note */
+       gtk_widget_destroy (GTK_WIDGET(user_data));
+}
+
+static void
+destroy_folder_information_note (ModestMailOperation *mail_op, 
+                                TnyFolder *new_folder,
+                                gpointer user_data)
 {
        /* destroy information note */
        gtk_widget_destroy (GTK_WIDGET(user_data));
@@ -3455,7 +3505,7 @@ modest_ui_actions_on_paste (GtkAction *action,
                                                           src_folder,
                                                           folder_store,
                                                           delete,
-                                                          destroy_information_note,
+                                                          destroy_folder_information_note,
                                                           inf_note);
                }
 
@@ -3807,16 +3857,16 @@ modest_ui_actions_on_folder_display_name_changed (ModestFolderView *folder_view,
         * updating the display name apparently is expensive */
        const gchar* old_name = gtk_window_get_title (window);
 
+       if (display_name == NULL)
+               display_name = " ";
+
        if (old_name && display_name && strcmp (old_name, display_name) == 0)
                return; /* don't do anything */
 
        /* This is usually used to change the title of the main window, which
         * is the one that holds the folder view. Note that this change can
         * happen even when the widget doesn't have the focus. */
-       if (display_name)
-               gtk_window_set_title (window, display_name);
-       else
-               gtk_window_set_title (window, " ");
+       gtk_window_set_title (window, display_name);
 
 }
 
@@ -4188,10 +4238,9 @@ modest_ui_actions_msgs_move_to_confirmation (ModestWindow *win,
        return response;
 }
 
-
-
 static void
-move_to_cb (ModestMailOperation *mail_op, gpointer user_data)
+move_to_cb (ModestMailOperation *mail_op, 
+           gpointer user_data)
 {
        MoveToHelper *helper = (MoveToHelper *) user_data;
 
@@ -4230,6 +4279,21 @@ move_to_cb (ModestMailOperation *mail_op, gpointer user_data)
        g_free (helper);
 }
 
+static void
+folder_move_to_cb (ModestMailOperation *mail_op, 
+                  TnyFolder *new_folder,
+                  gpointer user_data)
+{
+       move_to_cb (mail_op, user_data);
+}
+
+static void
+msgs_move_to_cb (ModestMailOperation *mail_op, 
+                gpointer user_data)
+{
+       move_to_cb (mail_op, user_data);
+}
+
 void
 modest_ui_actions_move_folder_error_handler (ModestMailOperation *mail_op, 
                                             gpointer user_data)
@@ -4432,8 +4496,8 @@ modest_ui_actions_on_main_window_remove_attachments (GtkAction *action,
  */
 static void
 xfer_messages_from_move_to_cb  (gboolean canceled, GError *err,
-               GtkWindow *parent_window, 
-               TnyAccount *account, gpointer user_data)
+                               GtkWindow *parent_window, 
+                               TnyAccount *account, gpointer user_data)
 {
        TnyFolderStore *dst_folder = TNY_FOLDER_STORE (user_data);
        ModestWindow *win = MODEST_WINDOW (parent_window);
@@ -4446,13 +4510,6 @@ xfer_messages_from_move_to_cb  (gboolean canceled, GError *err,
                g_object_unref (dst_folder);
                return;
        }
-       
-       if (!TNY_IS_FOLDER (dst_folder)) {
-               modest_platform_information_banner (GTK_WIDGET (win),
-                                                   NULL,
-                                                   _CS("ckdg_ib_unable_to_move_to_current_location"));
-               return;
-       }
 
        dst_account = tny_folder_get_account (TNY_FOLDER (dst_folder));
        proto_str = tny_account_get_proto (dst_account);
@@ -4508,7 +4565,7 @@ xfer_messages_from_move_to_cb  (gboolean canceled, GError *err,
                                         headers,
                                         TNY_FOLDER (dst_folder),
                                         TRUE,
-                                        move_to_cb,
+                                        msgs_move_to_cb,
                                         helper);
 
        g_object_unref (G_OBJECT (mail_op));
@@ -4517,6 +4574,36 @@ xfer_messages_from_move_to_cb  (gboolean canceled, GError *err,
 }
 
 typedef struct {
+       TnyAccount *dst_account;
+       ModestConnectedPerformer callback;
+       gpointer data;
+} DoubleConnectionInfo;
+
+static void
+src_account_connect_performer (gboolean canceled, 
+                              GError *err,
+                              GtkWindow *parent_window, 
+                              TnyAccount *src_account, 
+                              gpointer user_data)
+{
+       DoubleConnectionInfo *info = (DoubleConnectionInfo *) user_data;
+
+       if (canceled || err) {
+               /* If there was any error call the user callback */
+               info->callback (canceled, err, parent_window, src_account, info->data);
+       } else {
+               /* Connect the destination account */
+               modest_platform_connect_if_remote_and_perform (parent_window, TRUE, 
+                                                              TNY_FOLDER_STORE (info->dst_account),
+                                                              info->callback, info->data);
+       }
+
+       /* Free the info object */
+       g_object_unref (info->dst_account);
+       g_slice_free (DoubleConnectionInfo, info);
+}
+
+typedef struct {
        TnyFolder *src_folder;
        TnyFolderStore *dst_folder;
        gboolean delete_original;
@@ -4574,11 +4661,13 @@ on_move_folder_cb (gboolean canceled, GError *err, GtkWindow *parent_window,
                        TNY_FOLDER (info->src_folder),
                        info->dst_folder,
                        info->delete_original, 
-                       move_to_cb, 
+                       folder_move_to_cb, 
                        helper);
-       
-       modest_folder_view_select_folder (MODEST_FOLDER_VIEW(info->folder_view),
-                       TNY_FOLDER (info->dst_folder), TRUE);
+
+       if (modest_mail_operation_get_status (mail_op) == MODEST_MAIL_OPERATION_STATUS_SUCCESS) {       
+               modest_folder_view_select_folder (MODEST_FOLDER_VIEW(info->folder_view),
+                                                 TNY_FOLDER (info->dst_folder), TRUE);
+       }
        
        /* Unref mail operation */
        g_object_unref (G_OBJECT (mail_op));
@@ -4615,8 +4704,8 @@ modest_ui_actions_on_main_window_move_to (GtkAction *action,
 
                /* Allow only to transfer folders to the local root folder */
                if (TNY_IS_ACCOUNT (dst_folder) && 
-                               !MODEST_IS_TNY_LOCAL_FOLDERS_ACCOUNT (dst_folder)) {
-                                       do_xfer = FALSE;
+                   !MODEST_IS_TNY_LOCAL_FOLDERS_ACCOUNT (dst_folder)) {
+                       do_xfer = FALSE;
                } else if (!TNY_IS_FOLDER (src_folder)) {
                        g_warning ("%s: src_folder is not a TnyFolder.\n", __FUNCTION__);
                        do_xfer = FALSE;
@@ -4636,30 +4725,53 @@ modest_ui_actions_on_main_window_move_to (GtkAction *action,
                        info->folder_view = folder_view;
                        g_object_ref (G_OBJECT (info->src_folder));
                        g_object_ref (G_OBJECT (info->dst_folder));
-                       modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), 
+                       modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), TRUE,
                                    TNY_FOLDER_STORE (dst_folder), on_move_folder_cb, info);
                }
        } else if (gtk_widget_is_focus (GTK_WIDGET(header_view))) {
                gboolean do_xfer = TRUE;
+
+               /* Show an error when trying to move msgs to an account */      
+               if (!TNY_IS_FOLDER (dst_folder)) {
+                       modest_platform_information_banner (GTK_WIDGET (win),
+                                                           NULL,
+                                                           _CS("ckdg_ib_unable_to_move_to_current_location"));
+                       goto free;
+               }
+
                /* Ask for confirmation if the source folder is remote and we're not connected */
                if (!online && modest_tny_folder_store_is_remote(src_folder)) {
                        TnyList *headers = modest_header_view_get_selected_headers(header_view);
                        if (!msgs_already_deleted_from_server(headers, src_folder)) {
                                guint num_headers = tny_list_get_length(headers);
                                TnyAccount *account = get_account_from_header_list (headers);
-                               if (!connect_to_get_msg(MODEST_WINDOW (win), num_headers, account))
+                               GtkResponseType response;
+
+                               response = modest_platform_run_confirmation_dialog (GTK_WINDOW (win),
+                                                                                   ngettext("mcen_nc_get_msg",
+                                                                                            "mcen_nc_get_msgs",
+                                                                                            num_headers));
+                               if (response == GTK_RESPONSE_CANCEL)
                                        do_xfer = FALSE;
+                               
                                g_object_unref (account);
                        }
                        g_object_unref(headers);
                }
                if (do_xfer) /* Transfer messages */ {
-                       g_object_ref (dst_folder);
-                       modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), 
-                                       TNY_FOLDER_STORE (dst_folder), xfer_messages_from_move_to_cb, dst_folder);
+                       DoubleConnectionInfo *info = g_slice_new (DoubleConnectionInfo);
+                       info->callback = xfer_messages_from_move_to_cb;
+                       info->dst_account = tny_folder_get_account (TNY_FOLDER (dst_folder));
+                       info->data = g_object_ref (dst_folder);
+
+                       modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), TRUE,
+                                                                     TNY_FOLDER_STORE (src_folder), 
+                                                                     src_account_connect_performer, 
+                                                                     info);
                }
        }
 
+ free:
        if (src_folder)
                g_object_unref (src_folder);
 }
@@ -4699,7 +4811,7 @@ modest_ui_actions_on_msg_view_window_move_to (GtkAction *action,
 
        if (do_xfer) {
                g_object_ref (dst_folder);
-               modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), 
+               modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), TRUE,
                                TNY_FOLDER_STORE (dst_folder), xfer_messages_from_move_to_cb, dst_folder);
         }
        g_object_unref (account);
@@ -4930,7 +5042,7 @@ modest_ui_actions_on_retrieve_msg_contents (GtkAction *action,
        g_object_unref (iter);
 
        /* Connect and perform the message retrieval */
-       modest_platform_connect_and_perform ((GtkWindow *) window, 
+       modest_platform_connect_and_perform ((GtkWindow *) window, TRUE,
                                             g_object_ref (account), 
                                             retrieve_msg_contents_performer, 
                                             g_object_ref (headers));
@@ -4941,13 +5053,31 @@ modest_ui_actions_on_retrieve_msg_contents (GtkAction *action,
 }
 
 void
+modest_ui_actions_check_toolbar_dimming_rules (ModestWindow *window)
+{
+       g_return_if_fail (MODEST_IS_WINDOW (window));
+
+       /* Update dimmed */
+       modest_window_check_dimming_rules_group (window, MODEST_DIMMING_RULES_TOOLBAR);
+}
+
+void
+modest_ui_actions_check_menu_dimming_rules (ModestWindow *window)
+{
+       g_return_if_fail (MODEST_IS_WINDOW (window));
+
+       /* Update dimmed */
+       modest_window_check_dimming_rules_group (window, MODEST_DIMMING_RULES_MENU);
+}
+
+void
 modest_ui_actions_on_email_menu_activated (GtkAction *action,
                                          ModestWindow *window)
 {
        g_return_if_fail (MODEST_IS_WINDOW (window));
        
-       /* Update dimmed */     
-       modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");     
+       /* Update dimmed */
+       modest_ui_actions_check_menu_dimming_rules (window);
 }
 
 void
@@ -4956,8 +5086,8 @@ modest_ui_actions_on_edit_menu_activated (GtkAction *action,
 {
        g_return_if_fail (MODEST_IS_WINDOW (window));
 
-       /* Update dimmed */     
-       modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");     
+       /* Update dimmed */
+       modest_ui_actions_check_menu_dimming_rules (window);
 }
 
 void
@@ -4966,8 +5096,8 @@ modest_ui_actions_on_view_menu_activated (GtkAction *action,
 {
        g_return_if_fail (MODEST_IS_WINDOW (window));
 
-       /* Update dimmed */     
-       modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");     
+       /* Update dimmed */
+       modest_ui_actions_check_menu_dimming_rules (window);
 }
 
 void
@@ -4976,8 +5106,8 @@ modest_ui_actions_on_format_menu_activated (GtkAction *action,
 {
        g_return_if_fail (MODEST_IS_WINDOW (window));
 
-       /* Update dimmed */     
-       modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");     
+       /* Update dimmed */
+       modest_ui_actions_check_menu_dimming_rules (window);
 }
 
 void
@@ -4986,8 +5116,8 @@ modest_ui_actions_on_tools_menu_activated (GtkAction *action,
 {
        g_return_if_fail (MODEST_IS_WINDOW (window));
 
-       /* Update dimmed */     
-       modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");     
+       /* Update dimmed */
+       modest_ui_actions_check_menu_dimming_rules (window);
 }
 
 void
@@ -4996,8 +5126,8 @@ modest_ui_actions_on_attachment_menu_activated (GtkAction *action,
 {
        g_return_if_fail (MODEST_IS_WINDOW (window));
 
-       /* Update dimmed */     
-       modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");     
+       /* Update dimmed */
+       modest_ui_actions_check_menu_dimming_rules (window);
 }
 
 void
@@ -5006,8 +5136,8 @@ modest_ui_actions_on_toolbar_csm_menu_activated (GtkAction *action,
 {
        g_return_if_fail (MODEST_IS_WINDOW (window));
 
-       /* Update dimmed */     
-       modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");     
+       /* Update dimmed */
+       modest_ui_actions_check_menu_dimming_rules (window);
 }
 
 void
@@ -5016,8 +5146,8 @@ modest_ui_actions_on_folder_view_csm_menu_activated (GtkAction *action,
 {
        g_return_if_fail (MODEST_IS_WINDOW (window));
 
-       /* Update dimmed */     
-       modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");     
+       /* Update dimmed */
+       modest_ui_actions_check_menu_dimming_rules (window);
 }
 
 void
@@ -5026,17 +5156,8 @@ modest_ui_actions_on_header_view_csm_menu_activated (GtkAction *action,
 {
        g_return_if_fail (MODEST_IS_WINDOW (window));
 
-       /* Update dimmed */     
-       modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");     
-}
-
-void
-modest_ui_actions_check_toolbar_dimming_rules (ModestWindow *window)
-{
-       g_return_if_fail (MODEST_IS_WINDOW (window));
-
-       /* Update dimmed */     
-       modest_window_check_dimming_rules_group (window, "ModestToolbarDimmingRules");  
+       /* Update dimmed */
+       modest_ui_actions_check_menu_dimming_rules (window);
 }
 
 void
@@ -5130,7 +5251,7 @@ modest_ui_actions_on_send_queue_error_happened (TnySendQueue *self,
        gchar *message = NULL;
 
        /* Don't show anything if the user cancelled something */
-       if (err->code == TNY_TRANSPORT_ACCOUNT_ERROR_SEND_USER_CANCEL)
+       if (err->code == TNY_SYSTEM_ERROR_CANCEL)
                return;
 
        /* Get the server name: */
@@ -5147,20 +5268,17 @@ modest_ui_actions_on_send_queue_error_happened (TnySendQueue *self,
 
        /* Show the appropriate message text for the GError: */
        switch (err->code) {
-       case TNY_TRANSPORT_ACCOUNT_ERROR_SEND_HOST_LOOKUP_FAILED:
-               message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), server_name);
-               break;
-       case TNY_TRANSPORT_ACCOUNT_ERROR_SEND_SERVICE_UNAVAILABLE:
+       case TNY_SERVICE_ERROR_CONNECT:
                message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), server_name);
                break;
-       case TNY_TRANSPORT_ACCOUNT_ERROR_SEND_AUTHENTICATION_NOT_SUPPORTED:
+       case TNY_SERVICE_ERROR_AUTHENTICATE:
                message = g_strdup_printf (_("emev_ni_ui_smtp_authentication_fail_error"), server_name);
                break;
-       case TNY_TRANSPORT_ACCOUNT_ERROR_SEND:
+       case TNY_SERVICE_ERROR_SEND:
                message = g_strdup (_("emev_ib_ui_smtp_send_error"));
                break;
        default:
-               g_warning ("%s: unexpected TNY_TRANSPORT_ACCOUNT_ERROR %d",
+               g_warning ("%s: unexpected ERROR %d",
                           __FUNCTION__, err->code);
                message = g_strdup (_("emev_ib_ui_smtp_send_error"));
                break;