#define COMMON_FOLDER_DIALOG_ENTRY "entry"
#define COMMON_FOLDER_DIALOG_ACCOUNT_PICKER "account-picker"
+#define FOLDER_PICKER_CURRENT_FOLDER "current-folder"
+
static void _modest_platform_play_email_tone (void);
exists = FALSE;
if (picker != NULL) {
- const gchar *active_id;
- active_id = modest_selector_picker_get_active_id (MODEST_SELECTOR_PICKER (picker));
- parent = TNY_FOLDER_STORE (
- modest_tny_account_store_get_server_account (modest_runtime_get_account_store (),
- active_id,
- TNY_ACCOUNT_TYPE_STORE));
- } else {
- g_object_ref (parent);
+ parent = g_object_get_data (G_OBJECT (picker), FOLDER_PICKER_CURRENT_FOLDER);
}
+
/* Look for another folder with the same name */
if (modest_tny_folder_has_subfolder_with_name (parent,
new_name,
g_signal_stop_emission_by_name (dialog, "response");
}
- g_object_unref (parent);
}
typedef struct _FolderChooserData {
return userdata.store;
}
-#define FOLDER_PICKER_CURRENT_FOLDER "current-folder"
-
static gchar *
folder_store_get_display_name (TnyFolderStore *store)
{
}
static void
+folder_picker_set_store (GtkButton *button, TnyFolderStore *store)
+{
+ gchar *name;
+
+ if (store == NULL) {
+ g_object_set_data (G_OBJECT (button), FOLDER_PICKER_CURRENT_FOLDER, NULL);
+ } else {
+ g_object_ref (store);
+ g_object_set_data_full (G_OBJECT (button), FOLDER_PICKER_CURRENT_FOLDER,
+ store, (GDestroyNotify) g_object_unref);
+ name = folder_store_get_display_name (store);
+ hildon_button_set_value (HILDON_BUTTON (button), name);
+ g_free (name);
+ }
+}
+
+static void
folder_picker_clicked (GtkButton *button,
ModestFolderView *folder_view)
{
store = folder_chooser_dialog_run (folder_view);
if (store) {
- gchar *name;
- g_object_set_data (G_OBJECT (button), FOLDER_PICKER_CURRENT_FOLDER, store);
- name = folder_store_get_display_name (store);
- hildon_button_set_value (HILDON_BUTTON (button), name);
- g_free (name);
+ folder_picker_set_store (GTK_BUTTON (button), store);
}
}
static GtkWidget *
-folder_picker_new (ModestFolderView *folder_view)
+folder_picker_new (ModestFolderView *folder_view, TnyFolderStore *suggested)
{
GtkWidget *button;
GdkPixbuf *pixbuf;
gtk_image_new_from_pixbuf (pixbuf));
hildon_button_set_alignment (HILDON_BUTTON (button), 0.0, 0.5, 1.0, 1.0);
+ if (suggested) {
+ folder_picker_set_store (GTK_BUTTON (button), suggested);
+ }
+
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (folder_picker_clicked), folder_view);
return button;
TnyFolderStore **parent)
{
GtkWidget *accept_btn = NULL;
- GtkWidget *dialog, *entry, *label_entry, *label_location, *hbox;
- GtkWidget *account_picker;
+ GtkWidget *dialog, *entry = NULL, *label_entry = NULL, *label_location = NULL, *hbox;
+ GtkWidget *account_picker = NULL;
GList *buttons = NULL;
gint result;
GtkSizeGroup *sizegroup;
ModestFolderView *folder_view;
+ ModestWindow *folder_window;
+ ModestHildon2WindowMgr *window_mgr;
- g_return_val_if_fail (MODEST_IS_FOLDER_WINDOW (parent_window), GTK_RESPONSE_NONE);
+ 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 (parent_window));
+ folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (folder_window));
/* Ask the user for the folder name */
dialog = gtk_dialog_new_with_buttons (dialog_title,
gtk_misc_set_alignment (GTK_MISC (label_location), 0.0, 0.5);
gtk_size_group_add_widget (sizegroup, label_location);
- account_picker = folder_picker_new (folder_view);
+ account_picker = folder_picker_new (folder_view, suggested_parent);
}
g_object_unref (sizegroup);
modest_window_mgr_set_modal (modest_runtime_get_window_mgr (),
GTK_WINDOW (dialog), parent_window);
gtk_widget_show_all (GTK_WIDGET(dialog));
-
+
result = gtk_dialog_run (GTK_DIALOG(dialog));
if (result == GTK_RESPONSE_ACCEPT) {
if (show_name)
*folder_name = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
if (show_parent) {
*parent = g_object_get_data (G_OBJECT (account_picker), FOLDER_PICKER_CURRENT_FOLDER);
+ if (*parent)
+ g_object_ref (*parent);
}
}
real_suggested_name = suggested_name;
}
+ /* In hildon 2.2 we always suggest the archive folder as parent */
+ suggested_folder = TNY_FOLDER_STORE (
+ modest_tny_account_get_special_folder
+ (modest_tny_account_store_get_local_folders_account (modest_runtime_get_account_store ()),
+ TNY_FOLDER_TYPE_ARCHIVE));
+
tmp = g_strconcat (_("mcen_fi_new_folder_name"), ":", NULL);
result = modest_platform_run_folder_common_dialog (parent_window,
suggested_folder,
g_signal_connect (G_OBJECT(note), "response",
G_CALLBACK(on_cert_dialog_response),
(gpointer) certificate);
-
+
response = gtk_dialog_run(GTK_DIALOG(note));
on_destroy_dialog (note);
g_free (question);
-
+
return response == GTK_RESPONSE_OK;
}
gboolean
-modest_platform_run_alert_dialog (const gchar* prompt,
+modest_platform_run_alert_dialog (const gchar* prompt,
gboolean is_question)
-{
- ModestWindow *main_win;
+{
+ ModestWindow *top_win;
+ HildonWindowStack *stack;
- if (!modest_window_mgr_main_window_exists (modest_runtime_get_window_mgr())) {
- g_warning ("%s:\n'%s'\ndon't show dialogs if there's no main window;"
- " assuming 'Cancel' for questions, 'Ok' otherwise", prompt, __FUNCTION__);
- return is_question ? FALSE : TRUE;
+ stack = hildon_window_stack_get_default ();
+ top_win = MODEST_WINDOW (hildon_window_stack_peek (stack));
+
+ if (!top_win) {
+ g_warning ("%s: don't show dialogs if there's no window shown; assuming 'Cancel'",
+ __FUNCTION__);
+ return FALSE;
}
- main_win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (), FALSE);
- g_return_val_if_fail (main_win, FALSE); /* should not happen */
-
gboolean retval = TRUE;
if (is_question) {
- /* The Tinymail documentation says that we should show Yes and No buttons,
+ /* The Tinymail documentation says that we should show Yes and No buttons,
* when it is a question.
* Obviously, we need tinymail to use more specific error codes instead,
* so we know what buttons to show. */
- GtkWidget *dialog = GTK_WIDGET (hildon_note_new_confirmation (GTK_WINDOW (main_win),
+ GtkWidget *dialog = GTK_WIDGET (hildon_note_new_confirmation (GTK_WINDOW (top_win),
prompt));
modest_window_mgr_set_modal (modest_runtime_get_window_mgr (),
- GTK_WINDOW (dialog), GTK_WINDOW (main_win));
-
+ GTK_WINDOW (dialog), GTK_WINDOW (top_win));
+
const int response = gtk_dialog_run (GTK_DIALOG (dialog));
retval = (response == GTK_RESPONSE_YES) || (response == GTK_RESPONSE_OK);
-
- on_destroy_dialog (dialog);
+
+ on_destroy_dialog (dialog);
} else {
/* Just show the error text and use the default response: */
- modest_platform_run_information_dialog (GTK_WINDOW (main_win),
+ modest_platform_run_information_dialog (GTK_WINDOW (top_win),
prompt, FALSE);
}
return retval;