}
void
-modest_ui_actions_get_msgs_full_error_handler (ModestMailOperation *mail_op,
- gpointer user_data)
+modest_ui_actions_disk_operations_error_handler (ModestMailOperation *mail_op,
+ gpointer user_data)
{
const GError *error;
GObject *win = NULL;
TnyIterator *iter = tny_list_create_iterator (headers);
TnyHeader *header = TNY_HEADER (tny_iterator_get_current (iter));
TnyFolder *folder = tny_header_get_folder (header);
- account = tny_folder_get_account (folder);
- g_object_unref (folder);
- g_object_unref (header);
+
+ if (!folder) {
+ g_object_unref (header);
+
+ while (!tny_iterator_is_done (iter)) {
+ header = TNY_HEADER (tny_iterator_get_current (iter));
+ folder = tny_header_get_folder (header);
+ if (folder)
+ break;
+ g_object_unref (header);
+ header = NULL;
+ tny_iterator_next (iter);
+ }
+ }
+
+ if (folder) {
+ account = tny_folder_get_account (folder);
+ g_object_unref (folder);
+ }
+
+ if (header)
+ g_object_unref (header);
+
g_object_unref (iter);
}
return account;
/* Create the mail operation */
mail_op =
modest_mail_operation_new_with_error_handling ((GObject *) parent_window,
- modest_ui_actions_get_msgs_full_error_handler,
+ modest_ui_actions_disk_operations_error_handler,
error_msg, g_free);
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
mail_op);
/* Check that only one message is selected for opening */
if (tny_list_get_length (headers) != 1) {
- modest_platform_run_information_dialog ((win) ? GTK_WINDOW (win) : NULL,
- _("mcen_ib_select_one_message"));
+ modest_platform_information_banner ((win) ? GTK_WIDGET (win) : NULL,
+ NULL, _("mcen_ib_select_one_message"));
return;
}
/* Get the account */
account = get_account_from_header_list (headers);
-
+
+ if (!account)
+ return;
+
/* Look if we already have a message view for each header. If
true, then remove the header from the list of headers to
open */
* whether he/she wants to download them. */
if (num_of_unc_msgs) {
TnyAccount *account = get_account_from_header_list (header_list);
- continue_download = connect_to_get_msg (win, num_of_unc_msgs, account);
- g_object_unref (account);
+ if (account) {
+ continue_download = connect_to_get_msg (win, num_of_unc_msgs, account);
+ g_object_unref (account);
+ }
}
}
if (do_retrieve) {
mail_op =
modest_mail_operation_new_with_error_handling (G_OBJECT(win),
- modest_ui_actions_get_msgs_full_error_handler,
+ modest_ui_actions_disk_operations_error_handler,
NULL, NULL);
modest_mail_operation_queue_add (
modest_runtime_get_mail_operation_queue (), mail_op);
TnyAccount *account;
ModestWindow *win;
gchar *account_name;
+ gboolean poke_status;
} SendReceiveInfo;
static void
/* 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->win) ? FALSE : TRUE,
+ modest_mail_operation_update_account (mail_op, info->account_name, info->poke_status,
(info->win) ? retrieve_all_messages_cb : NULL,
new_messages_arrived, info->win);
g_object_unref (G_OBJECT (mail_op));
void
modest_ui_actions_do_send_receive (const gchar *account_name,
gboolean force_connection,
+ gboolean poke_status,
ModestWindow *win)
{
gchar *acc_name = NULL;
info = g_slice_new (SendReceiveInfo);
info->account_name = acc_name;
info->win = (win) ? g_object_ref (win) : NULL;
+ info->poke_status = poke_status;
info->account = modest_tny_account_store_get_server_account (acc_store, acc_name,
TNY_ACCOUNT_TYPE_STORE);
*/
void
modest_ui_actions_do_send_receive_all (ModestWindow *win,
- gboolean force_connection)
+ gboolean force_connection,
+ gboolean poke_status)
{
GSList *account_names, *iter;
iter = account_names;
while (iter) {
- modest_ui_actions_do_send_receive ((const char*) iter->data, force_connection, win);
+ modest_ui_actions_do_send_receive ((const char*) iter->data,
+ force_connection,
+ poke_status, win);
iter = g_slist_next (iter);
}
g_object_unref (folder_store);
}
- /* Refresh the active account. Force the connection if needed */
- modest_ui_actions_do_send_receive (NULL, TRUE, win);
+ /* Refresh the active account. Force the connection if needed
+ and poke the status of all folders */
+ modest_ui_actions_do_send_receive (NULL, TRUE, TRUE, win);
}
edit_window = MODEST_MSG_EDIT_WINDOW (user_data);
- /* It might not be a good idea to do nothing if there was an error,
- * so let's at least show a generic error banner. */
- /* TODO error while saving attachment, show "Saving draft failed" banner */
- if (modest_mail_operation_get_error (mail_op) != NULL) {
- g_warning ("%s failed: %s\n", __FUNCTION__, (modest_mail_operation_get_error (mail_op))->message);
- modest_platform_information_banner (NULL, NULL, _("mail_ib_file_operation_failed"));
- } else {
+ /* Set draft is there was no error */
+ if (!modest_mail_operation_get_error (mail_op))
modest_msg_edit_window_set_draft (edit_window, saved_draft);
- }
+
g_object_unref(edit_window);
}
from = modest_account_mgr_get_from_string (account_mgr, account_name);
/* Create the mail operation */
- mail_operation = modest_mail_operation_new (NULL);
+ 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_save_to_drafts (mail_operation,
GtkWindow *source_win = (GtkWindow *) modest_mail_operation_get_source (mail_op);
if (modest_mail_operation_get_error (mail_op)) {
- /* Show an error */
- modest_platform_information_banner (GTK_WIDGET (source_win), NULL,
- _("mail_in_ui_folder_create_error"));
- /* Try again */
+ /* 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
+ handler because the call to do_create_folder will
+ stop the main loop in a gtk_dialog_run and then,
+ the message won't be shown until that dialog is
+ closed */
+ modest_ui_actions_disk_operations_error_handler (mail_op,
+ _("mail_in_ui_folder_create_error"));
+
+ /* Try again. Do *NOT* show any error because the mail
+ operations system will do it for us because we
+ created the mail_op with new_with_error_handler */
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
if (result == GTK_RESPONSE_ACCEPT) {
ModestMailOperation *mail_op;
- mail_op = modest_mail_operation_new (G_OBJECT(parent_window));
-
+ mail_op = modest_mail_operation_new (NULL);
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
mail_op);
modest_mail_operation_create_folder (mail_op,
if (num_of_unc_msgs) {
TnyAccount *account = get_account_from_header_list (header_list);
- continue_download = connect_to_get_msg (window, num_of_unc_msgs, account);
- g_object_unref (account);
+ if (account) {
+ continue_download = connect_to_get_msg (window, num_of_unc_msgs, account);
+ g_object_unref (account);
+ }
}
if (num_of_unc_msgs == 0 || continue_download) {
if (num_of_unc_msgs) {
TnyAccount *account = get_account_from_header_list (header_list);
- continue_download = connect_to_get_msg (window, num_of_unc_msgs, account);
- g_object_unref (account);
+ if (account) {
+ continue_download = connect_to_get_msg (window, num_of_unc_msgs, account);
+ g_object_unref (account);
+ }
}
if (num_of_unc_msgs == 0 || continue_download) {
ModestMailOperation *mail_op = NULL;
modest_window_mgr_register_header (modest_runtime_get_window_mgr (), header, NULL);
mail_op = modest_mail_operation_new_with_error_handling (G_OBJECT (win),
- modest_ui_actions_get_msgs_full_error_handler,
+ 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);
/* Create mail operation */
mail_op = modest_mail_operation_new_with_error_handling ((GObject *) parent_window,
- modest_ui_actions_get_msgs_full_error_handler,
+ 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_msgs_full (mail_op, headers, NULL, NULL, NULL);