Added new wptextview child to support hildon style panning
[modest] / src / hildon2 / modest-platform.c
index 735a15c..e7e3f67 100644 (file)
@@ -938,13 +938,18 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window,
        ModestWindow *folder_window;
        ModestHildon2WindowMgr *window_mgr;
        FolderPickerHelper *helper = NULL;
+       GtkWidget *top_vbox, *top_align;
 
        window_mgr = (ModestHildon2WindowMgr *) modest_runtime_get_window_mgr ();
        folder_window = modest_hildon2_window_mgr_get_folder_window (window_mgr);
        g_return_val_if_fail (MODEST_IS_FOLDER_WINDOW (folder_window), GTK_RESPONSE_NONE);
-
+       
        folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (folder_window));
-
+       
+       top_vbox = gtk_vbox_new (FALSE, 0);
+       top_align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
+       gtk_alignment_set_padding (GTK_ALIGNMENT (top_align), 0, 0, MODEST_MARGIN_DOUBLE, 0);
+       
        /* Ask the user for the folder name */
        dialog = gtk_dialog_new_with_buttons (dialog_title,
                                              parent_window,
@@ -966,9 +971,9 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window,
 
                gtk_misc_set_alignment (GTK_MISC (label_entry), 0.0, 0.5);
                gtk_size_group_add_widget (sizegroup, label_entry);
-
+               
                if (suggested_name)
-                       gtk_entry_set_text (GTK_ENTRY (entry), suggested_name);
+                 gtk_entry_set_text (GTK_ENTRY (entry), suggested_name);
                else
                        gtk_entry_set_text (GTK_ENTRY (entry), _FM("ckdg_va_new_folder_name_stub"));
                gtk_entry_set_width_chars (GTK_ENTRY (entry),
@@ -976,9 +981,9 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window,
                                                g_utf8_strlen (_FM("ckdg_va_new_folder_name_stub"), -1)));
                gtk_entry_select_region (GTK_ENTRY (entry), 0, -1);
        }
-
+       
        if (show_parent) {
-
+         
                label_location = gtk_label_new (_FM("ckdg_fi_new_folder_location"));
 
                gtk_misc_set_alignment (GTK_MISC (label_location), 0.0, 0.5);
@@ -992,14 +997,14 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window,
        }
 
        g_object_unref (sizegroup);
-
+       
        /* Connect to the response method to avoid closing the dialog
           when an invalid name is selected*/
        g_signal_connect (dialog,
                          "response",
                          G_CALLBACK (on_response),
                          suggested_parent);
-
+       
        if (show_name) {
                /* Track entry changes */
                g_signal_connect (entry,
@@ -1011,20 +1016,20 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window,
                                  G_CALLBACK (entry_changed),
                                  dialog);
        }
-
-
+       
+       
        /* Some locales like pt_BR need this to get the full window
           title shown */
        gtk_widget_set_size_request (GTK_WIDGET (dialog), 300, -1);
-
+       
        /* Create the hbox */
        if (show_name) {
                hbox = gtk_hbox_new (FALSE, 12);
                gtk_box_pack_start (GTK_BOX (hbox), label_entry, FALSE, FALSE, 0);
                gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
-
+               
                /* Add hbox to dialog */
-               gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), 
+               gtk_box_pack_start (GTK_BOX (top_vbox), 
                                    hbox, FALSE, FALSE, 0);
                g_object_set_data (G_OBJECT (dialog), COMMON_FOLDER_DIALOG_ENTRY, entry);
        }
@@ -1035,12 +1040,16 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window,
                gtk_box_pack_start (GTK_BOX (hbox), account_picker, TRUE, TRUE, 0);
 
                /* Add hbox to dialog */
-               gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), 
+               gtk_box_pack_start (GTK_BOX (top_vbox), 
                                    hbox, FALSE, FALSE, 0);
                g_object_set_data (G_OBJECT (dialog), COMMON_FOLDER_DIALOG_ACCOUNT_PICKER, account_picker);
        }
        modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), 
                                     GTK_WINDOW (dialog), parent_window);
+
+       gtk_container_add (GTK_CONTAINER (top_align), top_vbox);
+       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), top_align, TRUE, TRUE, 0);
+
        gtk_widget_show_all (GTK_WIDGET(dialog));
 
        result = gtk_dialog_run (GTK_DIALOG(dialog));
@@ -2503,14 +2512,13 @@ move_to_dialog_show_accounts (GtkWidget *dialog)
         back_button = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_BACK_BUTTON));
         folder_view = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_FOLDER_VIEW));
         pannable = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_PANNABLE));
-       
+
        gtk_widget_set_sensitive (back_button, FALSE);
 
        gtk_label_set_text (GTK_LABEL (selection_label), "");
        modest_folder_view_show_non_move_folders (MODEST_FOLDER_VIEW (folder_view), TRUE);
        modest_folder_view_set_style (MODEST_FOLDER_VIEW (folder_view), MODEST_FOLDER_VIEW_STYLE_SHOW_ALL);
        modest_folder_view_set_filter (MODEST_FOLDER_VIEW (folder_view), MODEST_FOLDER_VIEW_FILTER_HIDE_FOLDERS);
-       modest_folder_view_unset_filter (MODEST_FOLDER_VIEW (folder_view), MODEST_FOLDER_VIEW_FILTER_HIDE_LOCAL_FOLDERS);
        hildon_pannable_area_jump_to (HILDON_PANNABLE_AREA (pannable), 0, 0);
 
        g_object_set_data (G_OBJECT (dialog), MOVE_TO_DIALOG_SHOWING_FOLDERS, GINT_TO_POINTER (FALSE));
