* src/maemo/modest-main-window.c:
[modest] / src / modest-ui-actions.c
index 3101492..669fb18 100644 (file)
@@ -661,12 +661,9 @@ modest_ui_actions_on_accounts (GtkAction *action, ModestWindow *win)
 static void
 on_smtp_servers_window_hide (GtkWindow* window, gpointer user_data)
 {
-       ModestWindow *main_window = MODEST_WINDOW (user_data);
-       
        /* Save any changes. */
        modest_connection_specific_smtp_window_save_server_accounts (
-                       MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (window), 
-                       modest_window_get_active_account (main_window));
+                       MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (window));
        gtk_widget_destroy (GTK_WIDGET (window));
 }
 
@@ -682,22 +679,10 @@ modest_ui_actions_on_smtp_servers (GtkAction *action, ModestWindow *win)
 #ifdef MODEST_PLATFORM_MAEMO /* Defined in config.h */
        
        /* Create the window if necessary: */
-       const gchar *active_account_name = modest_window_get_active_account (win);
-       
-       /* TODO: Dim the menu item (not in the UI spec)? or show a warning,
-        * or show the default account?
-        * If we show the default account then the account name should be shown in 
-        * the window when we show it. */
-       if (!active_account_name) {
-               g_warning ("%s: No account is active.", __FUNCTION__);
-               return;
-       }
-               
        GtkWidget *specific_window = GTK_WIDGET (modest_connection_specific_smtp_window_new ());
        modest_connection_specific_smtp_window_fill_with_connections (
                MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (specific_window), 
-               modest_runtime_get_account_mgr(), 
-               active_account_name);
+               modest_runtime_get_account_mgr());
 
        /* Show the window: */  
        gtk_window_set_transient_for (GTK_WINDOW (specific_window), GTK_WINDOW (win));
@@ -730,9 +715,9 @@ modest_ui_actions_on_new_msg (GtkAction *action, ModestWindow *win)
                                return;
        }
        
-       account_name = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr ());
+       account_name = g_strdup (modest_window_get_active_account (win));
        if (!account_name)
-               account_name = g_strdup (modest_window_get_active_account (win));
+               account_name = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr ());
        if (!account_name) {
                g_printerr ("modest: no account found\n");
                goto cleanup;
@@ -775,7 +760,7 @@ modest_ui_actions_on_new_msg (GtkAction *action, ModestWindow *win)
                goto cleanup;
        }
        
-
+       
        /* Create and register edit window */
        /* This is destroyed by TODO. */
        msg_win = modest_msg_edit_window_new (msg, account_name, FALSE);
@@ -784,7 +769,7 @@ modest_ui_actions_on_new_msg (GtkAction *action, ModestWindow *win)
 
        if (win)
                gtk_window_set_transient_for (GTK_WINDOW (msg_win),
-                                             GTK_WINDOW (win));        
+                                             GTK_WINDOW (win));
        gtk_widget_show_all (GTK_WIDGET (msg_win));
 
 cleanup:
@@ -823,10 +808,7 @@ modest_ui_actions_msg_retrieval_check (ModestMailOperation *mail_op,
 }
 
 static void
