#include <gtkhtml/gtkhtml.h>
-#define MIN_FREE_SPACE 5 * 1024 * 1024
#define MODEST_MOVE_TO_DIALOG_FOLDER_VIEW "move-to-dialog-folder-view"
typedef struct _GetMsgAsyncHelper {
parts_size = count_parts_size (attachments);
expected_size = modest_tny_msg_estimate_size (body, NULL, parts_count, parts_size);
- /* Double check: memory full condition or message too big */
- if (available_disk < MIN_FREE_SPACE ||
+ /* Double check: disk full condition or message too big */
+ if (available_disk < MODEST_TNY_ACCOUNT_STORE_MIN_FREE_SPACE ||
expected_size > available_disk) {
gchar *msg = g_strdup_printf (_KR("cerm_device_memory_full"), "");
modest_platform_system_banner (NULL, NULL, msg);
signature = modest_account_mgr_get_signature_from_recipient (mgr, recipient, &use_signature);
g_free (recipient);
if (body_str != NULL) {
- body = use_signature ? g_strconcat(body_str, "\n--\n", signature, NULL) : g_strdup(body_str);
+ body = use_signature ? g_strconcat(body_str, "\n",
+ MODEST_TEXT_UTILS_SIGNATURE_MARKER,
+ "\n", signature, NULL) : g_strdup(body_str);
} else {
- body = use_signature ? g_strconcat("\n--\n", signature, NULL) : g_strdup("");
+ body = use_signature ? g_strconcat("\n", MODEST_TEXT_UTILS_SIGNATURE_MARKER,
+ "\n", signature, NULL) : g_strdup("");
}
msg = modest_tny_msg_new (to_str, from_str, cc_str, bcc_str, subject_str, NULL, NULL, body, NULL, NULL, NULL);
error->code == TNY_SERVICE_ERROR_MESSAGE_NOT_AVAILABLE)) {
gchar *subject, *msg, *format = NULL;
TnyAccount *account;
- subject = tny_header_dup_subject (header);
+
+ subject = header?tny_header_dup_subject (header):NULL;
if (!subject)
subject = g_strdup (_("mail_va_no_subject"));
g_object_unref (parent_win);
}
-static gboolean
-is_memory_full_error (GError *error, ModestMailOperation *mail_op, gboolean *is_mmc)
-{
- gboolean enough_free_space = TRUE;
- GnomeVFSURI *cache_dir_uri;
- const gchar *cache_dir = NULL;
- GnomeVFSFileSize free_space;
- TnyAccountStore *acc_store;
-
- acc_store = TNY_ACCOUNT_STORE (modest_runtime_get_account_store ());
-
- if (is_mmc)
- *is_mmc = FALSE;
-
- /* Cache dir is different in case we're using an external storage (like MMC account) */
- if (mail_op) {
- TnyAccount *account = modest_mail_operation_get_account (mail_op);
- if (account) {
- if (modest_tny_account_is_memory_card_account (account)) {
- if (is_mmc)
- *is_mmc = TRUE;
- cache_dir = g_getenv (MODEST_MMC1_VOLUMEPATH_ENV);
- }
- g_object_unref (account);
- }
- }
-
- /* Get the default local cache dir */
- if (!cache_dir)
- cache_dir = tny_account_store_get_cache_dir (acc_store);
-
- cache_dir_uri = gnome_vfs_uri_new (cache_dir);
- if (cache_dir_uri) {
- 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;
- }
-}
-
-/* Shows an error if we're in memory full conditions. The #alternate
- parametter contains the error that will be shown if the memory full
- conditions happen in the mmc external storage */
-static gboolean
-check_memory_full_error (GtkWidget *parent_window, GError *err, const gchar *alternate)
-{
- gboolean is_mcc;
-
- if (err == NULL)
- return FALSE;
-
- if (is_memory_full_error (err, NULL, &is_mcc)) {
- if (is_mcc && alternate) {
- modest_platform_information_banner (parent_window, NULL, alternate);
- } else {
- gchar *msg = g_strdup_printf (_KR("cerm_device_memory_full"), "");
- modest_platform_information_banner (parent_window, NULL, msg);
- g_free (msg);
- }
- } 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)
/* 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, mail_op, NULL)) {
+ TnyAccount *account = modest_mail_operation_get_account (mail_op);
+ if (modest_tny_account_store_is_disk_full_error (modest_runtime_get_account_store(),
+ (GError *) error, account)) {
gchar *msg = g_strdup_printf (_KR("cerm_device_memory_full"), "");
modest_platform_information_banner ((GtkWidget *) win, NULL, msg);
g_free (msg);
modest_platform_information_banner ((GtkWidget *) win,
NULL, user_data);
}
+ if (account)
+ g_object_unref (account);
}
if (win)
/* Free the helper */
open_msg_helper_destroyer (helper);
- /* In memory full conditions we could get this error here */
- check_memory_full_error ((GtkWidget *) parent_window, err, NULL);
+ /* In disk full conditions we could get this error here */
+ modest_tny_account_store_check_disk_full_error (modest_runtime_get_account_store(),
+ (GtkWidget *) parent_window, err,
+ account, NULL);
goto clean;
}
info = (SendReceiveInfo *) user_data;
if (err || canceled) {
- /* In memory full conditions we could get this error here */
- check_memory_full_error ((GtkWidget *) parent_window, err, NULL);
+ /* In disk full conditions we could get this error here */
+ modest_tny_account_store_check_disk_full_error (modest_runtime_get_account_store(),
+ (GtkWidget *) parent_window, err,
+ account, NULL);
if (info->mail_op) {
modest_mail_operation_queue_remove (modest_runtime_get_mail_operation_queue (),
parts_count,
parts_size);
- /* Double check: memory full condition or message too big */
- if (available_disk < MIN_FREE_SPACE ||
+ /* Double check: disk full condition or message too big */
+ if (available_disk < MODEST_TNY_ACCOUNT_STORE_MIN_FREE_SPACE ||
expected_size > available_disk) {
gchar *msg = g_strdup_printf (_KR("cerm_device_memory_full"), "");
modest_platform_information_banner (NULL, NULL, msg);
error = modest_mail_operation_get_error (mail_op);
if (error) {
-
+ gboolean disk_full = FALSE;
+ TnyAccount *account;
/* Show an error. If there was some problem writing to
disk, show it, otherwise show the generic folder
create error. We do it here and not in an error
stop the main loop in a gtk_dialog_run and then,
the message won't be shown until that dialog is
closed */
- if (!check_memory_full_error ((GtkWidget *) source_win, (GError *) error,
- _("mail_in_ui_folder_create_error_memory"))) {
+ account = modest_mail_operation_get_account (mail_op);
+ if (account) {
+ disk_full =
+ modest_tny_account_store_check_disk_full_error (modest_runtime_get_account_store(),
+ (GtkWidget *) source_win,
+ (GError *) error,
+ account,
+ _("mail_in_ui_folder_create_error_memory"));
+ g_object_unref (account);
+ }
+ if (!disk_full) {
/* Show an error and try again if there is no
full memory condition */
modest_platform_information_banner ((GtkWidget *) source_win, NULL,
_("mail_in_ui_folder_create_error"));
do_create_folder (source_win, parent_folder, (const gchar *) suggested_name);
}
+
} else {
/* the 'source_win' is either the ModestMainWindow, or the 'Move to folder'-dialog
* FIXME: any other? */
ModestMailOperation *mail_op;
if (canceled || err) {
- /* In memory full conditions we could get this error here */
- check_memory_full_error ((GtkWidget *) parent_window, err,
- _("mail_in_ui_folder_create_error_memory"));
+ /* In disk full conditions we could get this error here */
+ modest_tny_account_store_check_disk_full_error (modest_runtime_get_account_store(),
+ (GtkWidget *) parent_window, err,
+ NULL, _("mail_in_ui_folder_create_error_memory"));
/* This happens if we have selected the outbox folder
as the parent */
const GError *error = NULL;
gchar *message = NULL;
gboolean mem_full;
+ TnyAccount *account = modest_mail_operation_get_account (mail_op);
/* Get error message */
error = modest_mail_operation_get_error (mail_op);
if (!error)
g_return_if_reached ();
- mem_full = is_memory_full_error ((GError *) error, mail_op, NULL);
+ mem_full = modest_tny_account_store_is_disk_full_error (modest_runtime_get_account_store(),
+ (GError *) error, account);
if (mem_full) {
message = g_strdup_printf (_KR("cerm_device_memory_full"), "");
} else if (error->domain == MODEST_MAIL_OPERATION_ERROR &&
will be destroyed so the banner won't appear */
modest_platform_information_banner (NULL, NULL, message);
+ if (account)
+ g_object_unref (account);
if (mem_full)
g_free (message);
}
RenameFolderInfo *data = (RenameFolderInfo*)user_data;
if (canceled || err) {
- /* In memory full conditions we could get this error here */
- check_memory_full_error ((GtkWidget *) parent_window, err, NULL);
+ /* In disk full conditions we could get this error here */
+ modest_tny_account_store_check_disk_full_error (modest_runtime_get_account_store(),
+ (GtkWidget *) parent_window, err,
+ account, NULL);
} else {
mail_op =
/* Note that the connection process can fail due to
memory low conditions as it can not successfully
store the summary */
- if (!check_memory_full_error ((GtkWidget*) parent_window, err, NULL))
+ if (!modest_tny_account_store_check_disk_full_error (modest_runtime_get_account_store(),
+ (GtkWidget*) parent_window, err,
+ account, NULL))
g_debug ("Error connecting when trying to delete a folder");
g_object_unref (G_OBJECT (info->folder));
g_free (info);
gpointer user_data)
{
GObject *win = NULL;
+ const GError *error;
+ TnyAccount *account;
#ifndef MODEST_TOOLKIT_HILDON2
ModestWindow *main_window = NULL;
/* Disable next automatic folder selection */
main_window = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (),
FALSE); /* don't create */
+
+ /* Show notification dialog only if the main window exists */
if (main_window) {
GtkWidget *folder_view = NULL;
}
}
#endif
- /* Show notification dialog only if the main window exists */
win = modest_mail_operation_get_source (mail_op);
- modest_platform_run_information_dialog ((GtkWindow *) win,
- _("mail_in_ui_folder_move_target_error"),
- FALSE);
+ error = modest_mail_operation_get_error (mail_op);
+ account = modest_mail_operation_get_account (mail_op);
+
+ /* If it's not a disk full error then show a generic error */
+ if (!modest_tny_account_store_check_disk_full_error (modest_runtime_get_account_store(),
+ (GtkWidget *) win, (GError *) error,
+ account, NULL))
+ modest_platform_run_information_dialog ((GtkWindow *) win,
+ _("mail_in_ui_folder_move_target_error"),
+ FALSE);
+ if (account)
+ g_object_unref (account);
if (win)
g_object_unref (win);
}
{
GObject *win;
const GError *error;
+ TnyAccount *account;
win = modest_mail_operation_get_source (mail_op);
error = modest_mail_operation_get_error (mail_op);
+ account = modest_mail_operation_get_account (mail_op);
- if (error && is_memory_full_error ((GError *) error, mail_op, NULL)) {
+ if (error && modest_tny_account_store_is_disk_full_error (modest_runtime_get_account_store(),
+ (GError *) error, account)) {
gchar *msg = g_strdup_printf (_KR("cerm_device_memory_full"), "");
modest_platform_information_banner ((GtkWidget *) win, NULL, msg);
g_free (msg);
_("mail_in_ui_folder_move_target_error"),
FALSE);
}
+ if (account)
+ g_object_unref (account);
if (win)
g_object_unref (win);
}
helper = (XferMsgsHelper *) user_data;
if (canceled || err) {
- if (!check_memory_full_error ((GtkWidget *) parent_window, err, NULL)) {
+ if (!modest_tny_account_store_check_disk_full_error (modest_runtime_get_account_store(),
+ (GtkWidget *) parent_window, err,
+ account, NULL)) {
/* Show the proper error message */
modest_ui_actions_on_account_connection_error (parent_window, account);
}
} MoveFolderInfo;
static void
-on_move_folder_cb (gboolean canceled, GError *err, GtkWindow *parent_window,
- TnyAccount *account, gpointer user_data)
+on_move_folder_cb (gboolean canceled,
+ GError *err,
+ GtkWindow *parent_window,
+ TnyAccount *account,
+ gpointer user_data)
{
MoveFolderInfo *info = (MoveFolderInfo*)user_data;
GtkTreeSelection *sel;
ModestMailOperation *mail_op = NULL;
if (canceled || err || !MODEST_IS_WINDOW (parent_window)) {
+ /* Note that the connection process can fail due to
+ memory low conditions as it can not successfully
+ store the summary */
+ if (!modest_tny_account_store_check_disk_full_error (modest_runtime_get_account_store(),
+ (GtkWidget*) parent_window, err,
+ account, NULL))
+ g_debug ("Error connecting when trying to move a folder");
+
g_object_unref (G_OBJECT (info->src_folder));
g_object_unref (G_OBJECT (info->dst_folder));
g_free (info);
TnyList *headers = TNY_LIST (user_data);
if (err || canceled) {
- check_memory_full_error ((GtkWidget *) parent_window, err, NULL);
+ modest_tny_account_store_check_disk_full_error (modest_runtime_get_account_store(),
+ (GtkWidget *) parent_window, err,
+ account, NULL);
goto out;
}