Fix error in header window on retrieving a deleted message
[modest] / src / modest-ui-actions.c
index 14dd6f4..6003b86 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,11 +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;
 }
@@ -4521,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
@@ -4671,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"
@@ -4692,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),
@@ -4701,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. */
@@ -4721,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 */
@@ -4741,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 */
@@ -4748,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), 
@@ -4755,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
@@ -6218,6 +6255,24 @@ modest_ui_actions_get_msg_already_deleted_error_msg (ModestWindow *win)
                folder = TNY_FOLDER_STORE (tny_header_get_folder (header));
                g_object_unref (iter);
                g_object_unref (headers);
+#ifdef MODEST_TOOLKIT_HILDON2
+       } else if (MODEST_IS_HEADER_WINDOW (win)) {
+               GtkWidget *header_view;
+               TnyList* headers = NULL;
+               TnyIterator *iter;
+               header_view = GTK_WIDGET (modest_header_window_get_header_view (MODEST_HEADER_WINDOW (win)));
+               headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW (header_view));
+               if (!headers || tny_list_get_length (headers) == 0) {
+                       if (headers)
+                               g_object_unref (headers);
+                       return NULL;
+               }
+               iter = tny_list_create_iterator (headers);
+               header = TNY_HEADER (tny_iterator_get_current (iter));
+               folder = TNY_FOLDER_STORE (tny_header_get_folder (header));
+               g_object_unref (iter);
+               g_object_unref (headers);
+#endif
        } else if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
                header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (win));
                folder = TNY_FOLDER_STORE (tny_header_get_folder (header));