#include <gtkhtml/gtkhtml.h>
+#define MIN_FREE_SPACE 5 * 1024 * 1024
+
typedef struct _GetMsgAsyncHelper {
ModestWindow *window;
ModestMailOperation *mail_op;
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 */
+ 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));
dialog_response = gtk_dialog_run (GTK_DIALOG (wizard));
gtk_widget_destroy (GTK_WIDGET (wizard));
/* 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)) {
}
/* 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);
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 ||
+ 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) {
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;
}
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;
}
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;
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 (
/* 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));
}
return;
children = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area));
+#ifdef MODEST_PLATFORM_MAEMO
ok_button = GTK_WIDGET (children->next->next->data);
new_button = GTK_WIDGET (children->next->data);
+#else
+ ok_button = GTK_WIDGET (children->data);
+ new_button = GTK_WIDGET (children->next->next->data);
+#endif
g_list_free (children);
/* check if folder_store is an remote account */
GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT,
NULL);
+#ifdef MODEST_PLATFORM_MAEMO
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_dialog_add_button (GTK_DIALOG (dialog), _("mcen_bd_dialog_cancel"), GTK_RESPONSE_REJECT);
+#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);
+ 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
/* Create scrolled window */
scroll = gtk_scrolled_window_new (NULL, NULL);
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
+#ifndef MODEST_PLATFORM_MAEMO
+ 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);
scroll, TRUE, TRUE, 0);
gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
+#ifdef MODEST_PLATFORM_MAEMO
gtk_window_set_default_size (GTK_WINDOW (dialog), 300, 300);
+#else
+ gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 400);
+#endif
return dialog;
}
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);
}
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;
}