From 92438e45e846136c5504c347d02860d2c85ea309 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Dapena=20Paz?= Date: Thu, 4 Feb 2010 11:26:53 +0100 Subject: [PATCH] Add new ui actions method to send a custom message without editor --- src/modest-plugin-ui-actions.h | 51 ++++++++++++++++ src/modest-ui-actions.c | 126 +++++++++++++++++++++++++++++++--------- 2 files changed, 150 insertions(+), 27 deletions(-) diff --git a/src/modest-plugin-ui-actions.h b/src/modest-plugin-ui-actions.h index 0398cde..021d2b6 100644 --- a/src/modest-plugin-ui-actions.h +++ b/src/modest-plugin-ui-actions.h @@ -92,6 +92,57 @@ gboolean modest_ui_actions_on_send_msg (ModestWindow *window, TnyMsg *msg); +/** + * modest_ui_actions_on_send_custom_msg: + * @account_name: the account name to use for sending + * @from: a string + * @to: a string + * @cc: a string + * @bcc: a string + * @plain_body: a string with body of the message in plain text + * @html_body: a string with body of the message in html (or %NULL if message is only in plain text) + * @attachments_list: a #GList of attachments to add (#TnyMimePart) + * @images_list: a #GList of embedded images to add (#TnyMimePart) + * @references: list of messages this new message refers to + * @in_reply_to: a string with new in-reply-to header + * @priority_flags: the priority of the message as #TnyHeaderFlag mask + * @header_pairs: a #TnyList of #TnyPair with custom headers to add + */ +gboolean +modest_ui_actions_on_send_custom_msg (const gchar *account_name, + const gchar *from, const gchar *to, const gchar *cc, const gchar *bcc, + const gchar *subject, + const gchar *plain_body, const gchar *html_body, + const GList *attachments_list, const GList *images_list, + const gchar *references, const gchar *in_reply_to, + TnyHeaderFlags priority_flags, TnyList *header_pairs); + +/** + * modest_ui_actions_on_send_custom_msg: + * @transport_account: a #TnyTransportAccount + * @draft_msg: original draft message to delete on sending + * @from: a string + * @to: a string + * @cc: a string + * @bcc: a string + * @plain_body: a string with body of the message in plain text + * @html_body: a string with body of the message in html (or %NULL if message is only in plain text) + * @attachments_list: a #GList of attachments to add (#TnyMimePart) + * @images_list: a #GList of embedded images to add (#TnyMimePart) + * @references: list of messages this new message refers to + * @in_reply_to: a string with new in-reply-to header + * @priority_flags: the priority of the message as #TnyHeaderFlag mask + * @header_pairs: a #TnyList of #TnyPair with custom headers to add + */ +gboolean +modest_ui_actions_send_msg_with_transport (TnyTransportAccount *transport_account, + TnyMsg *draft_msg, + const gchar *from, const gchar *to, const gchar *cc, const gchar *bcc, + const gchar *subject, + const gchar *plain_body, const gchar *html_body, + const GList *attachments_list, const GList *images_list, + const gchar *references, const gchar *in_reply_to, + TnyHeaderFlags priority_flags, TnyList *header_pairs); G_END_DECLS #endif /* __MODEST_PLUGIN_UI_ACTIONS_H__ */ diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 5a9bb0f..cd632fb 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -3383,11 +3383,10 @@ gboolean modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) { TnyTransportAccount *transport_account = NULL; - gboolean had_error = FALSE, add_to_contacts; + gboolean result = TRUE, add_to_contacts; MsgData *data; ModestAccountMgr *account_mgr; gchar *account_name; - ModestMailOperation *mail_operation; gchar *recipients; g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW(edit_window), TRUE); @@ -3449,6 +3448,90 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) return TRUE; } + result = modest_ui_actions_send_msg_with_transport (transport_account, + data->draft_msg, + data->from, + data->to, + data->cc, + data->bcc, + data->subject, + data->plain_body, + data->html_body, + data->attachments, + data->images, + data->references, + data->in_reply_to, + data->priority_flags, + data->custom_header_pairs); + + + /* Free data: */ + g_free (account_name); + g_object_unref (G_OBJECT (transport_account)); + + modest_msg_edit_window_free_msg_data (edit_window, data); + + if (result) { + modest_msg_edit_window_set_sent (edit_window, TRUE); + + /* Save settings and close the window: */ + modest_ui_actions_on_close_window (NULL, MODEST_WINDOW (edit_window)); + } + + return result; +} + +/* For instance, when clicking the Send toolbar button when editing a message: */ +gboolean +modest_ui_actions_on_send_custom_msg (const gchar *account_name, + const gchar *from, const gchar *to, const gchar *cc, const gchar *bcc, + const gchar *subject, + const gchar *plain_body, const gchar *html_body, + const GList *attachments_list, const GList *images_list, + const gchar *references, const gchar *in_reply_to, + TnyHeaderFlags priority_flags, TnyList *header_pairs) +{ + TnyTransportAccount *transport_account = NULL; + gboolean result = FALSE; + + g_return_val_if_fail (account_name, FALSE); + + transport_account = + TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_server_account + (modest_runtime_get_account_store (), + account_name, TNY_ACCOUNT_TYPE_TRANSPORT)); + + g_return_val_if_fail (transport_account, FALSE); + + result = modest_ui_actions_send_msg_with_transport (transport_account, + NULL /*draft msg*/, + from, to, cc, bcc, + subject, + plain_body, html_body, + attachments_list, images_list, + references, in_reply_to, + priority_flags, header_pairs); + + /* Free data: */ + g_object_unref (G_OBJECT (transport_account)); + + return result; +} + +gboolean +modest_ui_actions_send_msg_with_transport (TnyTransportAccount *transport_account, + TnyMsg *draft_msg, + const gchar *from, const gchar *to, const gchar *cc, const gchar *bcc, + const gchar *subject, + const gchar *plain_body, const gchar *html_body, + const GList *attachments_list, const GList *images_list, + const gchar *references, const gchar *in_reply_to, + TnyHeaderFlags priority_flags, TnyList *header_pairs) +{ + gboolean had_error = FALSE; + ModestMailOperation *mail_operation; + + g_return_val_if_fail (transport_account, FALSE); /* Create the mail operation */ mail_operation = modest_mail_operation_new_with_error_handling (NULL, modest_ui_actions_disk_operations_error_handler, NULL, NULL); @@ -3456,20 +3539,20 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) modest_mail_operation_send_new_mail (mail_operation, transport_account, - data->draft_msg, - data->from, - data->to, - data->cc, - data->bcc, - data->subject, - data->plain_body, - data->html_body, - data->attachments, - data->images, - data->references, - data->in_reply_to, - data->priority_flags, - data->custom_header_pairs); + draft_msg, + from, + to, + cc, + bcc, + subject, + plain_body, + html_body, + attachments_list, + images_list, + references, + in_reply_to, + priority_flags, + 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")); @@ -3485,19 +3568,8 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) } /* Free data: */ - g_free (account_name); - g_object_unref (G_OBJECT (transport_account)); g_object_unref (G_OBJECT (mail_operation)); - modest_msg_edit_window_free_msg_data (edit_window, data); - - if (!had_error) { - modest_msg_edit_window_set_sent (edit_window, TRUE); - - /* Save settings and close the window: */ - modest_ui_actions_on_close_window (NULL, MODEST_WINDOW (edit_window)); - } - return !had_error; } -- 1.7.9.5