@@ -2531,7 +2539,7 @@ move_to_dialog_show_folders (GtkWidget *dialog, TnyFolderStore *folder_store)
         back_button = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_BACK_BUTTON));
         folder_view = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_FOLDER_VIEW));
         pannable = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_PANNABLE));
-       
+
        gtk_widget_set_sensitive (back_button, TRUE);
 
        account = TNY_ACCOUNT (folder_store);
@@ -2546,15 +2554,21 @@ move_to_dialog_show_folders (GtkWidget *dialog, TnyFolderStore *folder_store)
                } else {
                        selection_label_text = g_strconcat (tny_account_get_name (account), "/", NULL);
                }
+               modest_folder_view_set_filter (MODEST_FOLDER_VIEW (folder_view),
+                                              MODEST_FOLDER_VIEW_FILTER_HIDE_MCC_FOLDERS);
        } else if (modest_tny_account_is_memory_card_account (account)) {
                account_id = tny_account_get_id (account);
                selection_label_text = g_strconcat (tny_account_get_name (account), "/", NULL);
+               modest_folder_view_set_filter (MODEST_FOLDER_VIEW (folder_view),
+                                              MODEST_FOLDER_VIEW_FILTER_HIDE_LOCAL_FOLDERS);
        } else {
                account_id = tny_account_get_id (account);
 
                selection_label_text = g_strconcat (tny_account_get_name (account), "/", NULL);
-               modest_folder_view_set_filter (MODEST_FOLDER_VIEW (folder_view), 
+               modest_folder_view_set_filter (MODEST_FOLDER_VIEW (folder_view),
                                               MODEST_FOLDER_VIEW_FILTER_HIDE_LOCAL_FOLDERS);
+               modest_folder_view_set_filter (MODEST_FOLDER_VIEW (folder_view),
+                                              MODEST_FOLDER_VIEW_FILTER_HIDE_MCC_FOLDERS);
        }
        gtk_label_set_text (GTK_LABEL (selection_label), selection_label_text);
        g_free (selection_label_text);
@@ -2575,7 +2589,16 @@ on_move_to_dialog_back_clicked (GtkButton *button,
                                gpointer userdata)
 {
        GtkWidget *dialog = (GtkWidget *) userdata;
+       ModestFolderView *folder_view;
 
+       /* Revert the effect of show_folders filters */
+        folder_view = MODEST_FOLDER_VIEW (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_FOLDER_VIEW));
+       modest_folder_view_set_account_id_of_visible_server_account (folder_view, NULL);
+       modest_folder_view_show_non_move_folders (MODEST_FOLDER_VIEW (folder_view), TRUE);
+       modest_folder_view_unset_filter (folder_view, MODEST_FOLDER_VIEW_FILTER_HIDE_LOCAL_FOLDERS);
+       modest_folder_view_unset_filter (folder_view, MODEST_FOLDER_VIEW_FILTER_HIDE_MCC_FOLDERS);
+
+       /* Back to show accounts */
        move_to_dialog_show_accounts (dialog);
 }
 
@@ -2609,9 +2632,11 @@ modest_platform_create_move_to_dialog (GtkWindow *parent_window,
                                       GtkWidget **folder_view)
 {
        GtkWidget *dialog, *folder_view_container;
+       GtkWidget *align;
        GtkWidget *buttons_hbox;
        GtkWidget *back_button, *selection_label;
        GdkPixbuf *back_pixbuf;
+       GtkWidget *top_vbox;
 
        /* Create dialog. We cannot use a touch selector because we
           need to use here the folder view widget directly */
@@ -2622,6 +2647,10 @@ modest_platform_create_move_to_dialog (GtkWindow *parent_window,
                                              _HL("wdgt_bd_new"), MODEST_GTK_RESPONSE_NEW_FOLDER,
                                              NULL);
 
+       align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
+       gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 0, MODEST_MARGIN_DOUBLE, MODEST_MARGIN_NONE);
+       top_vbox = gtk_vbox_new (FALSE, MODEST_MARGIN_HALF);
+
        /* Create folder view */
        *folder_view = modest_platform_create_folder_view (NULL);
 
@@ -2640,17 +2669,22 @@ modest_platform_create_move_to_dialog (GtkWindow *parent_window,
        gtk_box_pack_start (GTK_BOX (buttons_hbox), back_button, FALSE, FALSE, 0);
        gtk_box_pack_start (GTK_BOX (buttons_hbox), selection_label, TRUE, TRUE, 0);
        gtk_widget_set_sensitive (GTK_WIDGET (back_button), FALSE);
-       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), buttons_hbox, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (top_vbox), buttons_hbox, FALSE, FALSE, 0);
 
        /* Create pannable and add it to the dialog */
        folder_view_container = hildon_pannable_area_new ();
-       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), folder_view_container, TRUE, TRUE, 0);
        gtk_container_add (GTK_CONTAINER (folder_view_container), *folder_view);
+       gtk_box_pack_start (GTK_BOX (top_vbox), folder_view_container, TRUE, TRUE, 0);
+
+       gtk_container_add (GTK_CONTAINER (align), top_vbox);
+       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), align, TRUE, TRUE, 0);
 
        gtk_window_set_default_size (GTK_WINDOW (dialog), 300, 300);
 
        gtk_widget_show (GTK_DIALOG (dialog)->vbox);
        gtk_widget_show (folder_view_container);
+       gtk_widget_show (align);
+       gtk_widget_show (top_vbox);
        gtk_widget_show (*folder_view);
        gtk_widget_show_all (back_button);
        gtk_widget_show (selection_label);