* Full implementation of the Global settings dialogs UI with all the notifications...
[modest] / src / modest-ui-actions.c
index fd09f13..aeef9aa 100644 (file)
@@ -174,6 +174,36 @@ get_selected_headers (ModestWindow *win)
 }
 
 static void
+headers_action_mark_as_read (TnyHeader *header,
+                            ModestWindow *win,
+                            gpointer user_data)
+{
+       TnyHeaderFlags flags;
+
+       g_return_if_fail (TNY_IS_HEADER(header));
+
+       flags = tny_header_get_flags (header);
+       if (flags & TNY_HEADER_FLAG_SEEN) return;
+       tny_header_set_flags (header, TNY_HEADER_FLAG_SEEN);
+}
+
+static void
+headers_action_mark_as_unread (TnyHeader *header,
+                              ModestWindow *win,
+                              gpointer user_data)
+{
+       TnyHeaderFlags flags;
+
+       g_return_if_fail (TNY_IS_HEADER(header));
+
+       flags = tny_header_get_flags (header);
+       if (flags & TNY_HEADER_FLAG_SEEN)  {
+               tny_header_unset_flags (header, TNY_HEADER_FLAG_SEEN);
+       }
+}
+
+
+static void
 headers_action_delete (TnyHeader *header,
                       ModestWindow *win,
                       gpointer user_data)
@@ -941,6 +971,7 @@ modest_ui_actions_on_header_activated (ModestHeaderView *header_view,
        GtkTreeIter iter;
        GtkTreeSelection *sel = NULL;
        GList *sel_list = NULL;
+       GList *tmp = NULL;
        
        g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
        
@@ -967,6 +998,17 @@ modest_ui_actions_on_header_activated (ModestHeaderView *header_view,
                helper->model = model;
                helper->iter = iter;
 
+               /* Mark as read */
+               for (tmp=sel_list; tmp; tmp=g_list_next(tmp)) {
+                       gtk_tree_model_get_iter (model, &iter, (GtkTreePath *) tmp->data);
+                       gtk_tree_model_get (model, &iter, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN,
+                                           &header, -1);
+
+                       headers_action_mark_as_read (header, MODEST_WINDOW(main_window), NULL);
+
+                       g_object_unref(header);
+               }
+                       
                g_list_foreach (sel_list, (GFunc) gtk_tree_path_free, NULL);
                g_list_free (sel_list);
        }
@@ -1464,7 +1506,7 @@ modest_ui_actions_on_new_folder (GtkAction *action, ModestMainWindow *main_windo
 /* /\*                                         suggested_name = X; *\/ */
 /*                                     /\* Show error to the user *\/ */
 /*                                     modest_platform_run_information_dialog (GTK_WINDOW (main_window), */
-/*                                                                             MODEST_INFORMATION_CREATE_FOLDER); */
+/*                                                                             _("mail_in_ui_folder_create_error")); */
 /*                             } */
                                g_object_unref (mail_op);
                        }
@@ -1549,7 +1591,7 @@ delete_folder (ModestMainWindow *main_window, gboolean move_to_trash)
                /* Show error if happened */
                if (modest_mail_operation_get_error (mail_op))
                        modest_platform_run_information_dialog (GTK_WINDOW (main_window),
-                                                               MODEST_INFORMATION_DELETE_FOLDER);
+                                                               _("mail_in_ui_folder_delete_error"));
 
                g_object_unref (G_OBJECT (mail_op));
        }
@@ -1660,11 +1702,12 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
        /* password: */
        GtkWidget *entry_password = gtk_entry_new ();
        gtk_entry_set_visibility (GTK_ENTRY(entry_password), FALSE);
-       gtk_entry_set_invisible_char (GTK_ENTRY(entry_password), 0x2022); /* bullet unichar */
+       /* gtk_entry_set_invisible_char (GTK_ENTRY(entry_password), "*"); */
        
 #ifdef MODEST_PLATFORM_MAEMO
        /* Auto-capitalization is the default, so let's turn it off: */
-       hildon_gtk_entry_set_input_mode (GTK_ENTRY (entry_password), HILDON_GTK_INPUT_MODE_FULL);
+       hildon_gtk_entry_set_input_mode (GTK_ENTRY (entry_password), 
+               HILDON_GTK_INPUT_MODE_FULL | HILDON_GTK_INPUT_MODE_INVISIBLE);
        
        caption = hildon_caption_new (sizegroup, 
                _("mail_fi_password"), entry_password, NULL, HILDON_CAPTION_MANDATORY);
@@ -1672,6 +1715,7 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
        gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), caption, 
                FALSE, FALSE, MODEST_MARGIN_HALF);
        gtk_widget_show (caption);
+       g_object_unref (sizegroup);
 #else 
        gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), entry_password,
                            TRUE, FALSE, 0);
@@ -1836,6 +1880,26 @@ modest_ui_actions_on_select_all (GtkAction *action,
 }
 
 void
+modest_ui_actions_on_mark_as_read (GtkAction *action,
+                                  ModestWindow *window)
+{      
+       g_return_if_fail (MODEST_IS_WINDOW(window));
+               
+       /* Mark each header as read */
+       do_headers_action (window, headers_action_mark_as_read, NULL);
+}
+
+void
+modest_ui_actions_on_mark_as_unread (GtkAction *action,
+                                    ModestWindow *window)
+{      
+       g_return_if_fail (MODEST_IS_WINDOW(window));
+               
+       /* Mark each header as read */
+       do_headers_action (window, headers_action_mark_as_unread, NULL);
+}
+
+void
 modest_ui_actions_on_change_zoom (GtkRadioAction *action,
                                  GtkRadioAction *selected,
                                  ModestWindow *window)
@@ -2467,9 +2531,17 @@ modest_ui_actions_on_settings (GtkAction *action,
                               ModestWindow *win)
 {
        GtkWidget *dialog;
+       gint response;
 
-       dialog = modest_global_settings_dialog_new ();
+       dialog = modest_platform_get_global_settings_dialog ();
+       gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (win));
        gtk_widget_show (dialog);
-       gtk_dialog_run (GTK_DIALOG (dialog));
+
+       response = gtk_dialog_run (GTK_DIALOG (dialog));
+
+       if (response == GTK_RESPONSE_ACCEPT) {
+               g_message ("YES");
+       }
+
        gtk_widget_destroy (dialog);
 }