* src/widgets/modest-account-view.c:
[modest] / src / modest-ui-actions.c
index ca4f44f..341914a 100644 (file)
@@ -104,8 +104,8 @@ typedef struct _ReplyForwardHelper {
 } ReplyForwardHelper;
 
 typedef struct _MoveToHelper {
-       ModestMailOperation *mail_op;
-       TnyFolder *folder;
+       GtkTreeRowReference *reference;
+       GtkWidget *banner;
 } MoveToHelper;
 
 typedef struct _PasteAsAttachmentHelper {
@@ -338,6 +338,35 @@ get_selected_headers (ModestWindow *win)
                return NULL;
 }
 
+static GtkTreeRowReference *
+get_next_after_selected_headers (ModestHeaderView *header_view)
+{
+       GtkTreeSelection *sel;
+       GList *selected_rows, *node;
+       GtkTreePath *path;
+       GtkTreeRowReference *result;
+       GtkTreeModel *model;
+
+       model = gtk_tree_view_get_model (GTK_TREE_VIEW (header_view));
+       sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (header_view));
+       selected_rows = gtk_tree_selection_get_selected_rows (sel, NULL);
+
+       if (selected_rows == NULL)
+               return NULL;
+
+       node = g_list_last (selected_rows);
+       path = gtk_tree_path_copy ((GtkTreePath *) node->data);
+       gtk_tree_path_next (path);
+
+       result = gtk_tree_row_reference_new (model, path);
+
+       gtk_tree_path_free (path);
+       g_list_foreach (selected_rows, (GFunc) gtk_tree_path_free, NULL);
+       g_list_free (selected_rows);
+
+       return result;
+}
+
 static void
 headers_action_mark_as_read (TnyHeader *header,
                             ModestWindow *win,
@@ -1172,6 +1201,7 @@ reply_forward_cb (ModestMailOperation *mail_op,  TnyHeader *header, TnyMsg *msg,
        TnyAccount *account = NULL;
        ModestWindowMgr *mgr = NULL;
        gchar *signature = NULL;
+       gboolean use_signature;
 
        /* If there was any error. The mail operation could be NULL,
           this means that we already have the message downloaded and
@@ -1184,13 +1214,9 @@ reply_forward_cb (ModestMailOperation *mail_op,  TnyHeader *header, TnyMsg *msg,
 
        from = modest_account_mgr_get_from_string (modest_runtime_get_account_mgr(),
                                                   rf_helper->account_name);
-       if (modest_account_mgr_get_bool (modest_runtime_get_account_mgr(),
-                                        rf_helper->account_name,
-                                        MODEST_ACCOUNT_USE_SIGNATURE, FALSE)) {
-               signature = modest_account_mgr_get_string (modest_runtime_get_account_mgr (),
-                                                          rf_helper->account_name,
-                                                          MODEST_ACCOUNT_SIGNATURE, FALSE);
-       }
+       signature = modest_account_mgr_get_signature (modest_runtime_get_account_mgr(), 
+                                                     rf_helper->account_name, 
+                                                     &use_signature);
 
        /* Create reply mail */
        switch (rf_helper->action) {
@@ -2179,6 +2205,7 @@ modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edi
 
        info_text = g_strdup_printf (_("mail_va_saved_to_drafts"), _("mcen_me_folder_drafts"));
        modest_platform_information_banner (NULL, NULL, info_text);
+       modest_msg_edit_window_reset_modified (edit_window);
        g_free (info_text);
 }
 
@@ -2778,7 +2805,7 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
 
        gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(main_window));
        
-       gchar *server_name = modest_server_account_get_hostname (
+       gchar *server_name = modest_account_mgr_get_server_account_hostname (
                modest_runtime_get_account_mgr(), server_account_name);
        if (!server_name) {/* This happened once, though I don't know why. murrayc. */
                g_warning("%s: Could not get server name for server account '%s'", __FUNCTION__, server_account_name);
@@ -2796,7 +2823,7 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
        server_name = NULL;
 
        /* username: */
-       gchar *initial_username = modest_server_account_get_username (
+       gchar *initial_username = modest_account_mgr_get_server_account_username (
                modest_runtime_get_account_mgr(), server_account_name);
        
        GtkWidget *entry_username = gtk_entry_new ();
@@ -2805,7 +2832,7 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
        /* Dim this if a connection has ever succeeded with this username,
         * as per the UI spec: */
        const gboolean username_known = 
-               modest_server_account_get_username_has_succeeded(
+               modest_account_mgr_get_server_account_username_has_succeeded(
                        modest_runtime_get_account_mgr(), server_account_name);
        gtk_widget_set_sensitive (entry_username, !username_known);
        
@@ -2850,6 +2877,9 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
        gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), entry_password,
                            TRUE, FALSE, 0);
 #endif /* MODEST_PLATFORM_MAEMO */     
+
+       if (initial_username != NULL)
+               gtk_widget_grab_focus (GTK_WIDGET (entry_password));
                                
 /* This is not in the Maemo UI spec:
        remember_pass_check = gtk_check_button_new_with_label (_("Remember password"));
@@ -2863,7 +2893,7 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
                if (username) {
                        *username = g_strdup (gtk_entry_get_text (GTK_ENTRY(entry_username)));
                        
-                       modest_server_account_set_username (
+                       modest_account_mgr_set_server_account_username (
                                 modest_runtime_get_account_mgr(), server_account_name, 
                                 *username);
                                 
@@ -3899,6 +3929,8 @@ modest_ui_actions_msgs_move_to_confirmation (GtkWindow *win,
 static void
 move_to_cb (ModestMailOperation *mail_op, gpointer user_data)
 {
+       MoveToHelper *helper = (MoveToHelper *) user_data;
+
        /* Note that the operation could have failed, in that case do
           nothing */
        if (modest_mail_operation_get_status (mail_op) == 
@@ -3912,12 +3944,26 @@ move_to_cb (ModestMailOperation *mail_op, gpointer user_data)
                                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));
+               } else if (MODEST_IS_MAIN_WINDOW (object) && helper->reference != NULL) {
+                       GtkWidget *header_view;
+                       GtkTreePath *path;
+                       GtkTreeSelection *sel;
+
+                       header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(object),
+                                                                          MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
+                       sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (header_view));
+                       path = gtk_tree_row_reference_get_path (helper->reference);
+                       gtk_tree_selection_select_path (sel, path);
+                       gtk_tree_path_free (path);
                }
                g_object_unref (object);
         }
 
        /* Close the "Pasting" information banner */