-open_msg_cb (ModestMailOperation *mail_op, 
-            TnyHeader *header, 
-            TnyMsg *msg, 
-            gpointer user_data)
+open_msg_cb (ModestMailOperation *mail_op, TnyHeader *header,  TnyMsg *msg, gpointer user_data)
 {
        ModestWindowMgr *mgr = NULL;
        ModestWindow *parent_win = NULL;
@@ -838,9 +820,8 @@ open_msg_cb (ModestMailOperation *mail_op,
        /* Do nothing if there was any problem with the mail
           operation. The error will be shown by the error_handler of
           the mail operation */
-       if (!modest_ui_actions_msg_retrieval_check (mail_op, header, msg)) {
+       if (!modest_ui_actions_msg_retrieval_check (mail_op, header, msg))
                return;
-       }
 
        parent_win = (ModestWindow *) modest_mail_operation_get_source (mail_op);
        folder = tny_header_get_folder (header);
@@ -868,7 +849,11 @@ open_msg_cb (ModestMailOperation *mail_op,
                                goto cleanup;
                }
                win = modest_msg_edit_window_new (msg, account, TRUE);
-               
+
+
+               /* Show banner */
+               modest_platform_information_banner (NULL, NULL, _("mail_ib_opening_draft_message"));
+
        } else {
                gchar *uid = modest_tny_folder_get_header_unique_id (header);
                
@@ -1817,10 +1802,20 @@ set_active_account_from_tny_account (TnyAccount *account,
                modest_tny_account_store_get_tny_account_by (modest_runtime_get_account_store (),
                                                             MODEST_TNY_ACCOUNT_STORE_QUERY_ID, 
                                                             server_acc_name);
+       if (!modest_server_account) {
+               g_warning ("%s: could not get tny account\n", __FUNCTION__);
+               return;
+       }
+
+       /* Update active account, but only if it's not a pseudo-account */
+       if ((!modest_tny_account_is_virtual_local_folders(modest_server_account)) &&
+           (!modest_tny_account_is_memory_card_account(modest_server_account))) {
+               const gchar *modest_acc_name = 
+                       modest_tny_account_get_parent_modest_account_name_for_server_account (modest_server_account);
+               if (modest_acc_name)
+                       modest_window_set_active_account (window, modest_acc_name);
+       }
        
-       const gchar *modest_acc_name = 
-               modest_tny_account_get_parent_modest_account_name_for_server_account (modest_server_account);
-       modest_window_set_active_account (window, modest_acc_name);
        g_object_unref (modest_server_account);
 }
 
@@ -1832,7 +1827,6 @@ folder_refreshed_cb (ModestMailOperation *mail_op,
 {
        ModestMainWindow *win = NULL;
        GtkWidget *header_view;
-       TnyFolder *current_folder;
        gboolean folder_empty = FALSE;
        gboolean all_marked_as_deleted = FALSE;
 
@@ -1843,10 +1837,14 @@ folder_refreshed_cb (ModestMailOperation *mail_op,
                modest_main_window_get_child_widget(win, MODEST_WIDGET_TYPE_HEADER_VIEW);
 
        if (header_view) {
+               TnyFolder *current_folder;
+
                current_folder = modest_header_view_get_folder (MODEST_HEADER_VIEW (header_view));
                if (current_folder != NULL && folder != current_folder) {
+                       g_object_unref (current_folder);
                        return;
                }
+               g_object_unref (current_folder);
        }
 
        /* Check if folder is empty and set headers view contents style */
@@ -1877,8 +1875,8 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view,
 
        if (TNY_IS_ACCOUNT (folder_store)) {
                if (selected) {
-                       /* Update active account */
                        set_active_account_from_tny_account (TNY_ACCOUNT (folder_store), MODEST_WINDOW (main_window));
+                       
                        /* Show account details */
                        modest_main_window_set_contents_style (main_window, MODEST_MAIN_WINDOW_CONTENTS_STYLE_DETAILS);
                }
@@ -1918,7 +1916,7 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view,
                                                      MODEST_CONF_HEADER_VIEW_KEY);
                } else {
                        /* Update the active account */
-                       modest_window_set_active_account (MODEST_WINDOW (main_window), NULL);
+                       //modest_window_set_active_account (MODEST_WINDOW (main_window), NULL);
                        /* Save only if we're seeing headers */
                        if (modest_main_window_get_contents_style (main_window) ==
                            MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS)
@@ -3208,9 +3206,10 @@ modest_ui_actions_on_change_zoom (GtkRadioAction *action,
        }
 }
 
-void     modest_ui_actions_msg_edit_on_change_priority (GtkRadioAction *action,
-                                                       GtkRadioAction *selected,
-                                                       ModestWindow *window)
+void     
+modest_ui_actions_msg_edit_on_change_priority (GtkRadioAction *action,
+                                              GtkRadioAction *selected,
+                                              ModestWindow *window)
 {
        TnyHeaderFlags flags;
        g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
@@ -3219,9 +3218,10 @@ void     modest_ui_actions_msg_edit_on_change_priority (GtkRadioAction *action,
        modest_msg_edit_window_set_priority_flags (MODEST_MSG_EDIT_WINDOW (window), flags);
 }
 
-void     modest_ui_actions_msg_edit_on_change_file_format (GtkRadioAction *action,
-                                                          GtkRadioAction *selected,
-                                                          ModestWindow *window)
+void     
+modest_ui_actions_msg_edit_on_change_file_format (GtkRadioAction *action,
+                                                 GtkRadioAction *selected,
+                                                 ModestWindow *window)
 {
        gint file_format;
 
@@ -3440,7 +3440,7 @@ modest_ui_actions_on_toggle_toolbar (GtkToggleAction *toggle,
 
        /* Toggle toolbar */
        mgr = modest_runtime_get_window_mgr ();
-       modest_window_mgr_show_toolbars (mgr, active, fullscreen);
+       modest_window_mgr_show_toolbars (mgr, G_TYPE_FROM_INSTANCE (window), active, fullscreen);
 }
 
 void