diff options
author | Milan Crha <mcrha@redhat.com> | 2013-01-19 01:34:56 +0800 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2013-01-19 01:34:56 +0800 |
commit | 722a27e8507541e64ca2a436a7f10069b9e01223 (patch) | |
tree | eefaf16cd84524a8c3ee68ad4edd5937b8a16f1d /mail/e-mail-printer.c | |
parent | 590b4711b78b94cac68a6c52e09a62628b5648d8 (diff) | |
download | gsoc2013-evolution-722a27e8507541e64ca2a436a7f10069b9e01223.tar.gz gsoc2013-evolution-722a27e8507541e64ca2a436a7f10069b9e01223.tar.zst gsoc2013-evolution-722a27e8507541e64ca2a436a7f10069b9e01223.zip |
Bug #692005 - Changing character encoding doesn't work
Diffstat (limited to 'mail/e-mail-printer.c')
-rw-r--r-- | mail/e-mail-printer.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/mail/e-mail-printer.c b/mail/e-mail-printer.c index 2f7e1366b4..8da529f1b1 100644 --- a/mail/e-mail-printer.c +++ b/mail/e-mail-printer.c @@ -198,25 +198,38 @@ emp_start_printing (GObject *object, } static void -emp_run_print_operation (EMailPrinter *emp) +emp_run_print_operation (EMailPrinter *emp, + EMailFormatter *formatter) { EMailPartList *part_list; CamelFolder *folder; const gchar *message_uid; + const gchar *default_charset, *charset; gchar *mail_uri; part_list = emp->priv->parts_list; folder = e_mail_part_list_get_folder (part_list); message_uid = e_mail_part_list_get_message_uid (part_list); + default_charset = formatter ? e_mail_formatter_get_default_charset (formatter) : NULL; + charset = formatter ? e_mail_formatter_get_charset (formatter) : NULL; + + if (!default_charset) + default_charset = ""; + if (!charset) + charset = ""; mail_uri = e_mail_part_build_uri ( folder, message_uid, "__evo-load-image", G_TYPE_BOOLEAN, TRUE, "mode", G_TYPE_INT, E_MAIL_FORMATTER_MODE_PRINTING, + "formatter_default_charset", G_TYPE_STRING, default_charset, + "formatter_charset", G_TYPE_STRING, charset, NULL); /* Print_layout is a special EMPart created by EMFormatHTMLPrint */ if (emp->priv->webview == NULL) { + EMailFormatter *emp_formatter; + emp->priv->webview = g_object_new ( E_TYPE_MAIL_DISPLAY, "mode", E_MAIL_FORMATTER_MODE_PRINTING, NULL); @@ -224,6 +237,12 @@ emp_run_print_operation (EMailPrinter *emp) e_mail_display_set_force_load_images ( E_MAIL_DISPLAY (emp->priv->webview), TRUE); + emp_formatter = e_mail_display_get_formatter (E_MAIL_DISPLAY (emp->priv->webview)); + if (default_charset && *default_charset) + e_mail_formatter_set_default_charset (emp_formatter, default_charset); + if (charset && *charset) + e_mail_formatter_set_charset (emp_formatter, charset); + g_object_ref_sink (emp->priv->webview); g_signal_connect ( emp->priv->webview, "notify::load-status", @@ -831,6 +850,7 @@ e_mail_printer_new (EMailPartList *source) void e_mail_printer_print (EMailPrinter *emp, GtkPrintOperationAction action, + EMailFormatter *formatter, GCancellable *cancellable) { g_return_if_fail (E_IS_MAIL_PRINTER (emp)); @@ -857,7 +877,7 @@ e_mail_printer_print (EMailPrinter *emp, cancellable, "cancelled", G_CALLBACK (gtk_print_operation_cancel), emp->priv->operation); - emp_run_print_operation (emp); + emp_run_print_operation (emp, formatter); } const gchar * |