#include <widgets/modest-main-window.h>
#include <widgets/modest-msg-view-window.h>
#include <widgets/modest-account-view-window.h>
-#include <widgets/modest-msg-view-details-dialog.h>
+#include <widgets/modest-details-dialog.h>
#include "modest-account-mgr-helpers.h"
#include "modest-mail-operation.h"
+#include "modest-text-utils.h"
#ifdef MODEST_HAVE_EASYSETUP
#include "easysetup/modest-easysetup-wizard.h"
parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
if (parent_folder) {
- gchar *folder_name;
-
- folder_name = ask_for_folder_name (GTK_WINDOW (main_window),
- _("Please enter a name for the new folder"));
-
- if (folder_name != NULL && strlen (folder_name) > 0) {
- TnyFolder *new_folder;
- ModestMailOperation *mail_op;
-
- mail_op = modest_mail_operation_new ();
- modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
- mail_op);
-
- new_folder = modest_mail_operation_create_folder (mail_op,
- parent_folder,
- (const gchar *) folder_name);
- if (new_folder)
- g_object_unref (new_folder);
- g_object_unref (mail_op);
+ gboolean finished = FALSE;
+ gint result;
+ gchar *folder_name = NULL, *suggested_name = NULL;
+
+ /* Run the new folder dialog */
+ while (!finished) {
+ result = modest_platform_run_new_folder_dialog (GTK_WINDOW (main_window),
+ parent_folder,
+ suggested_name,
+ &folder_name);
+
+ if (result == GTK_RESPONSE_REJECT) {
+ finished = TRUE;
+ } else {
+ ModestMailOperation *mail_op = modest_mail_operation_new ();
+ TnyFolder *new_folder = NULL;
+
+ modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
+ mail_op);
+
+ new_folder = modest_mail_operation_create_folder (mail_op,
+ parent_folder,
+ (const gchar *) folder_name);
+ if (new_folder) {
+ g_object_unref (new_folder);
+ finished = TRUE;
+ } else {
+ const GError *error;
+ error = modest_mail_operation_get_error (mail_op);
+ g_printerr ("%s", error->message);
+ /* TODO: check error and follow proper actions */
+/* suggested_name = X; */
+ /* Show error to the user */
+ modest_platform_run_information_dialog (GTK_WINDOW (main_window),
+ MODEST_INFORMATION_CREATE_FOLDER);
+ }
+ g_object_unref (mail_op);
+ }
g_free (folder_name);
+ folder_name = NULL;
}
+
g_object_unref (parent_folder);
}
}
delete_folder (ModestMainWindow *main_window, gboolean move_to_trash)
{
TnyFolderStore *folder;
- ModestMailOperation *mail_op;
GtkWidget *folder_view;
+ gint response;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
return;
folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
-
- mail_op = modest_mail_operation_new ();
- modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
- mail_op);
- modest_mail_operation_remove_folder (mail_op, TNY_FOLDER (folder), move_to_trash);
- g_object_unref (G_OBJECT (mail_op));
+ /* Ask the user */
+ response = modest_platform_run_confirmation_dialog (GTK_WINDOW (main_window),
+ MODEST_CONFIRMATION_DELETE_FOLDER,
+ folder);
+
+ if (response == GTK_RESPONSE_OK) {
+ ModestMailOperation *mail_op = modest_mail_operation_new ();
+
+ modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
+ mail_op);
+ modest_mail_operation_remove_folder (mail_op, TNY_FOLDER (folder), 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);
+
+ g_object_unref (G_OBJECT (mail_op));
+ }
+
g_object_unref (G_OBJECT (folder));
}
gtk_window_present (GTK_WINDOW (window));
}
+/*
+ * Show the header details in a ModestDetailsDialog widget
+ */
static void
show_header_details (TnyHeader *header,
GtkWindow *window)
{
GtkWidget *dialog;
- dialog = modest_msg_view_details_dialog_new (window, header);
- g_object_unref (header);
+ /* Create dialog */
+ dialog = modest_details_dialog_new_with_header (window, header);
+
+ /* Run dialog */
gtk_widget_show_all (dialog);
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+/*
+ * Show the folder details in a ModestDetailsDialog widget
+ */
+static void
+show_folder_details (TnyFolder *folder,
+ GtkWindow *window)
+{
+ GtkWidget *dialog;
+
+ /* Create dialog */
+ dialog = modest_details_dialog_new_with_folder (window, folder);
+
+ /* Run dialog */
+ gtk_widget_show_all (dialog);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
}
+
void
modest_ui_actions_on_details (GtkAction *action,
ModestWindow *win)
if (gtk_widget_is_focus (folder_view)) {
TnyFolder *folder;
- folder = modest_folder_view_get_selected (folder_view);
+ folder = (TnyFolder *) modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
/* Show only when it's a folder */
if (!folder || !TNY_IS_FOLDER (folder))
return;
- /* TODO */
+ show_folder_details (folder, GTK_WINDOW (win));
+
} else {
header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
MODEST_WIDGET_TYPE_HEADER_VIEW);