#include <tny-camel-folder.h>
#include <tny-camel-imap-folder.h>
#include <tny-camel-pop-folder.h>
+#ifdef MODEST_TOOLKIT_HILDON2
+#include <hildon/hildon-pannable-area.h>
+#endif
#ifdef MODEST_PLATFORM_MAEMO
#include "maemo/modest-osso-state-saving.h"
if (header) {
gchar *subject;
subject = tny_header_dup_subject (header);
+ if (!subject)
+ subject = g_strdup (_("mail_va_no_subject"));
desc = g_strdup_printf ("%s", subject);
g_free (subject);
g_object_unref (header);
}
/* Free */
- if (next_row_reference != NULL)
+ if (gtk_tree_row_reference_valid (next_row_reference))
gtk_tree_row_reference_free (next_row_reference);
if (next_path != NULL)
gtk_tree_path_free (next_path);
- if (prev_row_reference != NULL)
+ if (gtk_tree_row_reference_valid (prev_row_reference))
gtk_tree_row_reference_free (prev_row_reference);
if (prev_path != NULL)
gtk_tree_path_free (prev_path);
allowed_size = MODEST_MAX_ATTACHMENT_SIZE;
msg_win = modest_msg_edit_window_new (msg, account_name, FALSE);
- modest_window_mgr_register_window (modest_runtime_get_window_mgr(), msg_win, NULL);
+ if (!modest_window_mgr_register_window (modest_runtime_get_window_mgr(), msg_win, NULL)) {
+ gtk_widget_destroy (GTK_WIDGET (msg_win));
+ goto cleanup;
+ }
modest_msg_edit_window_set_modified (MODEST_MSG_EDIT_WINDOW (msg_win), set_as_modified);
gtk_widget_show_all (GTK_WIDGET (msg_win));
g_object_unref (source);
}
+ if (error && ((error->code == TNY_SERVICE_ERROR_NO_SUCH_MESSAGE) ||
+ error->code == TNY_SERVICE_ERROR_MESSAGE_NOT_AVAILABLE)) {
+ gchar *subject, *msg;
+ subject = tny_header_dup_subject (header);
+ if (!subject)
+ subject = g_strdup (_("mail_va_no_subject"));;
+ msg = g_strdup_printf (_("emev_ni_ui_imap_message_not_available_in_server"),
+ subject);
+ modest_platform_run_information_dialog (NULL, msg, FALSE);
+ g_free (msg);
+ g_free (subject);
+ }
+
/* Remove the header from the preregistered uids */
modest_window_mgr_unregister_header (modest_runtime_get_window_mgr (),
header);
/* Register and show new window */
if (win != NULL) {
mgr = modest_runtime_get_window_mgr ();
- modest_window_mgr_register_window (mgr, win, NULL);
+ if (!modest_window_mgr_register_window (mgr, win, NULL)) {
+ gtk_widget_destroy (GTK_WIDGET (win));
+ goto cleanup;
+ }
gtk_widget_show_all (GTK_WIDGET(win));
}
protocol = modest_protocol_registry_get_protocol_by_type (protocol_registry, proto);
error_msg = modest_protocol_get_translation (protocol, MODEST_PROTOCOL_TRANSLATION_MSG_NOT_AVAILABLE, subject);
- g_free (subject);
+ if (subject)
+ g_free (subject);
g_object_unref (header);
g_object_unref (iter);
edit_type = MODEST_EDIT_TYPE_FORWARD;
break;
default:
+ modest_window_mgr_unregister_header (modest_runtime_get_window_mgr (),
+ header);
g_return_if_reached ();
return;
}
gtk_widget_show_all (GTK_WIDGET (msg_win));
cleanup:
+ /* We always unregister the header because the message is
+ forwarded or replied so the original one is no longer
+ opened */
+ modest_window_mgr_unregister_header (modest_runtime_get_window_mgr (),
+ header);
if (new_msg)
g_object_unref (G_OBJECT (new_msg));
if (account)
}
/* Retrieve the message */
+ modest_window_mgr_register_header (modest_runtime_get_window_mgr (), rf_helper->header, NULL);
mail_op = modest_mail_operation_new_with_error_handling (G_OBJECT (parent_window),
modest_ui_actions_disk_operations_error_handler,
NULL, NULL);
gchar *account_name, *from;
ModestAccountMgr *account_mgr;
gboolean had_error = FALSE;
- ModestMainWindow *win;
+ ModestMainWindow *win = NULL;
g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW(edit_window), FALSE);
on_save_to_drafts_cb,
g_object_ref(edit_window));
+#ifdef MODEST_TOOLKIT_HILDON2
+ /* In hildon2 we always show the information banner on saving to drafts.
+ * It will be a system information banner in this case.
+ */
+ gchar *text = g_strdup_printf (_("mail_va_saved_to_drafts"), _("mcen_me_folder_drafts"));
+ modest_platform_information_banner (NULL, NULL, text);
+ g_free (text);
+#else
/* Use the main window as the parent of the banner, if the
main window does not exist it won't be shown, if the parent
window exists then it's properly shown. We don't use the
modest_platform_information_banner (GTK_WIDGET (win), NULL, text);
g_free (text);
}
+#endif
modest_msg_edit_window_set_modified (edit_window, FALSE);
/* Frees */
gpointer user_data)
{
- GtkWidget *dialog;
-
- /* Create dialog */
- dialog = modest_details_dialog_new_with_header (GTK_WINDOW (window), header);
-
- /* Run dialog */
- modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog), (GtkWindow *) window);
- gtk_widget_show_all (dialog);
-
- g_signal_connect_swapped (dialog, "response",
- G_CALLBACK (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_window_set_modal (GTK_WINDOW (dialog), TRUE);
- gtk_widget_show_all (dialog);
- gtk_dialog_run (GTK_DIALOG (dialog));
-
- gtk_widget_destroy (dialog);
+ modest_platform_run_header_details_dialog (GTK_WINDOW (window), header);
}
/*
/* This function should not be called for account items,
* because we dim the menu item for them. */
if (TNY_IS_FOLDER (folder_store)) {
- show_folder_details (TNY_FOLDER (folder_store), GTK_WINDOW (win));
+ modest_platform_run_folder_details_dialog (GTK_WINDOW (win),
+ TNY_FOLDER (folder_store));
}
g_object_unref (folder_store);
MODEST_PROTOCOL_REGISTRY_STORE_HAS_FOLDERS));
}
g_object_unref (local_account);
- g_object_unref (mmc_account);
+
+ /* It could not exist */
+ if (mmc_account)
+ g_object_unref (mmc_account);
}
/* Check the target folder rules */
GtkWidget *folder_view,
GtkWidget **tree_view)
{
- GtkWidget *dialog, *scroll;
+ GtkWidget *dialog;
+#ifdef MODEST_TOOLKIT_HILDON2
+ GtkWidget *pannable;
+#else
+ GtkWidget *scroll;
+#endif
GtkWidget *new_button, *ok_button;
dialog = gtk_dialog_new_with_buttons (_("mcen_ti_moveto_folders_title"),
g_object_set_data (G_OBJECT (dialog), MOVE_FOLDER_NEW_BUTTON, new_button);
/* Create scrolled window */
+#ifdef MODEST_TOOLKIT_HILDON2
+ pannable = hildon_pannable_area_new ();
+#else
scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
+#endif
#ifdef MODEST_TOOLKIT_GTK
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_IN);
/* Hide special folders */
modest_folder_view_show_non_move_folders (MODEST_FOLDER_VIEW (*tree_view), FALSE);
+#ifdef MODEST_TOOLKIT_HILDON2
+ gtk_container_add (GTK_CONTAINER (pannable), *tree_view);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
+ pannable, TRUE, TRUE, 0);
+#else
gtk_container_add (GTK_CONTAINER (scroll), *tree_view);
-
/* Add scroll to dialog */
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
scroll, TRUE, TRUE, 0);
+#endif
+
gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
#ifndef MODEST_TOOLKIT_GTK
gtk_widget_destroy (GTK_WIDGET (helper->banner));
g_object_unref (helper->banner);
}
- if (helper->reference != NULL)
+ if (gtk_tree_row_reference_valid (helper->reference)) {
gtk_tree_row_reference_free (helper->reference);
+ helper->reference = NULL;
+ }
g_free (helper);
}
/* No more messages to view, so close this window */
modest_ui_actions_on_close_window (NULL, MODEST_WINDOW(self));
}
- } else if (MODEST_IS_MAIN_WINDOW (object) && helper->reference != NULL) {
+ } else if (MODEST_IS_MAIN_WINDOW (object) &&
+ gtk_tree_row_reference_valid (helper->reference)) {
GtkWidget *header_view;
GtkTreePath *path;
GtkTreeSelection *sel;
subject = tny_header_dup_subject (header);
msg = modest_protocol_get_translation (protocol, MODEST_PROTOCOL_TRANSLATION_MSG_NOT_AVAILABLE, subject);
- g_free (subject);
+ if (subject)
+ g_free (subject);
if (msg == NULL) {
msg = g_strdup_printf (_("mail_ni_ui_folder_get_msg_folder_error"));
}