X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=9106f02a4c465791560007eb7fdb33a308fc2cf9;hp=3cef81bd6c21e4f73e757cee4c296d7a78db74bf;hb=9e9270d41262032e6a6a6e35cdc0da60eda54a34;hpb=e422cdb3165a24a2cbd2f640dc9784f06835223d diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 3cef81b..9106f02 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -164,11 +164,6 @@ static GtkWidget* get_folder_view_from_move_to_dialog (GtkWidget *move_to_dialog static TnyAccount *get_account_from_folder_store (TnyFolderStore *folder_store); -static void transfer_messages_helper (GtkWindow *win, - TnyFolder *src_folder, - TnyList *headers, - TnyFolder *dst_folder); - /* * This function checks whether a TnyFolderStore is a pop account */ @@ -531,7 +526,7 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win) if (prev_row_reference != NULL) gtk_tree_row_reference_free (prev_row_reference); if (prev_path != NULL) - gtk_tree_path_free (prev_path); + gtk_tree_path_free (prev_path); } /* Update toolbar dimming state */ @@ -653,7 +648,6 @@ modest_ui_actions_on_accounts (GtkAction *action, } else { /* Show the list of accounts */ GtkWindow *account_win = GTK_WINDOW (modest_account_view_window_new ()); - gtk_window_set_transient_for (account_win, GTK_WINDOW (win)); /* The accounts dialog must be modal */ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), account_win); @@ -718,6 +712,13 @@ modest_ui_actions_compose_msg(ModestWindow *win, ModestWindow *msg_win = NULL; ModestAccountMgr *mgr = modest_runtime_get_account_mgr(); 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)) + goto cleanup; account_name = modest_account_mgr_get_default_account(mgr); if (!account_name) { @@ -747,7 +748,7 @@ modest_ui_actions_compose_msg(ModestWindow *win, body = use_signature ? g_strconcat("\n", signature, NULL) : g_strdup(""); } - msg = modest_tny_msg_new (to_str, from_str, cc_str, bcc_str, subject_str, body, NULL); + msg = modest_tny_msg_new (to_str, from_str, cc_str, bcc_str, subject_str, body, NULL, NULL); if (!msg) { g_printerr ("modest: failed to create new msg\n"); goto cleanup; @@ -755,10 +756,22 @@ modest_ui_actions_compose_msg(ModestWindow *win, /* Create and register edit window */ /* This is destroyed by TODO. */ + total_size = 0; + allowed_size = MODEST_MAX_ATTACHMENT_SIZE; msg_win = modest_msg_edit_window_new (msg, account_name, FALSE); while (attachments) { - modest_msg_edit_window_attach_file_one((ModestMsgEditWindow *)msg_win, - attachments->data); + total_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", + __FUNCTION__, (unsigned int)total_size); + break; + } + allowed_size -= total_size; + attachments = g_slist_next(attachments); } modest_window_mgr_register_window (modest_runtime_get_window_mgr(), msg_win); @@ -771,10 +784,14 @@ cleanup: g_free (signature); g_free (body); g_free (account_name); - if (account) 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)); + if (account) + 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)); } void @@ -831,7 +848,8 @@ open_msg_banner_idle (gpointer userdata) gdk_threads_enter (); banner_info->idle_handler = 0; banner_info->banner = modest_platform_animation_banner (NULL, NULL, banner_info->message); - g_object_ref (banner_info->banner); + if (banner_info) + g_object_ref (banner_info->banner); gdk_threads_leave (); @@ -886,7 +904,7 @@ open_msg_cb (ModestMailOperation *mail_op, char *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); + send_queue = modest_runtime_get_send_queue(traccount, TRUE); msg_id = modest_tny_send_queue_get_msg_id (header); status = modest_tny_send_queue_get_msg_status(send_queue, msg_id); /* Only open messages in outbox with the editor if they are in Failed state */ @@ -927,17 +945,28 @@ open_msg_cb (ModestMailOperation *mail_op, if (from_header) { GSList *accounts = modest_account_mgr_account_names (mgr, TRUE); GSList *node = NULL; + gchar *from_header_email; + + from_header_email = modest_text_utils_get_email_address ((const gchar *) from_header); + for (node = accounts; node != NULL; node = g_slist_next (node)) { - gchar *from = modest_account_mgr_get_from_string (mgr, node->data); + gchar *from, *from_email; - if (from && (strcmp (from_header, from) == 0)) { - g_free (account); - account = g_strdup (node->data); + from = modest_account_mgr_get_from_string (mgr, node->data); + if (from) { + from_email = modest_text_utils_get_email_address ((const gchar *) from); + if (strcmp (from_header_email, from_email) == 0) { + g_free (account); + account = g_strdup (node->data); + g_free (from_email); + g_free (from); + break; + } + g_free (from_email); g_free (from); - break; } - g_free (from); } + g_free (from_header_email); g_free (from_header); g_slist_foreach (accounts, (GFunc) g_free, NULL); g_slist_free (accounts); @@ -1014,6 +1043,9 @@ modest_ui_actions_disk_operations_error_handler (ModestMailOperation *mail_op, modest_platform_information_banner ((GtkWidget *) win, NULL, dgettext("ke-recv", "cerm_device_memory_full")); + } else if (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) { modest_platform_information_banner ((GtkWidget *) win, NULL, user_data); @@ -1381,6 +1413,12 @@ void modest_ui_actions_on_open (GtkAction *action, ModestWindow *win) { TnyList *headers; + + /* we check for low-mem; in that case, show a warning, and don't allow + * opening + */ + if (modest_platform_check_memory_low (MODEST_WINDOW(win))) + return; /* Get headers */ headers = get_selected_headers (win); @@ -1574,6 +1612,13 @@ reply_forward (ReplyForwardAction action, ModestWindow *win) g_return_if_fail (MODEST_IS_WINDOW(win)); + + /* we check for low-mem; in that case, show a warning, and don't allow + * reply/forward (because it could potentially require a lot of memory */ + if (modest_platform_check_memory_low (MODEST_WINDOW(win))) + return; + + /* we need an account when editing */ if (!modest_account_mgr_has_accounts(modest_runtime_get_account_mgr(), TRUE)) { if (!modest_ui_actions_run_account_setup_wizard (win)) @@ -1669,6 +1714,7 @@ reply_forward (ReplyForwardAction action, ModestWindow *win) modest_mail_operation_get_msg (mail_op, header, + TRUE, reply_forward_cb, rf_helper); /* Clean */ @@ -1963,7 +2009,7 @@ modest_ui_actions_do_cancel_send (const gchar *account_name, } /* Get send queue*/ - send_queue = TNY_SEND_QUEUE (modest_runtime_get_send_queue (transport_account)); + send_queue = TNY_SEND_QUEUE (modest_runtime_get_send_queue (transport_account, TRUE)); if (!TNY_IS_SEND_QUEUE(send_queue)) { g_set_error (&error, MODEST_MAIL_OPERATION_ERROR, MODEST_MAIL_OPERATION_ERROR_ITEM_NOT_FOUND, @@ -2155,6 +2201,7 @@ modest_ui_actions_on_header_activated (ModestHeaderView *header_view, ModestMainWindow *main_window) { TnyList *headers; + GtkWidget *open_widget; g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window)); @@ -2166,6 +2213,16 @@ modest_ui_actions_on_header_activated (ModestHeaderView *header_view, return; } + /* we check for low-mem; in that case, show a warning, and don't allow + * activating headers + */ + if (modest_platform_check_memory_low (MODEST_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 = tny_simple_list_new (); */ /* tny_list_prepend (headers, G_OBJECT (header)); */ @@ -2392,7 +2449,13 @@ modest_ui_actions_on_msg_link_contextual (ModestMsgView *msgview, const gchar* l void modest_ui_actions_on_msg_attachment_clicked (ModestMsgView *msgview, TnyMimePart *mime_part, ModestWindow *win) -{ +{ + /* we check for low-mem; in that case, show a warning, and don't allow + * viewing attachments + */ + if (modest_platform_check_memory_low (MODEST_WINDOW(win))) + return; + modest_msg_view_window_view_attachment (MODEST_MSG_VIEW_WINDOW (win), mime_part); } @@ -2466,6 +2529,35 @@ modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edi return FALSE; } + /* + * djcb: if we're in low-memory state, we only allow for + * saving 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))) { + 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; + } + account_name = g_strdup (data->account_name); account_mgr = modest_runtime_get_account_mgr(); if (!account_name) @@ -2608,6 +2700,34 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) 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))) { + 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); if (!account_name) @@ -2641,7 +2761,7 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) gchar *from = modest_account_mgr_get_from_string (account_mgr, account_name); /* Create the mail operation */ - ModestMailOperation *mail_operation = modest_mail_operation_new (NULL); + ModestMailOperation *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, @@ -2808,6 +2928,10 @@ modest_ui_actions_on_insert_image (GtkAction *action, g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); g_return_if_fail (GTK_IS_ACTION (action)); + + if (modest_platform_check_memory_low (MODEST_WINDOW(window))) + return; + if (modest_msg_edit_window_get_format (MODEST_MSG_EDIT_WINDOW(window)) == MODEST_MSG_EDIT_FORMAT_TEXT) return; @@ -2821,6 +2945,9 @@ modest_ui_actions_on_attach_file (GtkAction *action, g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); g_return_if_fail (GTK_IS_ACTION (action)); + if (modest_platform_check_memory_low (MODEST_WINDOW(window))) + return; + modest_msg_edit_window_offer_attach_file (window); } @@ -3009,6 +3136,11 @@ on_rename_folder_cb (ModestMailOperation *mail_op, { ModestFolderView *folder_view; + /* If the window was closed when renaming a folder this could + happen */ + if (!MODEST_IS_FOLDER_VIEW (user_data)) + return; + folder_view = MODEST_FOLDER_VIEW (user_data); /* Note that if the rename fails new_folder will be NULL */ if (new_folder) { @@ -3016,6 +3148,7 @@ on_rename_folder_cb (ModestMailOperation *mail_op, } else { modest_folder_view_select_first_inbox_or_local (folder_view); } + gtk_widget_grab_focus (GTK_WIDGET (folder_view)); } static void @@ -3248,6 +3381,30 @@ modest_ui_actions_on_move_folder_to_trash_folder (GtkAction *action, ModestMainW } +typedef struct _PasswordDialogFields { + GtkWidget *username; + GtkWidget *password; + GtkWidget *dialog; +} PasswordDialogFields; + +static void +password_dialog_check_field (GtkEditable *editable, + PasswordDialogFields *fields) +{ + const gchar *value; + gboolean any_value_empty = FALSE; + + value = gtk_entry_get_text (GTK_ENTRY (fields->username)); + if ((value == NULL) || value[0] == '\0') { + any_value_empty = TRUE; + } + value = gtk_entry_get_text (GTK_ENTRY (fields->password)); + if ((value == NULL) || value[0] == '\0') { + any_value_empty = TRUE; + } + gtk_dialog_set_response_sensitive (GTK_DIALOG (fields->dialog), GTK_RESPONSE_ACCEPT, !any_value_empty); +} + void modest_ui_actions_on_password_requested (TnyAccountStore *account_store, const gchar* server_account_name, @@ -3259,6 +3416,7 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store, { g_return_if_fail(server_account_name); gboolean completed = FALSE; + PasswordDialogFields *fields = NULL; /* Initalize output parameters: */ if (cancel) @@ -3319,11 +3477,16 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store, gtk_entry_set_text (GTK_ENTRY (entry_username), initial_username); /* Dim this if a connection has ever succeeded with this username, * as per the UI spec: */ - const gboolean username_known = - modest_account_mgr_get_server_account_username_has_succeeded( - modest_runtime_get_account_mgr(), server_account_name); - gtk_widget_set_sensitive (entry_username, !username_known); - + /* const gboolean username_known = */ + /* modest_account_mgr_get_server_account_username_has_succeeded( */ + /* modest_runtime_get_account_mgr(), server_account_name); */ + /* gtk_widget_set_sensitive (entry_username, !username_known); */ + + /* We drop the username sensitive code and disallow changing it here + * as tinymail does not support really changing the username in the callback + */ + gtk_widget_set_sensitive (entry_username, FALSE); + #ifdef MODEST_PLATFORM_MAEMO /* 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); @@ -3375,6 +3538,15 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store, TRUE, FALSE, 0); */ + fields = g_slice_new0 (PasswordDialogFields); + fields->username = entry_username; + fields->password = entry_password; + fields->dialog = dialog; + + g_signal_connect (entry_username, "changed", G_CALLBACK (password_dialog_check_field), fields); + g_signal_connect (entry_password, "changed", G_CALLBACK (password_dialog_check_field), fields); + password_dialog_check_field (NULL, fields); + gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox)); while (!completed) { @@ -3438,6 +3610,7 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store, */ gtk_widget_destroy (dialog); + g_slice_free (PasswordDialogFields, fields); /* printf ("DEBUG: %s: cancel=%d\n", __FUNCTION__, *cancel); */ } @@ -3617,8 +3790,10 @@ paste_as_attachment_free (gpointer data) { PasteAsAttachmentHelper *helper = (PasteAsAttachmentHelper *) data; - gtk_widget_destroy (helper->banner); - g_object_unref (helper->banner); + if (helper->banner) { + gtk_widget_destroy (helper->banner); + g_object_unref (helper->banner); + } g_free (helper); } @@ -3672,7 +3847,6 @@ modest_ui_actions_on_paste (GtkAction *action, mail_op = modest_mail_operation_new (G_OBJECT (window)); if (helper->banner != NULL) { g_object_ref (G_OBJECT (helper->banner)); - gtk_window_set_modal (GTK_WINDOW (helper->banner), FALSE); gtk_widget_show (GTK_WIDGET (helper->banner)); } @@ -4405,40 +4579,6 @@ create_move_to_dialog (GtkWindow *win, return dialog; } -/* - * Returns TRUE if at least one of the headers of the list belongs to - * a message that has been fully retrieved. - */ -#if 0 /* no longer in use. delete in 2007.10 */ -static gboolean -has_retrieved_msgs (TnyList *list) -{ - TnyIterator *iter; - gboolean found = FALSE; - - iter = tny_list_create_iterator (list); - while (!tny_iterator_is_done (iter) && !found) { - TnyHeader *header; - TnyHeaderFlags flags = 0; - - header = TNY_HEADER (tny_iterator_get_current (iter)); - if (header) { - flags = tny_header_get_flags (header); - if (flags & TNY_HEADER_FLAG_CACHED) -/* if (!(flags & TNY_HEADER_FLAG_PARTIAL)) */ - found = TRUE; - - g_object_unref (header); - } - - if (!found) - tny_iterator_next (iter); - } - g_object_unref (iter); - - return found; -} -#endif /* 0 */ /* @@ -4542,8 +4682,10 @@ move_to_cb (ModestMailOperation *mail_op, } /* Close the "Pasting" information banner */ - gtk_widget_destroy (GTK_WIDGET(helper->banner)); - g_object_unref (helper->banner); + if (helper->banner) { + gtk_widget_destroy (GTK_WIDGET(helper->banner)); + g_object_unref (helper->banner); + } if (helper->reference != NULL) gtk_tree_row_reference_free (helper->reference); g_free (helper); @@ -4738,7 +4880,7 @@ modest_ui_actions_on_main_window_remove_attachments (GtkAction *action, modest_ui_actions_disk_operations_error_handler, NULL, NULL); modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op); - modest_mail_operation_get_msg (mail_op, header, open_msg_for_purge_cb, win); + modest_mail_operation_get_msg (mail_op, header, FALSE, open_msg_for_purge_cb, win); g_object_unref (mail_op); } @@ -4894,10 +5036,9 @@ xfer_messages_performer (gboolean canceled, headers = get_selected_headers (MODEST_WINDOW (win)); if (!headers) { g_warning ("%s: no headers selected", __FUNCTION__); - return; + goto end; } - if (dst_is_pop) { modest_platform_information_banner (GTK_WIDGET (win), NULL, @@ -4905,7 +5046,7 @@ xfer_messages_performer (gboolean canceled, "mail_in_ui_folder_move_targets_error", tny_list_get_length (headers))); g_object_unref (headers); - return; + goto end; } MoveToHelper *helper = g_new0 (MoveToHelper, 1); @@ -4913,7 +5054,6 @@ xfer_messages_performer (gboolean canceled, _CS("ckct_nw_pasting")); if (helper->banner != NULL) { g_object_ref (helper->banner); - gtk_window_set_modal (GTK_WINDOW(helper->banner), FALSE); gtk_widget_show (GTK_WIDGET(helper->banner)); } @@ -4971,7 +5111,6 @@ on_move_folder_cb (gboolean canceled, GError *err, GtkWindow *parent_window, _CS("ckct_nw_pasting")); if (helper->banner != NULL) { g_object_ref (helper->banner); - gtk_window_set_modal (GTK_WINDOW(helper->banner), FALSE); gtk_widget_show (GTK_WIDGET(helper->banner)); } /* Clean folder on header view before moving it */ @@ -5085,8 +5224,8 @@ modest_ui_actions_on_main_window_move_to (GtkAction *action, headers = modest_header_view_get_selected_headers(header_view); /* Transfer the messages */ - transfer_messages_helper (GTK_WINDOW (win), TNY_FOLDER (src_folder), - headers, TNY_FOLDER (dst_folder)); + modest_ui_actions_transfer_messages_helper (GTK_WINDOW (win), TNY_FOLDER (src_folder), + headers, TNY_FOLDER (dst_folder)); g_object_unref (headers); } @@ -5096,11 +5235,11 @@ modest_ui_actions_on_main_window_move_to (GtkAction *action, } -static void -transfer_messages_helper (GtkWindow *win, - TnyFolder *src_folder, - TnyList *headers, - TnyFolder *dst_folder) +void +modest_ui_actions_transfer_messages_helper (GtkWindow *win, + TnyFolder *src_folder, + TnyList *headers, + TnyFolder *dst_folder) { gboolean need_connection = TRUE; gboolean do_xfer = TRUE; @@ -5126,8 +5265,7 @@ transfer_messages_helper (GtkWindow *win, } else { TnyAccount *src_account = get_account_from_folder_store (TNY_FOLDER_STORE (src_folder)); xfer_messages_performer (FALSE, NULL, GTK_WINDOW (win), - src_account, - g_object_ref (dst_folder)); + src_account, g_object_ref (dst_folder)); g_object_unref (src_account); } } @@ -5154,8 +5292,8 @@ modest_ui_actions_on_msg_view_window_move_to (GtkAction *action, tny_list_append (headers, G_OBJECT (header)); /* Transfer the messages */ - transfer_messages_helper (GTK_WINDOW (win), src_folder, headers, - TNY_FOLDER (dst_folder)); + modest_ui_actions_transfer_messages_helper (GTK_WINDOW (win), src_folder, headers, + TNY_FOLDER (dst_folder)); /* Frees */ g_object_unref (header); @@ -5279,6 +5417,10 @@ modest_ui_actions_save_attachments (GtkAction *action, ModestWindow *window) { if (MODEST_IS_MSG_VIEW_WINDOW (window)) { + + if (modest_platform_check_memory_low (MODEST_WINDOW(window))) + return; + modest_msg_view_window_save_attachments (MODEST_MSG_VIEW_WINDOW (window), NULL); } else { /* not supported window for this action */ @@ -5514,6 +5656,12 @@ modest_ui_actions_on_search_messages (GtkAction *action, ModestWindow *window) { g_return_if_fail (MODEST_IS_WINDOW (window)); + /* we check for low-mem; in that case, show a warning, and don't allow + * searching + */ + if (modest_platform_check_memory_low (window)) + return; + modest_platform_show_search_messages (GTK_WINDOW (window)); } @@ -5521,6 +5669,15 @@ void modest_ui_actions_on_open_addressbook (GtkAction *action, ModestWindow *win) { g_return_if_fail (MODEST_IS_WINDOW (win)); + + + /* we check for low-mem; in that case, show a warning, and don't allow + * for the addressbook + */ + if (modest_platform_check_memory_low (win)) + return; + + modest_platform_show_addressbook (GTK_WINDOW (win)); }