#include <modest-address-book.h>
#include "modest-error.h"
#include "modest-ui-actions.h"
-#include "modest-protocol-info.h"
#include "modest-tny-platform-factory.h"
#include "modest-platform.h"
#include "modest-debug.h"
#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"
+#endif /* MODEST_PLATFORM_MAEMO */
+#ifndef MODEST_TOOLKIT_GTK
#include "maemo/modest-hildon-includes.h"
#include "maemo/modest-connection-specific-smtp-window.h"
-#endif /* MODEST_PLATFORM_MAEMO */
+#endif /* !MODEST_TOOLKIT_GTK */
#include <modest-utils.h>
#include "widgets/modest-ui-constants.h"
#include "modest-text-utils.h"
#ifdef MODEST_HAVE_EASYSETUP
+#ifdef MODEST_TOOLKIT_HILDON2
+#include "modest-easysetup-wizard-dialog.h"
+#else
#include "easysetup/modest-easysetup-wizard-dialog.h"
+#endif
#endif /* MODEST_HAVE_EASYSETUP */
#include <modest-widget-memory.h>
#include <gtkhtml/gtkhtml.h>
+#define MIN_FREE_SPACE 5 * 1024 * 1024
+#define MOVE_FOLDER_OK_BUTTON "ok-button"
+#define MOVE_FOLDER_NEW_BUTTON "new-button"
+
typedef struct _GetMsgAsyncHelper {
ModestWindow *window;
ModestMailOperation *mail_op;
gint num_of_uncached_msgs,
TnyAccount *account);
-static gboolean remote_folder_is_pop (TnyFolderStore *folder);
+static gboolean remote_folder_has_leave_on_server (TnyFolderStore *folder);
static void do_create_folder (GtkWindow *window,
TnyFolderStore *parent_folder,
* This function checks whether a TnyFolderStore is a pop account
*/
static gboolean
-remote_folder_is_pop (TnyFolderStore *folder)
+remote_folder_has_leave_on_server (TnyFolderStore *folder)
{
- const gchar *proto = NULL;
- TnyAccount *account = NULL;
+ TnyAccount *account;
+ gboolean result;
g_return_val_if_fail (TNY_IS_FOLDER_STORE (folder), FALSE);
account = get_account_from_folder_store (folder);
- proto = tny_account_get_proto (account);
+ result = (modest_protocol_registry_protocol_type_has_leave_on_server (modest_runtime_get_protocol_registry (),
+ modest_tny_account_get_protocol_type (account)));
g_object_unref (account);
- return (modest_protocol_info_get_transport_store_protocol (proto) == MODEST_PROTOCOL_STORE_POP);
+ return result;
}
/* FIXME: this should be merged with the similar code in modest-account-view-window */
gboolean
modest_ui_actions_run_account_setup_wizard (ModestWindow *win)
{
- gboolean result = FALSE;
- GtkWindow *dialog, *wizard;
+ gboolean result = FALSE;
+ GtkWindow *wizard;
gint dialog_response;
- /* Show the easy-setup wizard: */
- dialog = modest_window_mgr_get_modal (modest_runtime_get_window_mgr());
- if (dialog) {
- /* old wizard is active already;
- */
- gtk_window_present (GTK_WINDOW(dialog));
- return FALSE;
- }
-
-
- /* there is no such wizard yet */
+ /* there is no such wizard yet */
wizard = GTK_WINDOW (modest_platform_get_account_settings_wizard ());
- modest_window_mgr_set_modal (modest_runtime_get_window_mgr(), wizard);
+ modest_window_mgr_set_modal (modest_runtime_get_window_mgr(), GTK_WINDOW (wizard), (GtkWindow *) win);
/* always present a main window in the background
* we do it here, so we cannot end up with two wizards (as this
if (!win)
win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr(),
TRUE); /* create if not existent */
-
- /* make sure the mainwindow is visible */
+
gtk_window_set_transient_for (GTK_WINDOW (wizard), GTK_WINDOW (win));
- gtk_widget_show_all (GTK_WIDGET(win));
- gtk_window_present (GTK_WINDOW(win));
-
+
+ /* make sure the mainwindow is visible. We need to present the
+ wizard again to give it the focus back. show_all are needed
+ in order to get the widgets properly drawn (MainWindow main
+ paned won't be in its right position and the dialog will be
+ missplaced */
+#ifndef MODEST_TOOLKIT_HILDON2
+ gtk_widget_show_all (GTK_WIDGET (win));
+ gtk_widget_show_all (GTK_WIDGET (wizard));
+ gtk_window_present (GTK_WINDOW (win));
+ gtk_window_present (GTK_WINDOW (wizard));
+#endif
+
dialog_response = gtk_dialog_run (GTK_DIALOG (wizard));
gtk_widget_destroy (GTK_WIDGET (wizard));
if (gtk_events_pending ())
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);
/* Select next or previous row */
if (gtk_tree_row_reference_valid (next_row_reference)) {
-/* next_path = gtk_tree_row_reference_get_path (row_reference); */
gtk_tree_selection_select_path (sel, next_path);
}
else if (gtk_tree_row_reference_valid (prev_row_reference)) {
}
/* 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);
}
/* Update toolbar dimming state */
- if (main_window)
+ if (main_window) {
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (main_window));
modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (main_window));
+ }
/* Free */
g_list_foreach (sel_list, (GFunc) gtk_tree_path_free, NULL);
}
void
+modest_ui_actions_add_to_contacts (GtkAction *action, ModestWindow *win)
+{
+ g_return_if_fail (MODEST_IS_MSG_VIEW_WINDOW (win));
+
+ modest_msg_view_window_add_to_contacts (MODEST_MSG_VIEW_WINDOW (win));
+}
+
+void
modest_ui_actions_on_add_to_contacts (GtkAction *action, ModestWindow *win)
{
GtkClipboard *clipboard = NULL;
GtkWindow *account_win = GTK_WINDOW (modest_account_view_window_new ());
/* The accounts dialog must be modal */
- modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), account_win);
+ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (account_win), (GtkWindow *) win);
modest_utils_show_dialog_and_forget (GTK_WINDOW (win), GTK_DIALOG (account_win));
}
}
* because it requires an API (libconic) to detect different connection
* possiblities.
*/
-#ifdef MODEST_PLATFORM_MAEMO /* Defined in config.h */
+#ifndef MODEST_TOOLKIT_GTK /* Defined in config.h */
/* Create the window if necessary: */
GtkWidget *specific_window = GTK_WIDGET (modest_connection_specific_smtp_window_new ());
/* Show the window: */
modest_window_mgr_set_modal (modest_runtime_get_window_mgr (),
- GTK_WINDOW (specific_window));
+ GTK_WINDOW (specific_window), (GtkWindow *) win);
gtk_widget_show (specific_window);
-#endif /* MODEST_PLATFORM_MAEMO */
+#endif /* !MODEST_TOOLKIT_GTK */
}
void
ModestTnyAccountStore *store = modest_runtime_get_account_store();
GnomeVFSFileSize total_size, allowed_size;
- /* we check for low-mem; in that case, show a warning, and don't allow
- * composing a message with attachments
- */
- if (attachments && modest_platform_check_memory_low (win, TRUE))
+ /* we check for low-mem */
+ if (modest_platform_check_memory_low (win, TRUE))
goto cleanup;
- account_name = modest_account_mgr_get_default_account(mgr);
+#ifdef MODEST_TOOLKIT_HILDON2
+ account_name = g_strdup (modest_window_get_active_account(win));
+#endif
+ if (!account_name) {
+ account_name = modest_account_mgr_get_default_account(mgr);
+ }
if (!account_name) {
g_printerr ("modest: no account found\n");
goto cleanup;
signature = modest_account_mgr_get_signature (mgr, account_name, &use_signature);
if (body_str != NULL) {
- body = use_signature ? g_strconcat(body_str, "\n", signature, NULL) : g_strdup(body_str);
+ body = use_signature ? g_strconcat(body_str, "\n--\n", signature, NULL) : g_strdup(body_str);
} else {
- body = use_signature ? g_strconcat("\n", signature, NULL) : g_strdup("");
+ body = use_signature ? g_strconcat("\n--\n", signature, NULL) : g_strdup("");
}
msg = modest_tny_msg_new (to_str, from_str, cc_str, bcc_str, subject_str, body, NULL, NULL, NULL);
total_size = 0;
allowed_size = MODEST_MAX_ATTACHMENT_SIZE;
msg_win = modest_msg_edit_window_new (msg, account_name, FALSE);
+
+ 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));
+
while (attachments) {
total_size +=
- modest_msg_edit_window_attach_file_one(
- (ModestMsgEditWindow *)msg_win,
- attachments->data, allowed_size);
+ modest_msg_edit_window_attach_file_one((ModestMsgEditWindow *)msg_win,
+ attachments->data, allowed_size);
if (total_size > allowed_size) {
g_warning ("%s: total size: %u",
attachments = g_slist_next(attachments);
}
- modest_window_mgr_register_window (modest_runtime_get_window_mgr(), msg_win);
- modest_msg_edit_window_set_modified (MODEST_MSG_EDIT_WINDOW (msg_win), set_as_modified);
-
- gtk_widget_show_all (GTK_WIDGET (msg_win));
cleanup:
g_free (from_str);
g_object_unref (G_OBJECT(account));
if (folder)
g_object_unref (G_OBJECT(folder));
- if (msg_win)
- g_object_unref (G_OBJECT(msg_win));
if (msg)
g_object_unref (G_OBJECT(msg));
}
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);
TnyFolder *folder;
gboolean open_in_editor = FALSE;
OpenMsgHelper *helper = (OpenMsgHelper *) user_data;
-
+
/* Do nothing if there was any problem with the mail
operation. The error will be shown by the error_handler of
the mail operation */
g_warning ("%s: BUG: TNY_FOLDER_TYPE_INVALID", __FUNCTION__);
}
-
+
if (folder_type == TNY_FOLDER_TYPE_OUTBOX) {
TnyTransportAccount *traccount = NULL;
ModestTnyAccountStore *accstore = modest_runtime_get_account_store();
if (traccount) {
ModestTnySendQueue *send_queue = NULL;
ModestTnySendQueueStatus status;
- char *msg_id;
+ gchar *msg_id;
account = g_strdup(modest_tny_account_get_parent_modest_account_name_for_server_account(
TNY_ACCOUNT(traccount)));
send_queue = modest_runtime_get_send_queue(traccount, TRUE);
if (TNY_IS_SEND_QUEUE (send_queue)) {
msg_id = modest_tny_send_queue_get_msg_id (header);
status = modest_tny_send_queue_get_msg_status(send_queue, msg_id);
+ g_free(msg_id);
+
/* Only open messages in outbox with the editor if they are in Failed state */
if (status == MODEST_TNY_SEND_QUEUE_FAILED) {
open_in_editor = TRUE;
+ }
+#ifdef MODEST_TOOLKIT_HILDON2
+ else {
+ /* In Fremantle we can not
+ open any message from
+ outbox which is not in
+ failed state */
+ g_object_unref(traccount);
+ goto cleanup;
}
- g_free(msg_id);
+#endif
}
g_object_unref(traccount);
} else {
account = g_strdup (modest_window_get_active_account (MODEST_WINDOW (parent_win)));
if (!account)
account = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr());
-
+
if (open_in_editor) {
ModestAccountMgr *mgr = modest_runtime_get_account_mgr ();
- gchar *from_header = NULL;
+ gchar *from_header = NULL, *acc_name;
from_header = tny_header_dup_from (header);
/* we cannot edit without a valid account... */
if (!modest_account_mgr_has_accounts(mgr, TRUE)) {
if (!modest_ui_actions_run_account_setup_wizard(parent_win)) {
- modest_window_mgr_unregister_header (modest_runtime_get_window_mgr (),
+ modest_window_mgr_unregister_header (modest_runtime_get_window_mgr (),
header);
g_free (from_header);
goto cleanup;
}
}
-
- if (from_header) {
- GSList *accounts = modest_account_mgr_account_names (mgr, TRUE);
- GSList *node = NULL;
-
- for (node = accounts; node != NULL; node = g_slist_next (node)) {
- gchar *from = modest_account_mgr_get_from_string (mgr, node->data);
-
- if (from && (strcmp (from_header, from) == 0)) {
- g_free (account);
- account = g_strdup (node->data);
- g_free (from);
- break;
- }
- g_free (from);
- }
- g_free (from_header);
- g_slist_foreach (accounts, (GFunc) g_free, NULL);
- g_slist_free (accounts);
+ acc_name = modest_utils_get_account_name_from_recipient (from_header);
+ g_free (from_header);
+ if (acc_name) {
+ g_free (account);
+ account = acc_name;
}
win = modest_msg_edit_window_new (msg, account, TRUE);
-
-
-
} else {
gchar *uid = modest_tny_folder_get_header_unique_id (header);
-
+
if (MODEST_IS_MAIN_WINDOW (parent_win)) {
GtkTreeRowReference *row_reference;
row_reference = (GtkTreeRowReference *) g_hash_table_lookup (helper->row_refs_per_header, header);
-
+
win = modest_msg_view_window_new_with_header_model (msg, account, (const gchar*) uid,
helper->model, row_reference);
} else {
}
g_free (uid);
}
-
+
/* Register and show new window */
if (win != NULL) {
mgr = modest_runtime_get_window_mgr ();
- modest_window_mgr_register_window (mgr, win);
- g_object_unref (win);
+ if (!modest_window_mgr_register_window (mgr, win, NULL)) {
+ gtk_widget_destroy (GTK_WIDGET (win));
+ goto cleanup;
+ }
gtk_widget_show_all (GTK_WIDGET(win));
}
static gboolean
is_memory_full_error (GError *error)
{
- if (error->code == TNY_SYSTEM_ERROR_MEMORY ||
- error->code == TNY_IO_ERROR_WRITE ||
- error->code == TNY_IO_ERROR_READ) {
+ gboolean enough_free_space = TRUE;
+ GnomeVFSURI *cache_dir_uri;
+ const gchar *cache_dir;
+ GnomeVFSFileSize free_space;
+
+ cache_dir = tny_account_store_get_cache_dir (TNY_ACCOUNT_STORE (modest_runtime_get_account_store ()));
+ cache_dir_uri = gnome_vfs_uri_new (cache_dir);
+ if (gnome_vfs_get_volume_free_space (cache_dir_uri, &free_space) == GNOME_VFS_OK) {
+ if (free_space < MIN_FREE_SPACE)
+ enough_free_space = FALSE;
+ }
+ gnome_vfs_uri_unref (cache_dir_uri);
+
+ if ((error->code == TNY_SYSTEM_ERROR_MEMORY ||
+ /* When asking for a mail and no space left on device
+ tinymail returns this error */
+ error->code == TNY_SERVICE_ERROR_MESSAGE_NOT_AVAILABLE ||
+ /* When the folder summary could not be read or
+ written */
+ error->code == TNY_IO_ERROR_WRITE ||
+ error->code == TNY_IO_ERROR_READ) &&
+ !enough_free_space) {
return TRUE;
} else {
return FALSE;
}
}
+static gboolean
+check_memory_full_error (GtkWidget *parent_window, GError *err)
+{
+ if (err == NULL)
+ return FALSE;
+
+ if (is_memory_full_error (err))
+ modest_platform_information_banner (parent_window,
+ NULL, dgettext("ke-recv",
+ "cerm_device_memory_full"));
+ else if (err->code == TNY_SYSTEM_ERROR_MEMORY)
+ /* If the account was created in memory full
+ conditions then tinymail won't be able to
+ connect so it'll return this error code */
+ modest_platform_information_banner (parent_window,
+ NULL, _("emev_ui_imap_inbox_select_error"));
+ else
+ return FALSE;
+
+ return TRUE;
+}
+
void
modest_ui_actions_disk_operations_error_handler (ModestMailOperation *mail_op,
gpointer user_data)
modest_platform_information_banner ((GtkWidget *) win,
NULL, dgettext("ke-recv",
"cerm_device_memory_full"));
- } else if (error->code == MODEST_MAIL_OPERATION_ERROR_FILE_IO) {
+ } else if (error->code == TNY_SYSTEM_ERROR_MEMORY) {
+ modest_platform_information_banner ((GtkWidget *) win,
+ NULL, _("emev_ui_imap_inbox_select_error"));
+ } else if (error->domain == MODEST_MAIL_OPERATION_ERROR &&
+ error->code == MODEST_MAIL_OPERATION_ERROR_FILE_IO) {
modest_platform_information_banner ((GtkWidget *) win,
NULL, dgettext ("hildon-common-strings", "sfil_ni_unable_to_open_file_not_found"));
} else if (user_data) {
gpointer user_data)
{
ModestMailOperation *mail_op = NULL;
- const gchar *proto_name;
gchar *error_msg;
- ModestTransportStoreProtocol proto;
+ ModestProtocolType proto;
TnyList *not_opened_headers;
TnyConnectionStatus status;
gboolean show_open_draft = FALSE;
open_msgs_helper_destroyer (helper);
/* In memory full conditions we could get this error here */
- if (err && is_memory_full_error (err)) {
- modest_platform_information_banner ((GtkWidget *) parent_window,
- NULL, dgettext("ke-recv",
- "cerm_device_memory_full"));
- }
+ check_memory_full_error ((GtkWidget *) parent_window, err);
+
goto clean;
}
/* Get the error message depending on the protocol */
- proto_name = tny_account_get_proto (account);
- if (proto_name != NULL) {
- proto = modest_protocol_info_get_transport_store_protocol (proto_name);
- } else {
- proto = MODEST_PROTOCOL_STORE_MAILDIR;
+ proto = modest_tny_account_get_protocol_type (account);
+ if (proto == MODEST_PROTOCOL_REGISTRY_TYPE_INVALID) {
+ proto = MODEST_PROTOCOLS_STORE_MAILDIR;
}
-
+
/* Create the error messages */
if (tny_list_get_length (not_opened_headers) == 1) {
- if (proto == MODEST_PROTOCOL_STORE_POP) {
- error_msg = g_strdup (_("emev_ni_ui_pop3_msg_recv_error"));
- } else if (proto == MODEST_PROTOCOL_STORE_IMAP) {
- TnyIterator *iter = tny_list_create_iterator (not_opened_headers);
- TnyHeader *header = TNY_HEADER (tny_iterator_get_current (iter));
- gchar *subject = tny_header_dup_subject (header);
- error_msg = g_strdup_printf (_("emev_ni_ui_imap_message_not_available_in_server"),
- subject);
+ ModestProtocol *protocol;
+ ModestProtocolRegistry *protocol_registry;
+ TnyIterator *iter;
+ TnyHeader *header;
+ gchar *subject;
+
+ protocol_registry = modest_runtime_get_protocol_registry ();
+ iter = tny_list_create_iterator (not_opened_headers);
+ header = TNY_HEADER (tny_iterator_get_current (iter));
+ subject = tny_header_dup_subject (header);
+
+ 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);
+ if (subject)
g_free (subject);
- g_object_unref (header);
- g_object_unref (iter);
- } else {
+ g_object_unref (header);
+ g_object_unref (iter);
+
+ if (error_msg == NULL) {
+ error_msg = g_strdup (_("mail_ni_ui_folder_get_msg_folder_error"));
+ }
+
+ if (modest_protocol_registry_protocol_type_has_tag (protocol_registry,
+ proto,
+ MODEST_PROTOCOL_REGISTRY_LOCAL_STORE_PROTOCOLS)) {
TnyHeader *header;
TnyFolder *folder;
TnyIterator *iter;
g_object_unref (folder);
g_object_unref (header);
g_object_unref (iter);
- error_msg = g_strdup (_("mail_ni_ui_folder_get_msg_folder_error"));
}
} else {
error_msg = g_strdup (_("mail_ni_ui_folder_get_msg_folder_error"));
if (show_open_draft) {
helper->banner_info = g_slice_new (OpenMsgBannerInfo);
+#ifdef MODEST_TOOLKIT_HILDON2
+ helper->banner_info->message = g_strdup (_("mail_me_opening"));
+#else
helper->banner_info->message = g_strdup (_("mail_ib_opening_draft_message"));
+#endif
helper->banner_info->banner = NULL;
helper->banner_info->idle_handler = g_timeout_add (500, open_msg_banner_idle,
helper->banner_info);
OpenMsgHelper *helper;
GtkTreeSelection *sel;
GList *sel_list = NULL, *sel_list_iter = NULL;
-
+
g_return_if_fail (headers != NULL);
/* Check that only one message is selected for opening */
ModestWindow *window = NULL;
TnyHeader *header = NULL;
gboolean found = FALSE;
-
+
header = TNY_HEADER (tny_iterator_get_current (iter));
if (header)
flags = tny_header_get_flags (header);
window = NULL;
found = modest_window_mgr_find_registered_header (mgr, header, &window);
-
+
/* Do not open again the message and present the
window to the user */
if (found) {
if (window) {
+#ifndef MODEST_TOOLKIT_HILDON2
gtk_window_present (GTK_WINDOW (window));
+#endif
} else {
/* the header has been registered already, we don't do
* anything but wait for the window to come up*/
edit_type = MODEST_EDIT_TYPE_FORWARD;
break;
default:
+ modest_window_mgr_unregister_header (modest_runtime_get_window_mgr (),
+ header);
g_return_if_reached ();
return;
}
/* Create and register the windows */
msg_win = modest_msg_edit_window_new (new_msg, rf_helper->account_name, FALSE);
mgr = modest_runtime_get_window_mgr ();
- modest_window_mgr_register_window (mgr, msg_win);
+ modest_window_mgr_register_window (mgr, msg_win, (ModestWindow *) rf_helper->parent_window);
if (rf_helper->parent_window != NULL) {
gdouble parent_zoom;
gtk_widget_show_all (GTK_WIDGET (msg_win));
cleanup:
- if (msg_win)
- g_object_unref (msg_win);
+ /* 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);
header_list = get_selected_headers (win);
if (!header_list)
return;
- if (tny_list_get_length (header_list) == 0) {
+ /* Check that only one message is selected for replying */
+ if (tny_list_get_length (header_list) != 1) {
+ modest_platform_information_banner ((win) ? GTK_WIDGET (win) : NULL,
+ NULL, _("mcen_ib_select_one_message"));
g_object_unref (header_list);
return;
}
if (err || canceled) {
/* In memory full conditions we could get this error here */
- if (err && is_memory_full_error (err)) {
- modest_platform_information_banner ((GtkWidget *) parent_window,
- NULL, dgettext("ke-recv",
- "cerm_device_memory_full"));
- }
+ check_memory_full_error ((GtkWidget *) parent_window, err);
+
if (info->mail_op) {
modest_mail_operation_queue_remove (modest_runtime_get_mail_operation_queue (),
info->mail_op);
GtkWidget *folder_view =
modest_main_window_get_child_widget (main_window,
MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
- if (folder != NULL)
+ if (folder != NULL) {
modest_folder_view_select_folder (MODEST_FOLDER_VIEW (folder_view), folder, FALSE);
+ g_object_unref (folder);
+ }
gtk_widget_grab_focus (GTK_WIDGET (folder_view));
return;
}
ModestMainWindow *main_window)
{
TnyList *headers;
- GtkWidget *open_widget;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
return;
modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (main_window));
- open_widget = modest_window_get_action_widget (MODEST_WINDOW (main_window), "/MenuBar/EmailMenu/EmailOpenMenu");
- if (!GTK_WIDGET_IS_SENSITIVE (open_widget))
- return;
headers = modest_header_view_get_selected_headers (header_view);
gpointer user_data)
{
ModestMainWindow *win = NULL;
- GtkWidget *header_view;
+ GtkWidget *folder_view;
const GError *error;
g_return_if_fail (TNY_IS_FOLDER (folder));
return;
}
- header_view =
- modest_main_window_get_child_widget(win, MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
+ folder_view =
+ modest_main_window_get_child_widget(win, MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
- if (header_view) {
- TnyFolder *current_folder;
+ if (folder_view) {
+ TnyFolderStore *current_folder;
- current_folder = modest_header_view_get_folder (MODEST_HEADER_VIEW (header_view));
- if (current_folder != NULL && folder != current_folder) {
- g_object_unref (current_folder);
- return;
- } else if (current_folder)
+ current_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
+ if (current_folder) {
+ gboolean different = ((TnyFolderStore *) folder != current_folder);
g_object_unref (current_folder);
+ if (different)
+ return;
+ }
}
/* Check if folder is empty and set headers view contents style */
if (TNY_IS_FOLDER (folder_store) && selected) {
TnyAccount *account;
const gchar *account_name = NULL;
- gboolean refresh;
/* Update the active account */
account = modest_tny_folder_get_account (TNY_FOLDER (folder_store));
modest_main_window_set_contents_style (main_window,
MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS);
- refresh = !modest_account_mgr_account_is_busy (modest_runtime_get_account_mgr (), account_name);
-
/* Set folder on header view. This function
will call tny_folder_refresh_async so we
pass a callback that will be called when
empty view if there are no messages */
modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view),
TNY_FOLDER (folder_store),
- refresh,
+ TRUE,
folder_refreshed_cb,
main_window);
already being done by the sort
dialog. Remove it when the GNOME version
has the same behaviour */
-#ifdef MODEST_PLATFORM_GNOME
+#ifdef MODEST_TOOLKIT_GTK
if (modest_main_window_get_contents_style (main_window) ==
MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS)
modest_widget_memory_save (conf, G_OBJECT (header_view),
g_object_unref(edit_window);
}
-gboolean
-modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edit_window)
+static gboolean
+enough_space_for_message (ModestMsgEditWindow *edit_window,
+ MsgData *data)
{
- TnyTransportAccount *transport_account;
- ModestMailOperation *mail_operation;
- MsgData *data;
- gchar *account_name, *from;
- ModestAccountMgr *account_mgr;
-/* char *info_text; */
- gboolean had_error = FALSE;
+ TnyAccountStore *acc_store;
guint64 available_disk, expected_size;
gint parts_count;
guint64 parts_size;
- ModestMainWindow *win;
-
- g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW(edit_window), FALSE);
-
- data = modest_msg_edit_window_get_msg_data (edit_window);
/* Check size */
- available_disk = modest_folder_available_space (NULL);
+ acc_store = TNY_ACCOUNT_STORE (modest_runtime_get_account_store());
+ available_disk = modest_utils_get_available_space (NULL);
modest_msg_edit_window_get_parts_size (edit_window, &parts_count, &parts_size);
expected_size = modest_tny_msg_estimate_size (data->plain_body,
- data->html_body,
- parts_count,
- parts_size);
+ data->html_body,
+ parts_count,
+ parts_size);
- if ((available_disk != -1) && expected_size > available_disk) {
- modest_msg_edit_window_free_msg_data (edit_window, data);
+ /* Double check: memory full condition or message too big */
+ if (available_disk < MIN_FREE_SPACE ||
+ expected_size > available_disk) {
- modest_platform_information_banner (NULL, NULL, dgettext("ke-recv", "cerm_device_memory_full"));
+ modest_platform_information_banner (NULL, NULL,
+ dgettext("ke-recv",
+ "cerm_device_memory_full"));
return FALSE;
}
* MODEST_MAX_LOW_MEMORY_MESSAGE_SIZE (see modest-defs.h) this
* should still allow for sending anything critical...
*/
- if (expected_size > MODEST_MAX_LOW_MEMORY_MESSAGE_SIZE) {
-
- if (modest_platform_check_memory_low (MODEST_WINDOW(edit_window), TRUE)) {
- modest_msg_edit_window_free_msg_data (edit_window, data);
- return FALSE;
- }
- }
+ if ((expected_size > MODEST_MAX_LOW_MEMORY_MESSAGE_SIZE) &&
+ modest_platform_check_memory_low (MODEST_WINDOW(edit_window), TRUE))
+ return FALSE;
/*
* djcb: we also make sure that the attachments are smaller than the max size
GTK_WINDOW(edit_window),
dgettext("ke-recv","memr_ib_operation_disabled"),
TRUE);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edit_window)
+{
+ TnyTransportAccount *transport_account;
+ ModestMailOperation *mail_operation;
+ MsgData *data;
+ gchar *account_name, *from;
+ ModestAccountMgr *account_mgr;
+ gboolean had_error = FALSE;
+ ModestMainWindow *win = NULL;
+
+ g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW(edit_window), FALSE);
+
+ data = modest_msg_edit_window_get_msg_data (edit_window);
+
+ /* Check size */
+ if (!enough_space_for_message (edit_window, data)) {
modest_msg_edit_window_free_msg_data (edit_window, data);
return FALSE;
}
transport_account =
TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_server_account
- (modest_runtime_get_account_store(),
+ (modest_runtime_get_account_store (),
account_name,
TNY_ACCOUNT_TYPE_TRANSPORT));
if (!transport_account) {
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 */
{
TnyTransportAccount *transport_account = NULL;
gboolean had_error = FALSE;
- guint64 available_disk, expected_size;
- gint parts_count;
- guint64 parts_size;
+ MsgData *data;
+ ModestAccountMgr *account_mgr;
+ gchar *account_name;
+ gchar *from;
+ ModestMailOperation *mail_operation;
g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW(edit_window), TRUE);
if (!modest_msg_edit_window_check_names (edit_window, TRUE))
return TRUE;
- MsgData *data = modest_msg_edit_window_get_msg_data (edit_window);
+ data = modest_msg_edit_window_get_msg_data (edit_window);
/* Check size */
- available_disk = modest_folder_available_space (NULL);
- modest_msg_edit_window_get_parts_size (edit_window, &parts_count, &parts_size);
- expected_size = modest_tny_msg_estimate_size (data->plain_body,
- data->html_body,
- parts_count,
- parts_size);
-
- if ((available_disk != -1) && expected_size > available_disk) {
+ if (!enough_space_for_message (edit_window, data)) {
modest_msg_edit_window_free_msg_data (edit_window, data);
-
- modest_platform_information_banner (NULL, NULL, dgettext("ke-recv", "cerm_device_memory_full"));
return FALSE;
}
-
- /*
- * djcb: if we're in low-memory state, we only allow for sending messages
- * smaller than MODEST_MAX_LOW_MEMORY_MESSAGE_SIZE (see modest-defs.h)
- * this should still allow for sending anything critical...
- */
- if (expected_size > MODEST_MAX_LOW_MEMORY_MESSAGE_SIZE) {
- if (modest_platform_check_memory_low (MODEST_WINDOW(edit_window), TRUE)) {
- modest_msg_edit_window_free_msg_data (edit_window, data);
- return FALSE;
- }
- }
-
- /*
- * djcb: we also make sure that the attachments are smaller than the max size
- * this is for the case where we'd try to forward a message with attachments
- * bigger than our max allowed size, or sending an message from drafts which
- * somehow got past our checks when attaching.
- */
- if (expected_size > MODEST_MAX_ATTACHMENT_SIZE) {
- modest_platform_run_information_dialog (
- GTK_WINDOW(edit_window),
- dgettext("ke-recv","memr_ib_operation_disabled"),
- TRUE);
- modest_msg_edit_window_free_msg_data (edit_window, data);
- return FALSE;
- }
-
- ModestAccountMgr *account_mgr = modest_runtime_get_account_mgr();
- gchar *account_name = g_strdup (data->account_name);
+ account_mgr = modest_runtime_get_account_mgr();
+ account_name = g_strdup (data->account_name);
if (!account_name)
account_name = g_strdup(modest_window_get_active_account (MODEST_WINDOW(edit_window)));
/* Get the currently-active transport account for this modest account: */
if (strcmp (account_name, MODEST_LOCAL_FOLDERS_ACCOUNT_ID) != 0) {
- transport_account = TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_server_account
- (modest_runtime_get_account_store(),
- account_name, TNY_ACCOUNT_TYPE_TRANSPORT));
+ transport_account =
+ TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_server_account
+ (modest_runtime_get_account_store (),
+ account_name, TNY_ACCOUNT_TYPE_TRANSPORT));
}
if (!transport_account) {
return TRUE;
}
- gchar *from = modest_account_mgr_get_from_string (account_mgr, account_name);
/* Create the mail operation */
- ModestMailOperation *mail_operation = modest_mail_operation_new_with_error_handling (NULL, modest_ui_actions_disk_operations_error_handler, NULL, NULL);
+ from = modest_account_mgr_get_from_string (account_mgr, account_name);
+ mail_operation = modest_mail_operation_new_with_error_handling (NULL, modest_ui_actions_disk_operations_error_handler, NULL, NULL);
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_operation);
modest_mail_operation_send_new_mail (mail_operation,
transport_account,
data->draft_msg,
from,
- data->to,
+ data->to,
data->cc,
data->bcc,
data->subject,
if (modest_mail_operation_get_error (mail_operation) != NULL) {
const GError *error = modest_mail_operation_get_error (mail_operation);
- if (error->code == MODEST_MAIL_OPERATION_ERROR_INSTANCE_CREATION_FAILED) {
+ if (error->domain == MODEST_MAIL_OPERATION_ERROR &&
+ error->code == MODEST_MAIL_OPERATION_ERROR_INSTANCE_CREATION_FAILED) {
g_warning ("%s failed: %s\n", __FUNCTION__, (modest_mail_operation_get_error (mail_operation))->message);
modest_platform_information_banner (NULL, NULL, _CS("sfil_ni_not_enough_memory"));
had_error = TRUE;
modest_msg_edit_window_remove_attachments (window, NULL);
}
+
+#ifndef MODEST_TOOLKIT_GTK
+typedef struct {
+ guint handler;
+ gchar *name;
+ GtkWindow *win;
+ TnyFolderStore *folder;
+} CreateFolderHelper;
+
+static gboolean
+show_create_folder_in_timeout (gpointer data)
+{
+ CreateFolderHelper *helper = (CreateFolderHelper *) data;
+
+ /* Remove the timeout ASAP, we can not wait until the dialog
+ is shown because it could take a lot of time and so the
+ timeout could be called twice or more times */
+ g_source_remove (helper->handler);
+
+ gdk_threads_enter ();
+ do_create_folder (helper->win, helper->folder, helper->name);
+ gdk_threads_leave ();
+
+ g_object_unref (helper->win);
+ g_object_unref (helper->folder);
+ g_free (helper->name);
+ g_slice_free (CreateFolderHelper, helper);
+
+ return FALSE;
+}
+#endif
+
static void
do_create_folder_cb (ModestMailOperation *mail_op,
TnyFolderStore *parent_folder,
/* Try again. Do *NOT* show any error because the mail
operations system will do it for us because we
created the mail_op with new_with_error_handler */
+#ifndef MODEST_TOOLKIT_GTK
+ CreateFolderHelper *helper;
+ helper = g_slice_new0 (CreateFolderHelper);
+ helper->name = g_strdup (suggested_name);
+ helper->folder = g_object_ref (parent_folder);
+ helper->win = g_object_ref (source_win);
+
+ /* Ugly but neccesary stuff. The problem is that the
+ dialog when is shown calls a function that destroys
+ all the temporary windows, so the banner is
+ destroyed */
+ helper->handler = g_timeout_add (2000, show_create_folder_in_timeout, helper);
+#else
do_create_folder (source_win, parent_folder, (const gchar *) suggested_name);
+#endif
} else {
/* the 'source_win' is either the ModestMainWindow, or the 'Move to folder'-dialog
* FIXME: any other? */
if (canceled || err) {
/* In memory full conditions we could get this error here */
- if (err && is_memory_full_error (err)) {
- modest_platform_information_banner ((GtkWidget *) parent_window,
- NULL, dgettext("ke-recv",
- "cerm_device_memory_full"));
- }
+ check_memory_full_error ((GtkWidget *) parent_window, err);
goto frees;
}
if (!error)
g_return_if_reached ();
- switch (error->code) {
- case MODEST_MAIL_OPERATION_ERROR_FOLDER_EXISTS:
+ if (error->domain == MODEST_MAIL_OPERATION_ERROR &&
+ error->code == MODEST_MAIL_OPERATION_ERROR_FOLDER_EXISTS) {
message = _CS("ckdg_ib_folder_already_exists");
- break;
- case TNY_SERVICE_ERROR_STATE:
+ } else if (error->domain == TNY_ERROR_DOMAIN &&
+ error->code == TNY_SERVICE_ERROR_STATE) {
/* This means that the folder is already in use (a
message is opened for example */
message = _("emev_ni_internal_error");
- break;
- default:
+ } else {
message = _("emev_ib_ui_imap_unable_to_rename");
}
if (canceled || err) {
/* In memory full conditions we could get this error here */
- if (err && is_memory_full_error (err)) {
- modest_platform_information_banner ((GtkWidget *) parent_window,
- NULL, dgettext("ke-recv",
- "cerm_device_memory_full"));
- }
+ check_memory_full_error ((GtkWidget *) parent_window, err);
} else if (MODEST_IS_MAIN_WINDOW(parent_window)) {
folder_view = modest_main_window_get_child_widget (
/* Clear the headers view */
sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view));
- gtk_tree_selection_unselect_all (sel);
+ gtk_tree_selection_unselect_all (sel);
/* Actually rename the folder */
modest_mail_operation_rename_folder (mail_op,
(const gchar *) (data->new_name),
on_rename_folder_cb,
folder_view);
+ g_object_unref (data->folder);
g_object_unref (mail_op);
}
return;
if (TNY_IS_FOLDER (folder)) {
- gchar *folder_name;
+ gchar *folder_name = NULL;
gint response;
const gchar *current_name;
TnyFolderStore *parent;
do_rename = FALSE;
} else {
RenameFolderInfo *rename_folder_data = g_new0 (RenameFolderInfo, 1);
- rename_folder_data->folder = folder;
+ rename_folder_data->folder = g_object_ref (folder);
rename_folder_data->new_name = folder_name;
modest_platform_connect_if_remote_and_perform (GTK_WINDOW(main_window), TRUE,
folder, on_rename_folder_performer, rename_folder_data);
}
void
-modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
+modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
const gchar* server_account_name,
gchar **username,
- gchar **password,
- gboolean *cancel,
+ gchar **password,
+ gboolean *cancel,
gboolean *remember,
ModestMainWindow *main_window)
{
g_return_if_fail(server_account_name);
gboolean completed = FALSE;
PasswordDialogFields *fields = NULL;
-
+
/* Initalize output parameters: */
if (cancel)
*cancel = FALSE;
-
+
if (remember)
*remember = TRUE;
-
-#ifdef MODEST_PLATFORM_MAEMO
+
+#ifndef MODEST_TOOLKIT_GTK
/* Maemo uses a different (awkward) button order,
* It should probably just use gtk_alternative_dialog_button_order ().
*/
- GtkWidget *dialog = gtk_dialog_new_with_buttons (_("mail_ti_password_protected"),
- NULL,
- GTK_DIALOG_MODAL,
- _("mcen_bd_dialog_ok"),
- GTK_RESPONSE_ACCEPT,
- _("mcen_bd_dialog_cancel"),
- GTK_RESPONSE_REJECT,
- NULL);
+#ifdef MODEST_TOOLKIT_HILDON2
+ GtkWidget *dialog =
+ gtk_dialog_new_with_buttons (_("mail_ti_password_protected"),
+ NULL,
+ GTK_DIALOG_MODAL,
+ _HL("wdgt_bd_done"),
+ GTK_RESPONSE_ACCEPT,
+ NULL);
#else
- GtkWidget *dialog = gtk_dialog_new_with_buttons (_("mail_ti_password_protected"),
- NULL,
- GTK_DIALOG_MODAL,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_REJECT,
- GTK_STOCK_OK,
- GTK_RESPONSE_ACCEPT,
- NULL);
-#endif /* MODEST_PLATFORM_MAEMO */
+ GtkWidget *dialog =
+ gtk_dialog_new_with_buttons (_("mail_ti_password_protected"),
+ NULL,
+ _("mcen_bd_dialog_ok"),
+ GTK_RESPONSE_ACCEPT,
+ _("mcen_bd_dialog_cancel"),
+ GTK_RESPONSE_REJECT,
+ NULL);
+#endif /* MODEST_TOOLKIT_HILDON2 */
+#else
+ GtkWidget *dialog =
+ gtk_dialog_new_with_buttons (_("mail_ti_password_protected"),
+ NULL,
+ GTK_DIALOG_MODAL,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_REJECT,
+ GTK_STOCK_OK,
+ GTK_RESPONSE_ACCEPT,
+ NULL);
+#endif /* MODEST_TOOLKIT_GTK */
+
+ modest_window_mgr_set_modal (modest_runtime_get_window_mgr(), GTK_WINDOW (dialog), NULL);
- modest_window_mgr_set_modal (modest_runtime_get_window_mgr(), GTK_WINDOW (dialog));
-
gchar *server_name = modest_account_mgr_get_server_account_hostname (
modest_runtime_get_account_mgr(), server_account_name);
if (!server_name) {/* This happened once, though I don't know why. murrayc. */
g_warning("%s: Could not get server name for server account '%s'", __FUNCTION__, server_account_name);
if (cancel)
*cancel = TRUE;
+ gtk_widget_destroy (dialog);
return;
}
-
- /* This causes a warning because the logical ID has no %s in it,
- * though the translation does, but there is not much we can do about that: */
+
gchar *txt = g_strdup_printf (_("mail_ia_password_info"), server_name);
gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), gtk_label_new(txt),
FALSE, FALSE, 0);
/* username: */
gchar *initial_username = modest_account_mgr_get_server_account_username (
modest_runtime_get_account_mgr(), server_account_name);
-
+
GtkWidget *entry_username = gtk_entry_new ();
if (initial_username)
gtk_entry_set_text (GTK_ENTRY (entry_username), initial_username);
*/
gtk_widget_set_sensitive (entry_username, FALSE);
-#ifdef MODEST_PLATFORM_MAEMO
+#ifndef MODEST_TOOLKIT_GTK
/* Auto-capitalization is the default, so let's turn it off: */
hildon_gtk_entry_set_input_mode (GTK_ENTRY (entry_username), HILDON_GTK_INPUT_MODE_FULL);
-
+
/* Create a size group to be used by all captions.
* Note that HildonCaption does not create a default size group if we do not specify one.
* We use GTK_SIZE_GROUP_HORIZONTAL, so that the widths are the same. */
GtkSizeGroup *sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-
+
GtkWidget *caption = hildon_caption_new (sizegroup,
_("mail_fi_username"), entry_username, NULL, HILDON_CAPTION_MANDATORY);
gtk_widget_show (entry_username);
gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), caption,
FALSE, FALSE, MODEST_MARGIN_HALF);
gtk_widget_show (caption);
-#else
+#else
gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), entry_username,
TRUE, FALSE, 0);
-#endif /* MODEST_PLATFORM_MAEMO */
-
+#endif /* !MODEST_TOOLKIT_GTK */
+
/* 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), "*"); */
-
-#ifdef MODEST_PLATFORM_MAEMO
+
+#ifndef MODEST_TOOLKIT_GTK
/* Auto-capitalization is the default, so let's turn it off: */
- hildon_gtk_entry_set_input_mode (GTK_ENTRY (entry_password),
+ 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,
+
+ caption = hildon_caption_new (sizegroup,
_("mail_fi_password"), entry_password, NULL, HILDON_CAPTION_MANDATORY);
gtk_widget_show (entry_password);
- gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), caption,
+ 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
+#else
gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), entry_password,
TRUE, FALSE, 0);
-#endif /* MODEST_PLATFORM_MAEMO */
+#endif /* !MODEST_TOOLKIT_GTK */
if (initial_username != NULL)
gtk_widget_grab_focus (GTK_WIDGET (entry_password));
-
+
/* This is not in the Maemo UI spec:
remember_pass_check = gtk_check_button_new_with_label (_("Remember password"));
gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), remember_pass_check,
gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
while (!completed) {
-
+
if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
if (username) {
*username = g_strdup (gtk_entry_get_text (GTK_ENTRY(entry_username)));
-
+
/* Note that an empty field becomes the "" string */
if (*username && strlen (*username) > 0) {
modest_account_mgr_set_server_account_username (modest_runtime_get_account_mgr(),
server_account_name,
*username);
completed = TRUE;
-
+
const gboolean username_was_changed =
(strcmp (*username, initial_username) != 0);
if (username_was_changed) {
"username in the get_password() callback.\n", __FUNCTION__);
}
} else {
+ g_free (*username);
+ *username = NULL;
/* Show error */
modest_platform_information_banner (GTK_WIDGET (dialog), NULL,
_("mcen_ib_username_pw_incorrect"));
completed = FALSE;
}
}
-
+
if (password) {
*password = g_strdup (gtk_entry_get_text (GTK_ENTRY(entry_password)));
-
+
/* We do not save the password in the configuration,
* because this function is only called for passwords that should
* not be remembered:
modest_runtime_get_account_mgr(), server_account_name,
*password);
*/
- }
+ }
if (cancel)
- *cancel = FALSE;
+ *cancel = FALSE;
} else {
+#ifndef MODEST_TOOLKIT_HILDON2
/* Set parent to NULL or the banner will disappear with its parent dialog */
modest_platform_information_banner(NULL, NULL, _("mail_ib_login_cancelled"));
+#endif
completed = TRUE;
if (username)
- *username = NULL;
+ *username = NULL;
if (password)
- *password = NULL;
+ *password = NULL;
if (cancel)
*cancel = TRUE;
}
*remember = FALSE;
*/
+ g_free (initial_username);
gtk_widget_destroy (dialog);
g_slice_free (PasswordDialogFields, fields);
gtk_clipboard_set_can_store (clipboard, NULL, 0);
gtk_clipboard_store (clipboard);
} else if (GTK_IS_HTML (focused_widget)) {
- gtk_html_copy (GTK_HTML (focused_widget));
- gtk_clipboard_set_can_store (clipboard, NULL, 0);
- gtk_clipboard_store (clipboard);
+ const gchar *sel;
+ int len = -1;
+ sel = gtk_html_get_selection_html (GTK_HTML (focused_widget), &len);
+ if ((sel == NULL) || (sel[0] == '\0')) {
+ copied = FALSE;
+ } else {
+ gtk_html_copy (GTK_HTML (focused_widget));
+ gtk_clipboard_set_can_store (clipboard, NULL, 0);
+ gtk_clipboard_store (clipboard);
+ }
} else if (GTK_IS_TEXT_VIEW (focused_widget)) {
GtkTextBuffer *buffer;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (focused_widget));
gtk_text_buffer_paste_clipboard (buffer, clipboard, NULL, TRUE);
} else if (MODEST_IS_MSG_EDIT_WINDOW (window)) {
ModestMailOperation *mail_op;
- TnyFolder *src_folder;
- TnyList *data;
+ TnyFolder *src_folder = NULL;
+ TnyList *data = NULL;
gboolean delete;
PasteAsAttachmentHelper *helper = g_new0 (PasteAsAttachmentHelper, 1);
helper->window = MODEST_MSG_EDIT_WINDOW (window);
helper,
paste_as_attachment_free);
}
+ /* Free */
+ if (data)
+ g_object_unref (data);
+ if (src_folder)
+ g_object_unref (src_folder);
+
}
} else if (MODEST_IS_FOLDER_VIEW (focused_widget)) {
ModestEmailClipboard *clipboard = NULL;
/* Set focuse on header view */
gtk_widget_grab_focus (header_view);
-
/* Enable window dimming management */
modest_window_enable_dimming (MODEST_WINDOW(window));
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (window));
modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
}
if (active != fullscreen) {
modest_window_mgr_set_fullscreen_mode (mgr, active);
+#ifndef MODEST_TOOLKIT_HILDON2
gtk_window_present (GTK_WINDOW (window));
+#endif
}
}
fullscreen = modest_window_mgr_get_fullscreen_mode (mgr);
modest_window_mgr_set_fullscreen_mode (mgr, !fullscreen);
+#ifndef MODEST_TOOLKIT_HILDON2
gtk_window_present (GTK_WINDOW (window));
+#endif
}
/*
gpointer user_data)
{
- GtkWidget *dialog;
-
- /* Create dialog */
- dialog = modest_details_dialog_new_with_header (GTK_WINDOW (window), header);
-
- /* 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);
-}
-
-/*
- * 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);
active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (toggle));
- /* Check if we want to toggle the toolbar vuew in fullscreen
+ /* Check if we want to toggle the toolbar view in fullscreen
or normal mode */
if (!strcmp (gtk_action_get_name (GTK_ACTION (toggle)),
"ViewShowToolbarFullScreen")) {
{
GtkWidget *dialog = NULL;
GtkWidget *ok_button = NULL, *new_button = NULL;
- GList *children = NULL;
gboolean ok_sensitive = TRUE, new_sensitive = TRUE;
gboolean moving_folder = FALSE;
gboolean is_local_account = TRUE;
if (!dialog)
return;
- children = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area));
- ok_button = GTK_WIDGET (children->next->next->data);
- new_button = GTK_WIDGET (children->next->data);
- g_list_free (children);
+ ok_button = g_object_get_data (G_OBJECT (dialog), MOVE_FOLDER_OK_BUTTON);
+ new_button = g_object_get_data (G_OBJECT (dialog), MOVE_FOLDER_NEW_BUTTON);
/* check if folder_store is an remote account */
if (TNY_IS_ACCOUNT (folder_store)) {
if ((gpointer) local_account != (gpointer) folder_store &&
(gpointer) mmc_account != (gpointer) folder_store) {
- const char *proto_name = tny_account_get_proto (TNY_ACCOUNT (folder_store));
- ModestTransportStoreProtocol proto = MODEST_PROTOCOL_STORE_MAILDIR;
- if (proto_name != NULL) {
- proto = modest_protocol_info_get_transport_store_protocol (proto_name);
+ ModestProtocolType proto;
+ proto = modest_tny_account_get_protocol_type (TNY_ACCOUNT (folder_store));
+ if (proto == MODEST_PROTOCOL_REGISTRY_TYPE_INVALID) {
+ proto = MODEST_PROTOCOLS_STORE_MAILDIR;
}
is_local_account = FALSE;
/* New button should be dimmed on remote
POP account root */
- new_sensitive = (proto != MODEST_PROTOCOL_STORE_POP);
+ new_sensitive = (modest_protocol_registry_protocol_type_has_tag (modest_runtime_get_protocol_registry (),
+ proto,
+ 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 *new_button;
+ 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"),
GTK_WINDOW (win),
GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT,
NULL);
- gtk_dialog_add_button (GTK_DIALOG (dialog), _("mcen_bd_dialog_ok"), GTK_RESPONSE_ACCEPT);
+#ifndef MODEST_TOOLKIT_GTK
+ ok_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("mcen_bd_dialog_ok"), GTK_RESPONSE_ACCEPT);
/* We do this manually so GTK+ does not associate a response ID for
* the button. */
new_button = gtk_button_new_from_stock (_("mcen_bd_new"));
gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog)->action_area), new_button, FALSE, FALSE, 0);
+ gtk_widget_show (new_button);
+#ifndef MODEST_TOOLKIT_HILDON2
gtk_dialog_add_button (GTK_DIALOG (dialog), _("mcen_bd_dialog_cancel"), GTK_RESPONSE_REJECT);
+#endif
+#else
+ /* We do this manually so GTK+ does not associate a response ID for
+ * the button. */
+ new_button = gtk_button_new_with_label (_("mcen_ti_new_folder"));
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), new_button, FALSE, FALSE, 0);
+ gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (GTK_DIALOG (dialog)->action_area), new_button, TRUE);
+ gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT);
+ ok_button = gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_OK, GTK_RESPONSE_ACCEPT);
+ gtk_container_set_border_width (GTK_CONTAINER (dialog), 12);
+ gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 24);
+#endif
+ g_object_set_data (G_OBJECT (dialog), MOVE_FOLDER_OK_BUTTON, ok_button);
+ 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);
+#endif
/* Create folder view */
*tree_view = modest_platform_create_folder_view (NULL);
/* 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_window_set_default_size (GTK_WINDOW (dialog), 300, 300);
+#else
+ gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 400);
+#endif
return dialog;
}
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;
if (response == GTK_RESPONSE_OK) {
GtkWidget *info;
info =
- modest_platform_animation_banner (GTK_WIDGET (win), NULL, _("mcen_ib_removing_attachment"));
+ modest_platform_animation_banner (GTK_WIDGET (win), NULL, _("mcen_me_inbox_remove_attachments"));
iter = tny_list_create_iterator (parts);
while (!tny_iterator_is_done (iter)) {
TnyMimePart *part;
/* The transfer is possible and the user wants to */
*do_xfer = TRUE;
- if (remote_folder_is_pop (src_folder) && delete_originals) {
+ if (remote_folder_has_leave_on_server (src_folder) && delete_originals) {
const gchar *account_name;
gboolean leave_on_server;
{
ModestWindow *win = MODEST_WINDOW (parent_window);
TnyAccount *dst_account = NULL;
- const gchar *proto_str = NULL;
- gboolean dst_is_pop = FALSE;
+ gboolean dst_forbids_message_add = FALSE;
XferMsgsHelper *helper;
MoveToHelper *movehelper;
ModestMailOperation *mail_op;
helper = (XferMsgsHelper *) user_data;
- if (canceled)
- goto end;
-
- if (err) {
- if (is_memory_full_error (err)) {
- modest_platform_information_banner ((GtkWidget *) parent_window,
- NULL, dgettext("ke-recv",
- "cerm_device_memory_full"));
- } else {
+ if (canceled || err) {
+ if (!check_memory_full_error ((GtkWidget *) parent_window, err)) {
/* Show the proper error message */
modest_ui_actions_on_account_connection_error (parent_window, account);
}
}
dst_account = tny_folder_get_account (TNY_FOLDER (helper->dst_folder));
- proto_str = tny_account_get_proto (dst_account);
/* tinymail will return NULL for local folders it seems */
- dst_is_pop = proto_str &&
- (modest_protocol_info_get_transport_store_protocol (proto_str) ==
- MODEST_PROTOCOL_STORE_POP);
-
+ dst_forbids_message_add = modest_protocol_registry_protocol_type_has_tag (modest_runtime_get_protocol_registry (),
+ modest_tny_account_get_protocol_type (dst_account),
+ MODEST_PROTOCOL_REGISTRY_STORE_FORBID_MESSAGE_ADD);
g_object_unref (dst_account);
- if (dst_is_pop) {
+ if (dst_forbids_message_add) {
modest_platform_information_banner (GTK_WIDGET (win),
NULL,
ngettext("mail_in_ui_folder_move_target_error",
gboolean need_connection = TRUE;
gboolean do_xfer = TRUE;
XferMsgsHelper *helper;
+
+ g_return_if_fail (TNY_IS_FOLDER (src_folder));
+ g_return_if_fail (TNY_IS_FOLDER (dst_folder));
+ g_return_if_fail (TNY_IS_LIST (headers));
modest_ui_actions_xfer_messages_check (win, TNY_FOLDER_STORE (src_folder),
headers, TNY_FOLDER (dst_folder),
TNY_FOLDER (dst_folder));
/* Frees */
+ g_object_unref (src_folder);
g_object_unref (header);
g_object_unref (headers);
}
/* Create and run the dialog */
dialog = create_move_to_dialog (GTK_WINDOW (win), folder_view, &tree_view);
modest_folder_view_select_first_inbox_or_local (MODEST_FOLDER_VIEW (tree_view));
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog), (GtkWindow *) win);
result = gtk_dialog_run (GTK_DIALOG(dialog));
g_object_ref (tree_view);
gtk_widget_destroy (dialog);
modest_ui_actions_on_help (GtkAction *action,
GtkWindow *win)
{
+ /* Help app is not available at all in fremantle */
+#ifndef MODEST_TOOLKIT_HILDON2
const gchar *help_id;
g_return_if_fail (win && GTK_IS_WINDOW(win));
if (help_id)
modest_platform_show_help (GTK_WINDOW (win), help_id);
+#endif
}
void
modest_ui_actions_on_csm_help (GtkAction *action,
GtkWindow *win)
{
+ /* Help app is not available at all in fremantle */
+#ifndef MODEST_TOOLKIT_HILDON2
+
const gchar* help_id = NULL;
GtkWidget *folder_view;
TnyFolderStore *folder_store;
modest_platform_show_help (GTK_WINDOW (win), help_id);
else
modest_ui_actions_on_help (action, win);
+#endif
}
static void
TnyList *headers = TNY_LIST (user_data);
if (err || canceled) {
- if (err && is_memory_full_error (err)) {
- modest_platform_information_banner ((GtkWidget *) parent_window,
- NULL, dgettext("ke-recv",
- "cerm_device_memory_full"));
- }
+ check_memory_full_error ((GtkWidget *) parent_window, err);
goto out;
}
tree_column = gtk_tree_view_get_column (GTK_TREE_VIEW (header_view),
TNY_GTK_HEADER_LIST_MODEL_FROM_COLUMN);
- gtk_tree_view_column_queue_resize (tree_column);
+ if (tree_column)
+ gtk_tree_view_column_queue_resize (tree_column);
}
#else
gtk_widget_queue_draw (header_view);
/* Rerun dimming rules, because the message could become deletable for example */
modest_window_check_dimming_rules_group (MODEST_WINDOW (main_window),
MODEST_DIMMING_RULES_TOOLBAR);
+ modest_window_check_dimming_rules_group (MODEST_WINDOW (main_window),
+ MODEST_DIMMING_RULES_MENU);
/* Free */
frees:
modest_ui_actions_on_account_connection_error (GtkWindow *parent_window,
TnyAccount *account)
{
- ModestTransportStoreProtocol proto;
- const gchar *proto_name;
+ ModestProtocolType protocol_type;
+ ModestProtocol *protocol;
gchar *error_note = NULL;
- proto_name = tny_account_get_proto (account);
- proto = modest_protocol_info_get_transport_store_protocol (proto_name);
-
- switch (proto) {
- case MODEST_PROTOCOL_STORE_POP:
- error_note = g_strdup_printf (_("emev_ni_ui_pop3_msg_connect_error"),
- tny_account_get_hostname (account));
- break;
- case MODEST_PROTOCOL_STORE_IMAP:
- error_note = g_strdup_printf (_("emev_ni_ui_imap_connect_server_error"),
- tny_account_get_hostname (account));
- break;
- case MODEST_PROTOCOL_STORE_MAILDIR:
- case MODEST_PROTOCOL_STORE_MBOX:
- error_note = g_strdup (_("emev_nc_mailbox_notavailable"));
- break;
- default:
- g_warning ("%s: This should not be reached", __FUNCTION__);
- }
+ protocol_type = modest_tny_account_get_protocol_type (account);
+ protocol = modest_protocol_registry_get_protocol_by_type (modest_runtime_get_protocol_registry (),
+ protocol_type);
- if (error_note) {
+ error_note = modest_protocol_get_translation (protocol, MODEST_PROTOCOL_TRANSLATION_ACCOUNT_CONNECTION_ERROR, tny_account_get_hostname (account));
+ if (error_note == NULL) {
+ g_warning ("%s: This should not be reached", __FUNCTION__);
+ } else {
modest_platform_run_information_dialog (parent_window, error_note, FALSE);
g_free (error_note);
}
modest_ui_actions_get_msg_already_deleted_error_msg (ModestWindow *win)
{
gchar *msg = NULL;
+ gchar *subject;
TnyFolderStore *folder = NULL;
TnyAccount *account = NULL;
- ModestTransportStoreProtocol proto;
+ ModestProtocolType proto;
+ ModestProtocol *protocol;
TnyHeader *header = NULL;
if (MODEST_IS_MAIN_WINDOW (win)) {
/* Get the account type */
account = tny_folder_get_account (TNY_FOLDER (folder));
- proto = modest_protocol_info_get_transport_store_protocol (tny_account_get_proto (account));
- if (proto == MODEST_PROTOCOL_STORE_POP) {
- msg = g_strdup (_("emev_ni_ui_pop3_msg_recv_error"));
- } else if (proto == MODEST_PROTOCOL_STORE_IMAP) {
- gchar *subject;
- subject = tny_header_dup_subject (header);
- msg = g_strdup_printf (_("emev_ni_ui_imap_message_not_available_in_server"),
- subject);
+ proto = modest_tny_account_get_protocol_type (account);
+ protocol = modest_protocol_registry_get_protocol_by_type (modest_runtime_get_protocol_registry (),
+ proto);
+
+ subject = tny_header_dup_subject (header);
+ msg = modest_protocol_get_translation (protocol, MODEST_PROTOCOL_TRANSLATION_MSG_NOT_AVAILABLE, subject);
+ if (subject)
g_free (subject);
- } else {
+ if (msg == NULL) {
msg = g_strdup_printf (_("mail_ni_ui_folder_get_msg_folder_error"));
}
return msg;
}
+
+gboolean
+modest_ui_actions_on_delete_account (GtkWindow *parent_window,
+ const gchar *account_name,
+ const gchar *account_title)
+{
+ ModestAccountMgr *account_mgr;
+ gchar *txt = NULL;
+ gint response;
+ ModestProtocol *protocol;
+ gboolean removed = FALSE;
+
+ g_return_val_if_fail (account_name, FALSE);
+ g_return_val_if_fail (account_title, FALSE);
+
+ account_mgr = modest_runtime_get_account_mgr();
+
+ /* The warning text depends on the account type: */
+ protocol = modest_protocol_registry_get_protocol_by_type (modest_runtime_get_protocol_registry (),
+ modest_account_mgr_get_store_protocol (account_mgr,
+ account_name));
+ txt = modest_protocol_get_translation (protocol,
+ MODEST_PROTOCOL_TRANSLATION_DELETE_MAILBOX,
+ account_title);
+ if (txt == NULL)
+ txt = g_strdup_printf (_("emev_nc_delete_mailbox"), account_title);
+
+ response = modest_platform_run_confirmation_dialog (parent_window, txt);
+ g_free (txt);
+ txt = NULL;
+
+ if (response == GTK_RESPONSE_OK) {
+ /* Remove account. If it succeeds then it also removes
+ the account from the ModestAccountView: */
+ gboolean is_default = FALSE;
+ gchar *default_account_name = modest_account_mgr_get_default_account (account_mgr);
+ if (default_account_name && (strcmp (default_account_name, account_name) == 0))
+ is_default = TRUE;
+ g_free (default_account_name);
+
+ removed = modest_account_mgr_remove_account (account_mgr, account_name);
+ if (!removed)
+ g_warning ("%s: modest_account_mgr_remove_account() failed.\n", __FUNCTION__);
+ }
+ return removed;
+}