msg = g_strdup_printf (_("mcen_nc_unable_to_delete_n_messages"),
opened_headers);
- modest_platform_run_information_dialog (GTK_WINDOW (win), (const gchar *) msg);
+ modest_platform_run_information_dialog (GTK_WINDOW (win), (const gchar *) msg, FALSE);
g_free (msg);
g_object_unref (header_list);
g_object_unref (folder);
}
+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) {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
+
void
modest_ui_actions_disk_operations_error_handler (ModestMailOperation *mail_op,
- gpointer user_data)
+ gpointer user_data)
{
const GError *error;
GObject *win = NULL;
+ ModestMailOperationStatus status;
win = modest_mail_operation_get_source (mail_op);
error = modest_mail_operation_get_error (mail_op);
+ status = modest_mail_operation_get_status (mail_op);
- /* Show error */
- if (error->code == TNY_SYSTEM_ERROR_MEMORY ||
- error->code == TNY_IO_ERROR_WRITE ||
- error->code == TNY_IO_ERROR_READ) {
- ModestMailOperationStatus st = modest_mail_operation_get_status (mail_op);
- /* If the mail op has been cancelled then it's not an error: don't show any message */
- if (st != MODEST_MAIL_OPERATION_STATUS_CANCELED) {
+ /* If the mail op has been cancelled then it's not an error:
+ don't show any message */
+ if (status != MODEST_MAIL_OPERATION_STATUS_CANCELED) {
+ if (is_memory_full_error ((GError *) error)) {
modest_platform_information_banner ((GtkWidget *) win,
NULL, dgettext("ke-recv",
"cerm_device_memory_full"));
+ } else if (user_data) {
+ modest_platform_information_banner ((GtkWidget *) win,
+ NULL, user_data);
}
- } else if (user_data) {
- modest_platform_information_banner ((GtkWidget *) win,
- NULL, user_data);
}
if (win)
modest_runtime_get_window_mgr ());
/* Free the helper */
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"));
+ }
goto clean;
}
gchar *account_name;
gboolean poke_status;
gboolean interactive;
+ ModestMailOperation *mail_op;
} SendReceiveInfo;
static void
TnyAccount *account,
gpointer user_data)
{
- ModestMailOperation *mail_op;
SendReceiveInfo *info;
info = (SendReceiveInfo *) user_data;
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"));
+ }
+ if (info->mail_op) {
+ modest_mail_operation_queue_remove (modest_runtime_get_mail_operation_queue (),
+ info->mail_op);
+ }
goto clean;
}
if (info->win && MODEST_IS_MAIN_WINDOW (info->win)) {
modest_main_window_notify_send_receive_initied (MODEST_MAIN_WINDOW (info->win));
}
-
- mail_op = modest_mail_operation_new_with_error_handling ((info->win) ? G_OBJECT (info->win) : NULL,
- modest_ui_actions_send_receive_error_handler,
- NULL, NULL);
if (info->win && MODEST_IS_MAIN_WINDOW (info->win))
- g_signal_connect (G_OBJECT(mail_op), "operation-finished",
+ g_signal_connect (G_OBJECT (info->mail_op), "operation-finished",
G_CALLBACK (on_send_receive_finished),
info->win);
/* Send & receive. */
- modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
- modest_mail_operation_update_account (mail_op, info->account_name, info->poke_status, info->interactive,
+ modest_mail_operation_update_account (info->mail_op, info->account_name, info->poke_status, info->interactive,
(info->win) ? retrieve_all_messages_cb : NULL,
new_messages_arrived, info->win);
- g_object_unref (G_OBJECT (mail_op));
clean:
/* Frees */
+ if (info->mail_op)
+ g_object_unref (G_OBJECT (info->mail_op));
if (info->account_name)
g_free (info->account_name);
if (info->win)
info->interactive = interactive;
info->account = modest_tny_account_store_get_server_account (acc_store, acc_name,
TNY_ACCOUNT_TYPE_STORE);
+ /* We need to create the operation here, because otherwise it
+ could happen that the queue emits the queue-empty signal
+ while we're trying to connect the account */
+ info->mail_op = modest_mail_operation_new_with_error_handling ((info->win) ? G_OBJECT (info->win) : NULL,
+ modest_ui_actions_disk_operations_error_handler,
+ NULL, NULL);
+ modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), info->mail_op);
/* Invoke the connect and perform */
modest_platform_connect_and_perform ((win) ? GTK_WINDOW (win) : NULL,
TnyFolderStore *parent_folder = TNY_FOLDER_STORE (user_data);
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"));
+ }
goto frees;
}
GtkWidget *folder_view = NULL;
RenameFolderInfo *data = (RenameFolderInfo*)user_data;
- if (!canceled && (err == NULL) && MODEST_IS_MAIN_WINDOW(parent_window)) {
+ 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"));
+ }
+ } else if (MODEST_IS_MAIN_WINDOW(parent_window)) {
folder_view = modest_main_window_get_child_widget (
MODEST_MAIN_WINDOW (parent_window),
(const gchar *) (data->new_name),
on_rename_folder_cb,
folder_view);
+ g_object_unref (mail_op);
}
- g_object_unref (mail_op);
g_free (data->new_name);
g_free (data);
}
GObject *win = modest_mail_operation_get_source (mail_op);
modest_platform_run_information_dialog ((win) ? GTK_WINDOW (win) : NULL,
- _("mail_in_ui_folder_delete_error"));
+ _("mail_in_ui_folder_delete_error"),
+ FALSE);
g_object_unref (win);
}
/* Show an error if it's an account */
if (!TNY_IS_FOLDER (folder)) {
modest_platform_run_information_dialog (GTK_WINDOW (main_window),
- _("mail_in_ui_folder_delete_error"));
+ _("mail_in_ui_folder_delete_error"),
+ FALSE);
g_object_unref (G_OBJECT (folder));
return;
}
/* Show notification dialog */
win = modest_mail_operation_get_source (mail_op);
- modest_platform_run_information_dialog ((GtkWindow *) win, _("mail_in_ui_folder_move_target_error"));
+ modest_platform_run_information_dialog ((GtkWindow *) win, _("mail_in_ui_folder_move_target_error"), FALSE);
if (win)
g_object_unref (win);
}
-void
-modest_ui_actions_send_receive_error_handler (ModestMailOperation *mail_op,
- gpointer user_data)
-{
- GObject *win = modest_mail_operation_get_source (mail_op);
- const GError *error = modest_mail_operation_get_error (mail_op);
-
- g_return_if_fail (error != NULL);
- if (error->message != NULL)
- g_printerr ("modest: %s\n", error->message);
- else
- g_printerr ("modest: unkonw error on send&receive operation");
-
- /* Show error message */
-/* if (modest_mail_operation_get_id (mail_op) == MODEST_MAIL_OPERATION_TYPE_RECEIVE) */
-/* modest_platform_run_information_dialog ((win) ? GTK_WINDOW (win) : NULL, */
-/* _CS("sfil_ib_unable_to_receive")); */
-/* else */
-/* modest_platform_run_information_dialog ((win) ? GTK_WINDOW (win) : NULL, */
-/* _CS("sfil_ib_unable_to_send")); */
- g_object_unref (win);
-}
-
static void
open_msg_for_purge_cb (ModestMailOperation *mail_op,
TnyHeader *header,
gboolean dst_is_pop = FALSE;
if (canceled || err) {
- /* Show the proper error message */
- modest_ui_actions_on_account_connection_error (parent_window, account);
+ if (err && is_memory_full_error (err)) {
+ modest_platform_information_banner ((GtkWidget *) parent_window,
+ NULL, dgettext("ke-recv",
+ "cerm_device_memory_full"));
+ } else {
+ /* Show the proper error message */
+ modest_ui_actions_on_account_connection_error (parent_window, account);
+ }
g_object_unref (dst_folder);
return;
}
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"));
+ }
goto out;
}
should show the Accounts Settings dialog or the Connection
specific SMTP server window */
- modest_platform_run_information_dialog (NULL, message);
+ modest_platform_run_information_dialog (NULL, message, FALSE);
g_free (message);
g_object_unref (server_account);
}
}
if (error_note) {
- modest_platform_run_information_dialog (parent_window, error_note);
+ modest_platform_run_information_dialog (parent_window, error_note, FALSE);
g_free (error_note);
}
}