-       gtk_widget_destroy (GTK_WIDGET(user_data));
+       gtk_widget_destroy (GTK_WIDGET(helper->banner));
+       if (helper->reference != NULL)
+               gtk_tree_row_reference_free (helper->reference);
+       g_free (helper);
 }
 
 void
@@ -4153,12 +4199,19 @@ modest_ui_actions_xfer_messages_from_move_to (TnyFolderStore *dst_folder,
                return;
        }
 
-        GtkWidget *inf_note;
-       inf_note = modest_platform_animation_banner (GTK_WIDGET (win), NULL,
-                                                    _CS("ckct_nw_pasting"));
-       if (inf_note != NULL)  {
-               gtk_window_set_modal (GTK_WINDOW(inf_note), FALSE);
-               gtk_widget_show (GTK_WIDGET(inf_note));
+       MoveToHelper *helper = g_new0 (MoveToHelper, 1);
+       helper->banner = modest_platform_animation_banner (GTK_WIDGET (win), NULL,
+                                                          _CS("ckct_nw_pasting"));
+       if (helper->banner != NULL)  {
+               gtk_window_set_modal (GTK_WINDOW(helper->banner), FALSE);
+               gtk_widget_show (GTK_WIDGET(helper->banner));
+       }
+
+       if (MODEST_IS_MAIN_WINDOW (win)) {
+               GtkWidget *header_view = 
+                       modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
+                                                            MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
+               helper->reference = get_next_after_selected_headers (MODEST_HEADER_VIEW (header_view));
        }
 
        ModestMailOperation *mail_op = 
@@ -4174,7 +4227,7 @@ modest_ui_actions_xfer_messages_from_move_to (TnyFolderStore *dst_folder,
                                         TNY_FOLDER (dst_folder),
                                         TRUE,
                                         move_to_cb,
-                                        inf_note);
+                                        helper);
 
        g_object_unref (G_OBJECT (mail_op));
        g_object_unref (headers);
@@ -4223,12 +4276,12 @@ modest_ui_actions_on_main_window_move_to (GtkAction *action,
                 }
 
                 if (do_xfer) {
-                        GtkWidget *inf_note;
-                        inf_note = modest_platform_animation_banner (GTK_WIDGET (win), NULL,
-                                                                     _CS("ckct_nw_pasting"));
-                        if (inf_note != NULL)  {
-                                gtk_window_set_modal (GTK_WINDOW(inf_note), FALSE);
-                                gtk_widget_show (GTK_WIDGET(inf_note));
+                        MoveToHelper *helper = g_new0 (MoveToHelper, 1);
+                        helper->banner = modest_platform_animation_banner (GTK_WIDGET (win), NULL,
+                                                                          _CS("ckct_nw_pasting"));
+                        if (helper->banner != NULL)  {
+                                gtk_window_set_modal (GTK_WINDOW(helper->banner), FALSE);
+                                gtk_widget_show (GTK_WIDGET(helper->banner));
                         }
                         /* Clean folder on header view before moving it */
                         sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view));
@@ -4252,7 +4305,7 @@ modest_ui_actions_on_main_window_move_to (GtkAction *action,
                                                            dst_folder,
                                                            TRUE, 
                                                           move_to_cb, 
-                                                          inf_note);
+                                                          helper);
                         /* Unref mail operation */
                         g_object_unref (G_OBJECT (mail_op));
                 }