From 9ed9a99baddcb87eab366e4f939dc146f2db9401 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 31 Mar 2012 12:08:36 -0400 Subject: EMFormat: Add "session" as a constructor property. Pass it in instead of digging it out of EShellSettings. --- mail/e-mail-reader.c | 9 ++++++++- mail/em-composer-utils.c | 42 +++++++++++++++++++++++++++++------------- mail/em-composer-utils.h | 4 +++- mail/em-format-html-display.c | 8 ++++++-- mail/em-format-html-display.h | 2 +- mail/em-format-html-print.c | 9 ++++++++- mail/em-utils.c | 15 ++++++++++++--- mail/em-utils.h | 2 +- 8 files changed, 68 insertions(+), 23 deletions(-) (limited to 'mail') diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c index 0106b6ed53..4940fbe321 100644 --- a/mail/e-mail-reader.c +++ b/mail/e-mail-reader.c @@ -3099,6 +3099,8 @@ mail_reader_set_display_formatter_for_message (EMailReader *reader, } if ((formatter = g_hash_table_lookup (formatters, mail_uri)) == NULL) { + EMailBackend *mail_backend; + EMailSession *mail_session; struct _formatter_weak_ref_closure *formatter_data = g_new0 (struct _formatter_weak_ref_closure, 1); @@ -3107,7 +3109,12 @@ mail_reader_set_display_formatter_for_message (EMailReader *reader, formatter_data->formatters = g_hash_table_ref (formatters); formatter_data->mail_uri = g_strdup (mail_uri); - formatter = EM_FORMAT (em_format_html_display_new ()); + mail_backend = e_mail_reader_get_backend (reader); + mail_session = e_mail_backend_get_session (mail_backend); + + formatter = EM_FORMAT ( + em_format_html_display_new ( + CAMEL_SESSION (mail_session))); /* When no EMailDisplay holds reference to the formatter, then * the formatter can be destroyed. */ diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index f4b8560f81..acff5e9b4f 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -950,9 +950,12 @@ em_utils_composer_print_cb (EMsgComposer *composer, { EMailPrinter *emp; EMFormatHTMLDisplay *efhd; + const gchar *message_id; - efhd = em_format_html_display_new (); - ((EMFormat *) efhd)->message_uid = g_strdup (camel_mime_message_get_message_id (message)); + efhd = em_format_html_display_new (CAMEL_SESSION (session)); + + message_id = camel_mime_message_get_message_id (message); + ((EMFormat *) efhd)->message_uid = g_strdup (message_id); /* Parse the message */ em_format_parse ((EMFormat *) efhd, message, NULL, NULL); @@ -1651,6 +1654,7 @@ forward_attached_cb (CamelFolder *folder, static EMsgComposer * forward_non_attached (EShell *shell, + CamelSession *session, CamelFolder *folder, const gchar *uid, CamelMimeMessage *message, @@ -1667,7 +1671,7 @@ forward_non_attached (EShell *shell, forward = quoting_text (QUOTING_FORWARD); text = em_utils_message_to_html ( - message, forward, flags, NULL, NULL, &validity_found); + session, message, forward, flags, NULL, NULL, &validity_found); if (text != NULL) { CamelDataWrapper *content; @@ -1713,6 +1717,7 @@ forward_non_attached (EShell *shell, /** * em_utils_forward_message: * @shell: an #EShell + * @session: a #CamelSession * @message: a #CamelMimeMessage to forward * @style: the forward style to use * @folder: a #CamelFolder, or %NULL @@ -1723,6 +1728,7 @@ forward_non_attached (EShell *shell, **/ EMsgComposer * em_utils_forward_message (EShell *shell, + CamelSession *session, CamelMimeMessage *message, EMailForwardStyle style, CamelFolder *folder, @@ -1733,6 +1739,7 @@ em_utils_forward_message (EShell *shell, EMsgComposer *composer = NULL; g_return_val_if_fail (E_IS_SHELL (shell), NULL); + g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL); g_return_val_if_fail (CAMEL_IS_MIME_MESSAGE (message), NULL); switch (style) { @@ -1751,7 +1758,7 @@ em_utils_forward_message (EShell *shell, case E_MAIL_FORWARD_STYLE_INLINE: case E_MAIL_FORWARD_STYLE_QUOTED: composer = forward_non_attached ( - shell, folder, uid, message, style); + shell, session, folder, uid, message, style); break; } @@ -1765,6 +1772,7 @@ forward_got_messages_cb (CamelFolder *folder, { EShell *shell; EMailBackend *backend; + EMailSession *session; EAlertSink *alert_sink; GHashTable *hash_table; GHashTableIter iter; @@ -1798,6 +1806,7 @@ forward_got_messages_cb (CamelFolder *folder, g_return_if_fail (hash_table != NULL); backend = e_mail_reader_get_backend (context->reader); + session = e_mail_backend_get_session (backend); shell = e_shell_backend_get_shell (E_SHELL_BACKEND (backend)); /* Create a new composer window for each message. */ @@ -1806,7 +1815,8 @@ forward_got_messages_cb (CamelFolder *folder, while (g_hash_table_iter_next (&iter, &key, &value)) em_utils_forward_message ( - shell, value, context->style, folder, key); + shell, CAMEL_SESSION (session), + value, context->style, folder, key); g_hash_table_unref (hash_table); @@ -2674,10 +2684,13 @@ composer_set_body (EMsgComposer *composer, { gchar *text, *credits, *original; CamelMimePart *part; + CamelSession *session; GSettings *settings; gboolean start_bottom, has_body_text = FALSE; guint32 validity_found = 0; + session = e_msg_composer_get_session (composer); + settings = g_settings_new ("org.gnome.evolution.mail"); start_bottom = g_settings_get_boolean (settings, "composer-reply-start-bottom"); @@ -2695,8 +2708,8 @@ composer_set_body (EMsgComposer *composer, case E_MAIL_REPLY_STYLE_OUTLOOK: original = quoting_text (QUOTING_ORIGINAL); text = em_utils_message_to_html ( - message, original, EM_FORMAT_QUOTE_HEADERS, source, - start_bottom ? "
" : NULL, &validity_found); + session, message, original, EM_FORMAT_QUOTE_HEADERS, + source, start_bottom ? "
" : NULL, &validity_found); e_msg_composer_set_body_text (composer, text, TRUE); has_body_text = text && *text; g_free (text); @@ -2709,8 +2722,8 @@ composer_set_body (EMsgComposer *composer, /* do what any sane user would want when replying... */ credits = attribution_format (message); text = em_utils_message_to_html ( - message, credits, EM_FORMAT_QUOTE_CITE, source, - start_bottom ? "
" : NULL, &validity_found); + session, message, credits, EM_FORMAT_QUOTE_CITE, + source, start_bottom ? "
" : NULL, &validity_found); g_free (credits); e_msg_composer_set_body_text (composer, text, TRUE); has_body_text = text && *text; @@ -2747,18 +2760,21 @@ composer_set_body (EMsgComposer *composer, } gchar * -em_utils_construct_composer_text (CamelMimeMessage *message, +em_utils_construct_composer_text (CamelSession *session, + CamelMimeMessage *message, EMFormat *source) { gchar *text, *credits; gboolean start_bottom = 0; + g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL); + credits = attribution_format (message); text = em_utils_message_to_html ( - message, credits, EM_FORMAT_QUOTE_CITE, source, - start_bottom ? "
" : NULL, NULL); - + session, message, credits, EM_FORMAT_QUOTE_CITE, + source, start_bottom ? "
" : NULL, NULL); g_free (credits); + return text; } diff --git a/mail/em-composer-utils.h b/mail/em-composer-utils.h index 5b3d3a469a..865254ca31 100644 --- a/mail/em-composer-utils.h +++ b/mail/em-composer-utils.h @@ -47,6 +47,7 @@ void em_utils_edit_messages (EMailReader *reader, GPtrArray *uids, gboolean replace); EMsgComposer * em_utils_forward_message (EShell *shell, + CamelSession *session, CamelMimeMessage *msg, EMailForwardStyle style, CamelFolder *folder, @@ -59,7 +60,8 @@ void em_utils_forward_messages (EMailReader *reader, void em_utils_redirect_message (EShell *shell, CamelMimeMessage *message); gchar * em_utils_construct_composer_text - (CamelMimeMessage *message, + (CamelSession *session, + CamelMimeMessage *message, EMFormat *source_formatter); gboolean em_utils_is_munged_list_message (CamelMimeMessage *message); void em_utils_get_reply_sender (CamelMimeMessage *message, diff --git a/mail/em-format-html-display.c b/mail/em-format-html-display.c index 8f20169636..2a42beb943 100644 --- a/mail/em-format-html-display.c +++ b/mail/em-format-html-display.c @@ -916,9 +916,13 @@ em_format_html_display_get_type (void) } EMFormatHTMLDisplay * -em_format_html_display_new (void) +em_format_html_display_new (CamelSession *session) { - return g_object_new (EM_TYPE_FORMAT_HTML_DISPLAY, NULL); + g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL); + + return g_object_new ( + EM_TYPE_FORMAT_HTML_DISPLAY, + "session", session, NULL); } /* ********************************************************************** */ diff --git a/mail/em-format-html-display.h b/mail/em-format-html-display.h index c1b22eec58..7c0d7a9fd5 100644 --- a/mail/em-format-html-display.h +++ b/mail/em-format-html-display.h @@ -111,7 +111,7 @@ struct _EMFormatHTMLDisplayClass { GType em_format_html_display_get_type (void); EMFormatHTMLDisplay * - em_format_html_display_new (void); + em_format_html_display_new (CamelSession *session); G_END_DECLS #endif /* EM_FORMAT_HTML_DISPLAY_H */ diff --git a/mail/em-format-html-print.c b/mail/em-format-html-print.c index 2f9e556d9e..ed64a9ea07 100644 --- a/mail/em-format-html-print.c +++ b/mail/em-format-html-print.c @@ -618,8 +618,15 @@ EMFormatHTMLPrint * em_format_html_print_new (EMFormatHTML *source) { EMFormatHTMLPrint *efhp; + CamelSession *session; - efhp = g_object_new (EM_TYPE_FORMAT_HTML_PRINT, + g_return_val_if_fail (EM_IS_FORMAT_HTML (source), NULL); + + session = em_format_get_session (EM_FORMAT (source)); + + efhp = g_object_new ( + EM_TYPE_FORMAT_HTML_PRINT, + "session", session, "original-formatter", source, NULL); diff --git a/mail/em-utils.c b/mail/em-utils.c index a9b57125a2..52856865b9 100644 --- a/mail/em-utils.c +++ b/mail/em-utils.c @@ -646,12 +646,17 @@ em_utils_print_messages_to_file (CamelFolder *folder, { EMFormatHTMLDisplay *efhd; CamelMimeMessage *message; + CamelStore *parent_store; + CamelSession *session; message = camel_folder_get_message_sync (folder, uid, NULL, NULL); if (message == NULL) return FALSE; - efhd = em_format_html_display_new (); + parent_store = camel_folder_get_parent_store (folder); + session = camel_service_get_session (CAMEL_SERVICE (parent_store)); + + efhd = em_format_html_display_new (session); ((EMFormat *) efhd)->message_uid = g_strdup (uid); em_format_parse_async ((EMFormat *) efhd, message, folder, NULL, @@ -1162,6 +1167,7 @@ em_utils_get_proxy (void) /** * em_utils_message_to_html: + * @session: a #CamelSession * @message: * @credits: * @flags: EMFormatQuote flags @@ -1177,7 +1183,8 @@ em_utils_get_proxy (void) * Return value: The html version as a NULL terminated string. **/ gchar * -em_utils_message_to_html (CamelMimeMessage *message, +em_utils_message_to_html (CamelSession *session, + CamelMimeMessage *message, const gchar *credits, guint32 flags, EMFormat *source, @@ -1188,11 +1195,13 @@ em_utils_message_to_html (CamelMimeMessage *message, CamelStream *mem; GByteArray *buf; + g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL); + buf = g_byte_array_new (); mem = camel_stream_mem_new (); camel_stream_mem_set_byte_array (CAMEL_STREAM_MEM (mem), buf); - emfq = em_format_quote_new (credits, mem, flags); + emfq = em_format_quote_new (session, credits, mem, flags); em_format_set_composer ((EMFormat *) emfq, TRUE); if (!source) { diff --git a/mail/em-utils.h b/mail/em-utils.h index 09ae4a56eb..bce64eebc3 100644 --- a/mail/em-utils.h +++ b/mail/em-utils.h @@ -68,7 +68,7 @@ void em_utils_selection_get_urilist (GtkSelectionData *data, CamelFolder *folder EProxy * em_utils_get_proxy (void); /* FIXME: should this have an override charset? */ -gchar *em_utils_message_to_html (CamelMimeMessage *msg, const gchar *credits, guint32 flags, struct _EMFormat *source, const gchar *append, guint32 *validity_found); +gchar *em_utils_message_to_html (CamelSession *session, CamelMimeMessage *msg, const gchar *credits, guint32 flags, struct _EMFormat *source, const gchar *append, guint32 *validity_found); void em_utils_empty_trash (GtkWidget *parent, EMailSession *session); -- cgit v1.2.3