return ("Modest");
}
-gboolean
-modest_platform_run_new_folder_dialog (ModestWindow *parent_window,
- TnyFolderStore *parent_folder)
+gint
+modest_platform_run_new_folder_dialog (GtkWindow *parent_window,
+ TnyFolderStore *parent_folder,
+ gchar *suggested_name,
+ gchar **folder_name)
{
GtkWidget *dialog, *entry;
- gchar *folder_name;
gboolean finished = FALSE;
+ gint result;
TnyFolder *new_folder;
ModestMailOperation *mail_op;
/* Ask the user for the folder name */
dialog = gtk_dialog_new_with_buttons (_("New Folder Name"),
- GTK_WINDOW (parent_window),
+ parent_window,
GTK_DIALOG_MODAL,
GTK_STOCK_CANCEL,
GTK_RESPONSE_REJECT,
TRUE, FALSE, 0);
gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
-
- if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_REJECT) {
- gtk_widget_destroy (dialog);
- return TRUE;
- }
- folder_name = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
+ result = gtk_dialog_run (GTK_DIALOG(dialog));
+ if (result == GTK_RESPONSE_ACCEPT)
+ *folder_name = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
+
gtk_widget_destroy (dialog);
- 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);
- finished = TRUE;
- }
+ return result;
+}
- /* Frees */
- g_object_unref (mail_op);
- g_free (folder_name);
+gint
+modest_platform_run_confirmation_dialog (GtkWindow *parent_window,
+ ModestConfirmationDialogType type,
+ gpointer user_data)
+{
+ switch (type) {
+ case MODEST_CONFIRMATION_DELETE_FOLDER:
+ break;
+ };
- return finished;
+ /* TODO implement confirmation dialog */
+ return GTK_RESPONSE_CANCEL;
}
#endif /*MODEST_HILDON_VERSION_0*/
#include <tny-maemo-conic-device.h>
+#include <tny-folder.h>
#include <gtk/gtkicontheme.h>
#include <hildon-widgets/hildon-banner.h>
+#include <hildon-widgets/hildon-note.h>
#include <gtk/gtkmenuitem.h>
#include <gtk/gtkmain.h>
#include <string.h>
-#include "modest-mail-operation-queue.h"
-#include "modest-runtime.h"
-
gboolean
modest_platform_init (void)
{
_("mcen_ib_maxchar_reached"));
} else {
if (chars_length == 0) {
- GtkWidget *ok_button;
- GList *buttons;
-
- /* Show OK button */
- buttons = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (data)->action_area));
- ok_button = GTK_WIDGET (buttons->next->data);
- gtk_widget_set_sensitive (ok_button, TRUE);
- g_list_free (buttons);
+ /* A blank space is not valid as first character */
+ if (strcmp (text, " ")) {
+ GtkWidget *ok_button;
+ GList *buttons;
+
+ /* Show OK button */
+ buttons = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (data)->action_area));
+ ok_button = GTK_WIDGET (buttons->next->data);
+ gtk_widget_set_sensitive (ok_button, TRUE);
+ g_list_free (buttons);
+ }
}
/* Write the text in the entry */
g_free (chars);
}
-gboolean
-modest_platform_run_new_folder_dialog (ModestWindow *parent_window,
- TnyFolderStore *parent_folder)
+gint
+modest_platform_run_new_folder_dialog (GtkWindow *parent_window,
+ TnyFolderStore *parent_folder,
+ gchar *suggested_name,
+ gchar **folder_name)
{
GtkWidget *dialog, *entry, *label, *hbox;
- gchar *folder_name;
- gboolean finished = FALSE;
- TnyFolder *new_folder;
- ModestMailOperation *mail_op;
+ gint result;
/* Ask the user for the folder name */
dialog = gtk_dialog_new_with_buttons (_("mcen_ti_new_folder"),
- GTK_WINDOW (parent_window),
+ parent_window,
GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_OK,
GTK_RESPONSE_ACCEPT,
NULL);
/* Create label and entry */
- label = gtk_label_new (_("mcen_fi_new_folder_name")),
+ label = gtk_label_new (_("mcen_fi_new_folder_name"));
+ /* TODO: check that the suggested name does not exist */
+ /* We set 21 as maximum because we want to show WID-INF036
+ when the user inputs more that 20 */
entry = gtk_entry_new_with_max_length (21);
- gtk_entry_set_text (GTK_ENTRY (entry), _("mcen_ia_default_folder_name"));
+ if (suggested_name)
+ gtk_entry_set_text (GTK_ENTRY (entry), suggested_name);
+ else
+ gtk_entry_set_text (GTK_ENTRY (entry), _("mcen_ia_default_folder_name"));
gtk_entry_select_region (GTK_ENTRY (entry), 0, -1);
/* Track entry changes */
gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
- if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_REJECT) {
- gtk_widget_destroy (dialog);
- return TRUE;
- }
+ result = gtk_dialog_run (GTK_DIALOG(dialog));
+ if (result == GTK_RESPONSE_ACCEPT)
+ *folder_name = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
- folder_name = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
gtk_widget_destroy (dialog);
- 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);
- finished = TRUE;
- }
+ return result;
+}
+
+gint
+modest_platform_run_confirmation_dialog (GtkWindow *parent_window,
+ ModestConfirmationDialogType type,
+ gpointer user_data)
+{
+ GtkWidget *dialog;
+ gint response;
+ gchar *message = NULL;
+ TnyFolder *folder;
+
+ switch (type) {
+ case MODEST_CONFIRMATION_DELETE_FOLDER:
+ folder = TNY_FOLDER (user_data);
+ message = g_strdup_printf (_("mcen_nc_delete_folder_text"),
+ tny_folder_get_name (folder));
+ break;
+ };
+
+ dialog = hildon_note_new_confirmation (parent_window, message);
+
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
- /* Frees */
- g_object_unref (mail_op);
- g_free (folder_name);
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+ g_free (message);
- return finished;
+ return response;
}
G_BEGIN_DECLS
+typedef enum _ModestConfirmationDialogType {
+ MODEST_CONFIRMATION_DELETE_FOLDER,
+} ModestConfirmationDialogType;
+
/**
* modest_platform_platform_init:
*
const gchar* modest_platform_get_app_name (void);
-gboolean modest_platform_run_new_folder_dialog (ModestWindow *parent_window,
- TnyFolderStore *parent);
+/**
+ * modest_platform_run_new_folder_dialog:
+ * @parent_window: a #GtkWindow
+ * @parent: the parent of the new folder
+ * @suggested_name: the suggested name for the new folder
+ * @folder_name: the folder name selected by the user for the new folder
+ *
+ * runs a "new folder" confirmation dialog. The dialog will suggest a
+ * folder name which depends of the platform if the #suggested_name
+ * parametter is NULL. If the user input a valid folder name it's
+ * returned in the #folder_name attribute.
+ *
+ * Returns: the #GtkResponseType returned by the dialog
+ **/
+gint modest_platform_run_new_folder_dialog (GtkWindow *parent_window,
+ TnyFolderStore *parent,
+ gchar *suggested_name,
+ gchar **folder_name);
+
+gint modest_platform_run_confirmation_dialog (GtkWindow *parent_window,
+ ModestConfirmationDialogType type,
+ gpointer user_data);
G_END_DECLS
parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
if (parent_folder) {
+ gboolean finished = FALSE;
+ gint result;
+ gchar *folder_name = NULL, *suggested_name = NULL;
+
/* Run the new folder dialog */
- while (!modest_platform_run_new_folder_dialog (MODEST_WINDOW (main_window),
- parent_folder));
+ 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;
+
+ 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; */
+ }
+ 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);
+ g_object_unref (G_OBJECT (mail_op));
+ }
+
g_object_unref (G_OBJECT (folder));
}