Added a missing include
[modest] / src / modest-ui-actions.c
index c99f5b4..5a8c3c7 100644 (file)
@@ -50,6 +50,7 @@
 #include <tny-camel-pop-folder.h>
 #ifdef MODEST_TOOLKIT_HILDON2
 #include <hildon/hildon-pannable-area.h>
+#include <hildon/hildon-gtk.h>
 #include <modest-header-window.h>
 #endif
 
@@ -299,6 +300,13 @@ get_selected_headers (ModestWindow *win)
 
                return list;
 
+#ifdef MODEST_TOOLKIT_HILDON2
+       } else if (MODEST_IS_HEADER_WINDOW (win)) {
+               GtkWidget *header_view;
+
+               header_view = GTK_WIDGET (modest_header_window_get_header_view (MODEST_HEADER_WINDOW (win)));
+               return modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
+#endif
        } else
                return NULL;
 }
@@ -379,6 +387,12 @@ modest_ui_actions_refresh_message_window_after_delete (ModestMsgViewWindow* win)
 void
 modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win)
 {
+       modest_ui_actions_on_edit_mode_delete_message (win);
+}
+
+gboolean
+modest_ui_actions_on_edit_mode_delete_message (ModestWindow *win)
+{
        TnyList *header_list = NULL;
        TnyIterator *iter = NULL;
        TnyHeader *header = NULL;
@@ -387,8 +401,9 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win)
        gint response;
        ModestWindowMgr *mgr;
        GtkWidget *header_view = NULL;
+       gboolean retval = TRUE;
 
-       g_return_if_fail (MODEST_IS_WINDOW(win));
+       g_return_val_if_fail (MODEST_IS_WINDOW(win), FALSE);
        
        /* Check first if the header view has the focus */
        if (MODEST_IS_MAIN_WINDOW (win)) {
@@ -396,13 +411,13 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win)
                        modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
                                                             MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
                if (!gtk_widget_is_focus (header_view))
-                       return;
+                       return FALSE;
        }
        
        /* Get the headers, either from the header view (if win is the main window),
         * or from the message view window: */
        header_list = get_selected_headers (win);
-       if (!header_list) return;
+       if (!header_list) return FALSE;
                        
        /* Check if any of the headers are already opened, or in the process of being opened */
        if (MODEST_IS_MAIN_WINDOW (win)) {
@@ -431,7 +446,7 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win)
                        
                        g_free (msg);
                        g_object_unref (header_list);
-                       return;
+                       return FALSE;
                }
        }
 
@@ -512,7 +527,7 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win)
                        /* Get main window */
                        mgr = modest_runtime_get_window_mgr ();
                        main_window = modest_window_mgr_get_main_window (mgr, FALSE); /* don't create */
-               } else {                        
+               } else if (MODEST_IS_MAIN_WINDOW (win)) {
                        /* Move cursor to next row */
                        main_window = win; 
 
@@ -544,12 +559,17 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win)
                /* Free */
                g_list_foreach (sel_list, (GFunc) gtk_tree_path_free, NULL);
                g_list_free (sel_list);
+               retval = TRUE;
+       } else {
+               retval = FALSE;
        }
 
        /* Free*/
        g_free(message);
        g_free(desc);
        g_object_unref (header_list);
+
+       return retval;
 }
 
 
@@ -625,6 +645,14 @@ modest_ui_actions_on_close_window (GtkAction *action, ModestWindow *win)
 }
 
 void
+modest_ui_actions_add_to_contacts (GtkAction *action, ModestWindow *win)
+{
+       g_return_if_fail (MODEST_IS_MSG_VIEW_WINDOW (win));
+       
+       modest_msg_view_window_add_to_contacts (MODEST_MSG_VIEW_WINDOW (win));
+}
+
+void
 modest_ui_actions_on_add_to_contacts (GtkAction *action, ModestWindow *win)
 {
        GtkClipboard *clipboard = NULL;
@@ -940,7 +968,6 @@ get_info_from_header (TnyHeader *header, gboolean *is_draft)
                                           outbox which is not in
                                           failed state */
                                        g_object_unref(traccount);
-                                       goto cleanup;
                                 }
 #endif
                        }
