X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodest-ui-actions.c;h=77121731568205d76e7ce3fbafacee36dda057f3;hb=d35c9918f4df9384dee13049f7d3344a47227f22;hp=13eca36981697ddc3d162bfccf3bdc61708f5712;hpb=4a97c4a2b6ba57b415de727f389f44505f032824;p=modest diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 13eca36..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; @@ -805,7 +805,8 @@ modest_ui_actions_msg_retrieval_check (ModestMailOperation *mail_op, /* If it's a memory low issue, then show a banner */ error = modest_mail_operation_get_error (mail_op); - if (error && error->code == MODEST_MAIL_OPERATION_ERROR_LOW_MEMORY) { + if (error && error->domain == MODEST_MAIL_OPERATION_ERROR && + error->code == MODEST_MAIL_OPERATION_ERROR_LOW_MEMORY) { GObject *source = modest_mail_operation_get_source (mail_op); modest_platform_run_information_dialog (GTK_IS_WINDOW (source) ? GTK_WINDOW (source) : NULL, dgettext("ke-recv","memr_ib_operation_disabled"), @@ -901,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!!"); @@ -1356,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)) { @@ -2255,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)); @@ -2310,7 +2311,8 @@ folder_refreshed_cb (ModestMailOperation *mail_op, /* Check if the operation failed due to memory low conditions */ error = modest_mail_operation_get_error (mail_op); - if (error && error->code == MODEST_MAIL_OPERATION_ERROR_LOW_MEMORY) { + if (error && error->domain == MODEST_MAIL_OPERATION_ERROR && + error->code == MODEST_MAIL_OPERATION_ERROR_LOW_MEMORY) { modest_platform_run_information_dialog (GTK_WINDOW (win), dgettext("ke-recv","memr_ib_operation_disabled"), TRUE); @@ -3157,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"); } @@ -4685,6 +4692,21 @@ modest_ui_actions_msgs_move_to_confirmation (ModestWindow *win, } static void +move_to_helper_destroyer (gpointer user_data) +{ + MoveToHelper *helper = (MoveToHelper *) user_data; + + /* Close the "Pasting" information 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); +} + +static void move_to_cb (ModestMailOperation *mail_op, gpointer user_data) { @@ -4722,15 +4744,8 @@ move_to_cb (ModestMailOperation *mail_op, } g_object_unref (object); } - - /* Close the "Pasting" information 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); + /* Destroy the helper */ + move_to_helper_destroyer (helper); } static void @@ -5017,7 +5032,7 @@ xfer_messages_error_handler (ModestMailOperation *mail_op, gpointer user_data) { ModestWindow *main_window = NULL; - + /* Disable next automatic folder selection */ main_window = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (), FALSE); /* don't create */ @@ -5029,8 +5044,14 @@ xfer_messages_error_handler (ModestMailOperation *mail_op, if (win) g_object_unref (win); } + 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 @@ -5042,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; @@ -5064,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 */ @@ -5074,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, - NULL, 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 { @@ -5285,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), @@ -5295,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), @@ -5307,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); } } @@ -5506,15 +5529,40 @@ modest_ui_actions_on_help (GtkAction *action, { const gchar *help_id; - g_return_if_fail (action); g_return_if_fail (win && GTK_IS_WINDOW(win)); help_id = modest_window_mgr_get_help_id (modest_runtime_get_window_mgr(), win); - - if (help_id) - modest_platform_show_help (GTK_WINDOW (win), help_id); + + if (help_id) + modest_platform_show_help (GTK_WINDOW (win), help_id); +} + +void +modest_ui_actions_on_csm_help (GtkAction *action, + GtkWindow *win) +{ + const gchar* help_id = NULL; + GtkWidget *folder_view; + TnyFolderStore *folder_store; + + g_return_if_fail (win && MODEST_IS_MAIN_WINDOW (win)); + + /* Get selected folder */ + folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win), + MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW); + folder_store = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view)); + + /* Switch help_id */ + if (folder_store && TNY_IS_FOLDER (folder_store)) + help_id = modest_tny_folder_get_help_id (TNY_FOLDER (folder_store)); + + if (folder_store) + g_object_unref (folder_store); + + if (help_id) + modest_platform_show_help (GTK_WINDOW (win), help_id); else - g_warning ("%s: no help for window %p", __FUNCTION__, win); + modest_ui_actions_on_help (action, win); } static void