X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=5a9bb0fc03d87fe71b2ed878a926af5a7fc873ac;hb=84ec108299eafb88faf2b2cafad3f6eee9dae154;hp=523d26016225511fa502bcea8d43a05c4e07051f;hpb=036e2e88da8f0d8129684d146295db8829e074e1;p=modest diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 523d260..5a9bb0f 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -398,12 +398,16 @@ headers_action_mark_as_read (TnyHeader *header, gpointer user_data) { TnyHeaderFlags flags; + gchar *uid; g_return_if_fail (TNY_IS_HEADER(header)); flags = tny_header_get_flags (header); if (flags & TNY_HEADER_FLAG_SEEN) return; tny_header_set_flag (header, TNY_HEADER_FLAG_SEEN); + uid = modest_tny_folder_get_header_unique_id (header); + modest_platform_emit_msg_read_changed_signal (uid, TRUE); + g_free (uid); } static void @@ -417,7 +421,10 @@ headers_action_mark_as_unread (TnyHeader *header, flags = tny_header_get_flags (header); if (flags & TNY_HEADER_FLAG_SEEN) { + gchar *uid; + uid = modest_tny_folder_get_header_unique_id (header); tny_header_unset_flag (header, TNY_HEADER_FLAG_SEEN); + modest_platform_emit_msg_read_changed_signal (uid, FALSE); } } @@ -835,6 +842,7 @@ modest_ui_actions_compose_msg(ModestWindow *win, GnomeVFSFileSize total_size, allowed_size; guint64 available_disk, expected_size, parts_size; guint parts_count; + TnyList *header_pairs; /* we check for low-mem */ if (modest_platform_check_memory_low (win, TRUE)) @@ -908,8 +916,11 @@ modest_ui_actions_compose_msg(ModestWindow *win, body = use_signature ? g_strconcat ((body_str) ? body_str : "", signature, NULL) : g_strdup(body_str); + header_pairs = TNY_LIST (tny_simple_list_new ()); msg = modest_tny_msg_new_html_plain (to_str, from_str, cc_str, bcc_str, subject_str, - NULL, NULL, body, NULL, NULL, NULL, NULL, NULL); + NULL, NULL, body, NULL, NULL, NULL, NULL, header_pairs, NULL); + g_object_unref (header_pairs); + if (!msg) { g_printerr ("modest: failed to create new msg\n"); goto cleanup; @@ -2215,7 +2226,7 @@ reply_forward (ReplyForwardAction action, ModestWindow *win) } void -modest_ui_actions_reply_calendar (ModestWindow *win, TnyMsg *msg, TnyList *header_pairs) +modest_ui_actions_reply_calendar (ModestWindow *win, TnyList *header_pairs) { gchar *from; gchar *recipient; @@ -2223,11 +2234,11 @@ modest_ui_actions_reply_calendar (ModestWindow *win, TnyMsg *msg, TnyList *heade gboolean use_signature; TnyMsg *new_msg; GtkWidget *msg_win; - gdouble parent_zoom; const gchar *account_name; const gchar *mailbox; TnyHeader *msg_header; ModestWindowMgr *mgr; + TnyMsg *msg; g_return_if_fail (MODEST_IS_MSG_VIEW_WINDOW(win)); @@ -2246,6 +2257,9 @@ modest_ui_actions_reply_calendar (ModestWindow *win, TnyMsg *msg, TnyList *heade &use_signature); g_free (recipient); + msg = modest_msg_view_window_get_message(MODEST_MSG_VIEW_WINDOW(win)); + g_return_if_fail(msg); + msg_header = tny_msg_get_header (msg); new_msg = modest_tny_msg_create_reply_calendar_msg (msg, msg_header, from, @@ -2265,9 +2279,6 @@ modest_ui_actions_reply_calendar (ModestWindow *win, TnyMsg *msg, TnyList *heade mgr = modest_runtime_get_window_mgr (); modest_window_mgr_register_window (mgr, MODEST_WINDOW (msg_win), (ModestWindow *) win); - parent_zoom = modest_window_get_zoom (MODEST_WINDOW (win)); - modest_window_set_zoom (MODEST_WINDOW (msg_win), parent_zoom); - /* Show edit window */ gtk_widget_show_all (GTK_WIDGET (msg_win)); @@ -3295,6 +3306,7 @@ modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edi data->priority_flags, data->references, data->in_reply_to, + data->custom_header_pairs, on_save_to_drafts_cb, g_object_ref(edit_window)); @@ -3456,7 +3468,8 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) data->images, data->references, data->in_reply_to, - data->priority_flags); + data->priority_flags, + data->custom_header_pairs); if (modest_mail_operation_get_status (mail_operation) == MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS) modest_platform_information_banner (NULL, NULL, _("mcen_ib_outbox_waiting_to_be_sent")); @@ -3488,6 +3501,59 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) return !had_error; } +gboolean +modest_ui_actions_on_send_msg (ModestWindow *window, + TnyMsg *msg) +{ + TnyTransportAccount *transport_account = NULL; + gboolean had_error = FALSE; + ModestAccountMgr *account_mgr; + gchar *account_name; + ModestMailOperation *mail_operation; + + account_mgr = modest_runtime_get_account_mgr(); + account_name = g_strdup(modest_window_get_active_account (MODEST_WINDOW(window))); + + if (!account_name) + account_name = modest_account_mgr_get_default_account (account_mgr); + + /* Get the currently-active transport account for this modest account: */ + if (account_name && strcmp (account_name, MODEST_LOCAL_FOLDERS_ACCOUNT_ID) != 0) { + transport_account = + TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_server_account + (modest_runtime_get_account_store (), + account_name, TNY_ACCOUNT_TYPE_TRANSPORT)); + } + + /* Create the mail operation */ + 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_mail (mail_operation, + transport_account, + msg); + + if (modest_mail_operation_get_status (mail_operation) == MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS) + modest_platform_information_banner (NULL, NULL, _("mcen_ib_outbox_waiting_to_be_sent")); + + if (modest_mail_operation_get_error (mail_operation) != NULL) { + const GError *error = modest_mail_operation_get_error (mail_operation); + if (error->domain == MODEST_MAIL_OPERATION_ERROR && + error->code == MODEST_MAIL_OPERATION_ERROR_INSTANCE_CREATION_FAILED) { + g_warning ("%s failed: %s\n", __FUNCTION__, (modest_mail_operation_get_error (mail_operation))->message); + modest_platform_information_banner (NULL, NULL, _CS("sfil_ni_not_enough_memory")); + had_error = TRUE; + } + } + + /* Free data: */ + g_free (account_name); + g_object_unref (G_OBJECT (transport_account)); + g_object_unref (G_OBJECT (mail_operation)); + + return !had_error; +} + void modest_ui_actions_on_toggle_bold (GtkToggleAction *action, ModestMsgEditWindow *window)