X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=a1f80f455803e4837b85e492792d794632c52d78;hb=db329bbc15f5321258569ac131513417ddaa40d3;hp=f0f81cbd03a3a5ab88b900f74680a5c27314f7d5;hpb=b883a12cf51a083b38e5b17fc9e3553fac691ce7;p=modest diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index f0f81cb..a1f80f4 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -1163,20 +1164,39 @@ cleanup: } static gboolean -is_memory_full_error (GError *error) +is_memory_full_error (GError *error, ModestMailOperation *mail_op) { gboolean enough_free_space = TRUE; GnomeVFSURI *cache_dir_uri; - const gchar *cache_dir; + const gchar *cache_dir = NULL; GnomeVFSFileSize free_space; + TnyAccountStore *acc_store; + + acc_store = TNY_ACCOUNT_STORE (modest_runtime_get_account_store ()); + + /* 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)) { + 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 = 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; + 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); } - 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 @@ -1199,7 +1219,7 @@ check_memory_full_error (GtkWidget *parent_window, GError *err) if (err == NULL) return FALSE; - if (is_memory_full_error (err)) + if (is_memory_full_error (err, NULL)) modest_platform_information_banner (parent_window, NULL, _KR("cerm_device_memory_full")); else if (err->code == TNY_SYSTEM_ERROR_MEMORY) @@ -1229,7 +1249,7 @@ modest_ui_actions_disk_operations_error_handler (ModestMailOperation *mail_op, /* 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)) { + if (is_memory_full_error ((GError *) error, mail_op)) { modest_platform_information_banner ((GtkWidget *) win, NULL, _KR("cerm_device_memory_full")); } else if (error->code == TNY_SYSTEM_ERROR_MEMORY) { @@ -2068,12 +2088,12 @@ modest_ui_actions_on_sort (GtkAction *action, if (!header_view) { modest_platform_information_banner (NULL, NULL, _CS("ckdg_ib_nothing_to_sort")); - + return; } /* Show sorting dialog */ - modest_utils_run_sort_dialog (GTK_WINDOW (window), MODEST_SORT_HEADERS); + modest_utils_run_sort_dialog (GTK_WINDOW (window), MODEST_SORT_HEADERS); } static void @@ -3382,7 +3402,7 @@ do_create_folder (GtkWindow *parent_window, &parent_folder); if (result == GTK_RESPONSE_ACCEPT && parent_folder) { - CreateFolderConnect *helper = (CreateFolderConnect *) g_slice_new0 (CreateFolderHelper); + CreateFolderConnect *helper = (CreateFolderConnect *) g_slice_new0 (CreateFolderConnect); helper->folder_name = g_strdup (folder_name); helper->parent = g_object_ref (parent_folder); @@ -3416,8 +3436,10 @@ modest_ui_actions_create_folder(GtkWidget *parent_window, parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view)); #endif - if (parent_folder) + if (parent_folder) { do_create_folder (GTK_WINDOW (parent_window), parent_folder, NULL); + g_object_unref (parent_folder); + } } void @@ -4900,36 +4922,43 @@ on_move_to_dialog_response (GtkDialog *dialog, gint response, gpointer user_data) { - GtkWidget *parent_win, *folder_view; + GtkWidget *parent_win; MoveToInfo *helper = NULL; + ModestFolderView *folder_view; helper = (MoveToInfo *) user_data; parent_win = (GtkWidget *) helper->win; - folder_view = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), - MODEST_MOVE_TO_DIALOG_FOLDER_VIEW)); + folder_view = MODEST_FOLDER_VIEW (g_object_get_data (G_OBJECT (dialog), + MODEST_MOVE_TO_DIALOG_FOLDER_VIEW)); switch (response) { TnyFolderStore *dst_folder; case MODEST_GTK_RESPONSE_NEW_FOLDER: - modest_ui_actions_create_folder (GTK_WIDGET (dialog), folder_view); + modest_ui_actions_create_folder (GTK_WIDGET (dialog), GTK_WIDGET (folder_view)); return; case GTK_RESPONSE_NONE: case GTK_RESPONSE_CANCEL: case GTK_RESPONSE_DELETE_EVENT: break; case GTK_RESPONSE_OK: - dst_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view)); - /* Do window specific stuff */ + dst_folder = modest_folder_view_get_selected (folder_view); + if (MODEST_IS_MAIN_WINDOW (parent_win)) { + /* Clean list to move used for filtering */ + modest_folder_view_set_list_to_move (folder_view, NULL); + modest_ui_actions_on_main_window_move_to (NULL, - folder_view, + GTK_WIDGET (folder_view), dst_folder, MODEST_MAIN_WINDOW (parent_win)); #ifdef MODEST_TOOLKIT_HILDON2 } else if (MODEST_IS_FOLDER_WINDOW (parent_win)) { - modest_ui_actions_on_folder_window_move_to (folder_view, + /* Clean list to move used for filtering */ + modest_folder_view_set_list_to_move (folder_view, NULL); + + modest_ui_actions_on_folder_window_move_to (GTK_WIDGET (folder_view), dst_folder, helper->list, GTK_WINDOW (parent_win)); @@ -4942,6 +4971,9 @@ on_move_to_dialog_response (GtkDialog *dialog, return; } + /* Clean list to move used for filtering */ + modest_folder_view_set_list_to_move (folder_view, NULL); + /* Moving from headers window in edit mode */ modest_ui_actions_on_window_move_to (NULL, helper->list, dst_folder, @@ -5464,7 +5496,7 @@ xfer_messages_error_handler (ModestMailOperation *mail_op, win = modest_mail_operation_get_source (mail_op); error = modest_mail_operation_get_error (mail_op); - if (error && is_memory_full_error ((GError *) error)) + if (error && is_memory_full_error ((GError *) error, mail_op)) modest_platform_information_banner ((GtkWidget *) win, NULL, _KR("cerm_device_memory_full")); else