X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=77121731568205d76e7ce3fbafacee36dda057f3;hp=6c9824eee8cc5b3c390005e8d245423b40d1a05f;hb=d35c9918f4df9384dee13049f7d3344a47227f22;hpb=8d1d90e8e43c0b801f89d1ecaf14679437843e16 diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 6c9824e..7712173 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -733,7 +733,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, NULL); + msg = modest_tny_msg_new (to_str, from_str, cc_str, bcc_str, subject_str, body, NULL, NULL, NULL); if (!msg) { g_printerr ("modest: failed to create new msg\n"); goto cleanup; @@ -902,13 +902,15 @@ open_msg_cb (ModestMailOperation *mail_op, 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, 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 */ - if (status == MODEST_TNY_SEND_QUEUE_FAILED) { - open_in_editor = TRUE; + if (TNY_IS_SEND_QUEUE (send_queue)) { + 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 */ + if (status == MODEST_TNY_SEND_QUEUE_FAILED) { + open_in_editor = TRUE; + } + g_free(msg_id); } - g_free(msg_id); g_object_unref(traccount); } else { g_warning("Cannot get transport account for message in outbox!!"); @@ -1357,7 +1359,7 @@ open_msgs_from_headers (TnyList *headers, ModestWindow *win) } } } - + /* Register the headers before actually creating the windows: */ iter_not_opened = tny_list_create_iterator (not_opened_headers); while (!tny_iterator_is_done (iter_not_opened)) { @@ -2256,8 +2258,6 @@ modest_ui_actions_on_header_activated (ModestHeaderView *header_view, if (!GTK_WIDGET_IS_SENSITIVE (open_widget)) return; -/* headers = tny_simple_list_new (); */ -/* tny_list_prepend (headers, G_OBJECT (header)); */ headers = modest_header_view_get_selected_headers (header_view); open_msgs_from_headers (headers, MODEST_WINDOW (main_window)); @@ -3159,6 +3159,11 @@ modest_ui_actions_rename_folder_error_handler (ModestMailOperation *mail_op, case MODEST_MAIL_OPERATION_ERROR_FOLDER_EXISTS: message = _CS("ckdg_ib_folder_already_exists"); break; + case 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: message = _("emev_ib_ui_imap_unable_to_rename"); } @@ -5042,6 +5047,11 @@ xfer_messages_error_handler (ModestMailOperation *mail_op, move_to_helper_destroyer (user_data); } +typedef struct { + TnyFolderStore *dst_folder; + TnyList *headers; +} XferMsgsHelper; + /** * Utility function that transfer messages from both the main window * and the msg view window when using the "Move to" dialog @@ -5053,12 +5063,15 @@ xfer_messages_performer (gboolean canceled, TnyAccount *account, gpointer user_data) { - TnyFolderStore *dst_folder = TNY_FOLDER_STORE (user_data); ModestWindow *win = MODEST_WINDOW (parent_window); - TnyList *headers = NULL; TnyAccount *dst_account = NULL; const gchar *proto_str = NULL; gboolean dst_is_pop = FALSE; + XferMsgsHelper *helper; + MoveToHelper *movehelper; + ModestMailOperation *mail_op; + + helper = (XferMsgsHelper *) user_data; if (canceled) goto end; @@ -5075,7 +5088,7 @@ xfer_messages_performer (gboolean canceled, goto end; } - dst_account = tny_folder_get_account (TNY_FOLDER (dst_folder)); + dst_account = tny_folder_get_account (TNY_FOLDER (helper->dst_folder)); proto_str = tny_account_get_proto (dst_account); /* tinymail will return NULL for local folders it seems */ @@ -5085,56 +5098,49 @@ xfer_messages_performer (gboolean canceled, g_object_unref (dst_account); - /* Get selected headers */ - headers = get_selected_headers (MODEST_WINDOW (win)); - if (!headers) { - g_warning ("%s: no headers selected", __FUNCTION__); - goto end; - } - if (dst_is_pop) { modest_platform_information_banner (GTK_WIDGET (win), NULL, ngettext("mail_in_ui_folder_move_target_error", "mail_in_ui_folder_move_targets_error", - tny_list_get_length (headers))); - g_object_unref (headers); + tny_list_get_length (helper->headers))); goto end; } - MoveToHelper *helper = g_new0 (MoveToHelper, 1); - helper->banner = modest_platform_animation_banner (GTK_WIDGET (win), NULL, - _CS("ckct_nw_pasting")); - if (helper->banner != NULL) { - g_object_ref (helper->banner); - gtk_widget_show (GTK_WIDGET(helper->banner)); + movehelper = g_new0 (MoveToHelper, 1); + movehelper->banner = modest_platform_animation_banner (GTK_WIDGET (win), NULL, + _CS("ckct_nw_pasting")); + if (movehelper->banner != NULL) { + g_object_ref (movehelper->banner); + gtk_widget_show (GTK_WIDGET (movehelper->banner)); } if (MODEST_IS_MAIN_WINDOW (win)) { GtkWidget *header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win), MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW); - helper->reference = get_next_after_selected_headers (MODEST_HEADER_VIEW (header_view)); + movehelper->reference = get_next_after_selected_headers (MODEST_HEADER_VIEW (header_view)); } - ModestMailOperation *mail_op = - modest_mail_operation_new_with_error_handling (G_OBJECT(win), - xfer_messages_error_handler, - helper, NULL); + /* Perform the mail operation */ + mail_op = modest_mail_operation_new_with_error_handling (G_OBJECT(win), + xfer_messages_error_handler, + movehelper, NULL); modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op); modest_mail_operation_xfer_msgs (mail_op, - headers, - TNY_FOLDER (dst_folder), + helper->headers, + TNY_FOLDER (helper->dst_folder), TRUE, msgs_move_to_cb, - helper); + movehelper); g_object_unref (G_OBJECT (mail_op)); - g_object_unref (headers); end: - g_object_unref (dst_folder); + g_object_unref (helper->dst_folder); + g_object_unref (helper->headers); + g_slice_free (XferMsgsHelper, helper); } typedef struct { @@ -5296,6 +5302,7 @@ modest_ui_actions_transfer_messages_helper (GtkWindow *win, { gboolean need_connection = TRUE; gboolean do_xfer = TRUE; + XferMsgsHelper *helper; modest_ui_actions_xfer_messages_check (win, TNY_FOLDER_STORE (src_folder), headers, TNY_FOLDER (dst_folder), @@ -5306,11 +5313,16 @@ modest_ui_actions_transfer_messages_helper (GtkWindow *win, if (!do_xfer) return; + /* Create the helper */ + helper = g_slice_new (XferMsgsHelper); + helper->dst_folder = g_object_ref (dst_folder); + helper->headers = g_object_ref (headers); + if (need_connection) { DoubleConnectionInfo *connect_info = g_slice_new (DoubleConnectionInfo); connect_info->callback = xfer_messages_performer; connect_info->dst_account = tny_folder_get_account (TNY_FOLDER (dst_folder)); - connect_info->data = g_object_ref (dst_folder); + connect_info->data = helper; modest_platform_double_connect_and_perform(GTK_WINDOW (win), TRUE, TNY_FOLDER_STORE (src_folder), @@ -5318,7 +5330,7 @@ modest_ui_actions_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, helper); g_object_unref (src_account); } }