@@ -3611,6 +3638,7 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
        GtkWidget *dialog =
                gtk_dialog_new_with_buttons (_("mail_ti_password_protected"),
                                             NULL,
+                                            GTK_DIALOG_MODAL,
                                             _("mcen_bd_dialog_ok"),
                                             GTK_RESPONSE_ACCEPT,
                                             _("mcen_bd_dialog_cancel"),
@@ -4496,6 +4524,7 @@ create_move_to_dialog_on_new_folder(GtkWidget *button, gpointer user_data)
                                         GTK_WIDGET (user_data));
 }
 
+#ifndef MODEST_TOOLKIT_HILDON2
 /*
  * This function is used to track changes in the selection of the
  * folder view that is inside the "move to" dialog to enable/disable
@@ -4646,6 +4675,18 @@ on_move_to_dialog_folder_selection_changed (ModestFolderView* self,
        /* Set sensitivity of the NEW button */
        gtk_widget_set_sensitive (new_button, new_sensitive);
 }
+#endif
+
+#ifdef MODEST_TOOLKIT_HILDON2
+static void
+on_move_to_dialog_folder_activated (GtkTreeView       *tree_view,
+                                   GtkTreePath       *path,
+                                   GtkTreeViewColumn *column,
+                                   gpointer           user_data)
+{
+       gtk_dialog_response (GTK_DIALOG (user_data), GTK_RESPONSE_ACCEPT);
+}
+#endif
 
 
 #define MODEST_MOVE_TO_DIALOG_FOLDER_VIEW "move-to-dialog-folder-view"
@@ -4667,8 +4708,9 @@ create_move_to_dialog (GtkWindow *win,
        GtkWidget *pannable;
 #else
        GtkWidget *scroll;
+       GtkWidget *ok_button;
 #endif
-       GtkWidget *new_button, *ok_button;
+       GtkWidget *new_button;
 
        dialog = gtk_dialog_new_with_buttons (_("mcen_ti_moveto_folders_title"),
                                              GTK_WINDOW (win),
@@ -4676,15 +4718,19 @@ create_move_to_dialog (GtkWindow *win,
                                              NULL);
 
 #ifndef MODEST_TOOLKIT_GTK
+#ifndef MODEST_TOOLKIT_HILDON2
        ok_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("mcen_bd_dialog_ok"), GTK_RESPONSE_ACCEPT);
+#endif
        /* We do this manually so GTK+ does not associate a response ID for
         * the button. */
        new_button = gtk_button_new_from_stock (_("mcen_bd_new"));
        gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog)->action_area), new_button, FALSE, FALSE, 0);
-       gtk_widget_show (new_button);
-#ifndef MODEST_TOOLKIT_HILDON2
+#ifdef MODEST_TOOLKIT_HILDON2
+       hildon_gtk_widget_set_theme_size (new_button, HILDON_SIZE_FINGER_HEIGHT);
+#else
        gtk_dialog_add_button (GTK_DIALOG (dialog), _("mcen_bd_dialog_cancel"), GTK_RESPONSE_REJECT);
 #endif
+       gtk_widget_show (new_button);
 #else
        /* We do this manually so GTK+ does not associate a response ID for
         * the button. */
@@ -4696,7 +4742,10 @@ create_move_to_dialog (GtkWindow *win,
        gtk_container_set_border_width (GTK_CONTAINER (dialog), 12);
        gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 24);
 #endif
+
+#ifndef MODEST_TOOLKIT_HILDON2
        g_object_set_data (G_OBJECT (dialog), MOVE_FOLDER_OK_BUTTON, ok_button);
+#endif
        g_object_set_data (G_OBJECT (dialog), MOVE_FOLDER_NEW_BUTTON, new_button);
 
        /* Create scrolled window */
@@ -4716,6 +4765,13 @@ create_move_to_dialog (GtkWindow *win,
        /* Create folder view */
        *tree_view = modest_platform_create_folder_view (NULL);
 
+#ifdef MODEST_TOOLKIT_HILDON2
+       /* We return OK on activation */
+       g_signal_connect (*tree_view,
+                         "row-activated",
+                         G_CALLBACK (on_move_to_dialog_folder_activated),
+                         dialog);
+#else
        /* Track changes in the selection to
         * disable the OK button whenever "Move to" is not possible
         * disbale NEW button whenever New is not possible */
@@ -4723,6 +4779,7 @@ create_move_to_dialog (GtkWindow *win,
                          "folder_selection_changed",
                          G_CALLBACK (on_move_to_dialog_folder_selection_changed),
                          win);
+#endif
 
        /* Listen to clicks on New button */
        g_signal_connect (G_OBJECT (new_button), 
@@ -4730,6 +4787,11 @@ create_move_to_dialog (GtkWindow *win,
                          G_CALLBACK(create_move_to_dialog_on_new_folder), 
                          *tree_view);
 
+#ifdef MODEST_TOOLKIT_HILDON2
+       modest_folder_view_set_cell_style (MODEST_FOLDER_VIEW (*tree_view),
+                                          MODEST_FOLDER_VIEW_CELL_STYLE_COMPACT);
+#endif
+
        /* It could happen that we're trying to move a message from a
           window (msg window for example) after the main window was
           closed, so we can not just get the model of the folder
@@ -5517,29 +5579,38 @@ modest_ui_actions_transfer_messages_helper (GtkWindow *win,
  * ModestMsgViewWindow
  */
 static void 
-modest_ui_actions_on_msg_view_window_move_to (GtkAction *action, 
-                                             TnyFolderStore *dst_folder,
-                                             ModestMsgViewWindow *win)
+modest_ui_actions_on_window_move_to (GtkAction *action, 
+                                    TnyFolderStore *dst_folder,
+                                    ModestWindow *win)
 {
        TnyList *headers = NULL;
-       TnyHeader *header = NULL;
        TnyFolder *src_folder = NULL;
 
        g_return_if_fail (TNY_IS_FOLDER (dst_folder));
 
        /* Create header list */
-       header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (win));
-       src_folder = TNY_FOLDER (tny_header_get_folder(header));
-       headers = tny_simple_list_new ();
-       tny_list_append (headers, G_OBJECT (header));
+       headers = get_selected_headers (MODEST_WINDOW (win));
+
+       if (tny_list_get_length (headers) > 0) {
+               TnyHeader *header = NULL;
+               TnyIterator *iter;
+
+               iter = tny_list_create_iterator (headers);
+               header = (TnyHeader *) tny_iterator_get_current (iter);
+               src_folder = tny_header_get_folder (header);
+
+               g_object_unref (header);
+               g_object_unref (iter);
+
+               /* Transfer the messages */
+               modest_ui_actions_transfer_messages_helper (GTK_WINDOW (win), src_folder, headers, 
+                                                           TNY_FOLDER (dst_folder));
+       }
 
-       /* Transfer the messages */
-       modest_ui_actions_transfer_messages_helper (GTK_WINDOW (win), src_folder, headers, 
-                                                   TNY_FOLDER (dst_folder));
 
        /* Frees */
-       g_object_unref (src_folder);
-       g_object_unref (header);
+       if (src_folder)
+               g_object_unref (src_folder);
        g_object_unref (headers);
 }
 
@@ -5552,8 +5623,7 @@ modest_ui_actions_on_move_to (GtkAction *action,
        TnyFolderStore *dst_folder = NULL;
        ModestMainWindow *main_window;
 
-       g_return_if_fail (MODEST_IS_MAIN_WINDOW (win) ||
-                         MODEST_IS_MSG_VIEW_WINDOW (win));
+       g_return_if_fail (MODEST_IS_WINDOW (win));
 
        /* Get the main window if exists */
        if (MODEST_IS_MAIN_WINDOW (win))
@@ -5589,9 +5659,9 @@ modest_ui_actions_on_move_to (GtkAction *action,
                                dst_folder,
                                MODEST_MAIN_WINDOW (win));
        } else {
-               modest_ui_actions_on_msg_view_window_move_to (action,
-                               dst_folder,
-                               MODEST_MSG_VIEW_WINDOW (win));
+               modest_ui_actions_on_window_move_to (action,
+                                                    dst_folder,
+                                                    MODEST_WINDOW (win));
        }
 
        if (dst_folder)