/* * e-mail-formatter-qoute-attachment.c * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with the program; if not, see * */ #ifdef HAVE_CONFIG_H #include #endif #include "e-mail-format-extensions.h" #include "e-mail-part-attachment.h" #include #include #include #include #include #include #define d(x) typedef struct _EMailFormatterQuoteAttachment { GObject parent; } EMailFormatterQuoteAttachment; typedef struct _EMailFormatterQuoteAttachmentClass { GObjectClass parent_class; } EMailFormatterQuoteAttachmentClass; static void e_mail_formatter_quote_formatter_extension_interface_init (EMailFormatterExtensionInterface *iface); static void e_mail_formatter_quote_mail_extension_interface_init (EMailExtensionInterface *iface); G_DEFINE_TYPE_EXTENDED ( EMailFormatterQuoteAttachment, e_mail_formatter_quote_attachment, G_TYPE_OBJECT, 0, G_IMPLEMENT_INTERFACE ( E_TYPE_MAIL_EXTENSION, e_mail_formatter_quote_mail_extension_interface_init) G_IMPLEMENT_INTERFACE ( E_TYPE_MAIL_FORMATTER_EXTENSION, e_mail_formatter_quote_formatter_extension_interface_init) ) static const gchar *formatter_mime_types[] = { "application/vnd.evolution.attachment", NULL }; static gboolean emfqe_attachment_format (EMailFormatterExtension *extension, EMailFormatter *formatter, EMailFormatterContext *context, EMailPart *part, CamelStream *stream, GCancellable *cancellable) { gchar *text, *html; guint32 text_format_flags; EMailPartAttachment *empa; EMailPart *att_part; GSList *iter; empa = E_MAIL_PART_ATTACHMENT (part); if (!empa->attachment_view_part_id) return FALSE; iter = e_mail_part_list_get_iter ( context->parts, empa->attachment_view_part_id); if (!iter || !iter->data) return FALSE; att_part = iter->data; camel_stream_write_string (stream, "

", cancellable, NULL); text_format_flags = e_mail_formatter_get_text_format_flags (formatter); text = e_mail_part_describe (part->part, empa ? empa->snoop_mime_type : part->mime_type); html = camel_text_to_html ( text, text_format_flags & CAMEL_MIME_FILTER_TOHTML_CONVERT_URLS, 0); camel_stream_write_string (stream, html, cancellable, NULL); camel_stream_write_string (stream, "
", cancellable, NULL); g_free (html); g_free (text); camel_stream_write_string (stream, "\n" "
\n", cancellable, NULL); e_mail_formatter_format_as ( formatter, context, att_part, stream, NULL, cancellable); camel_stream_write_string (stream, "
", cancellable, NULL); return TRUE; } static const gchar * emfqe_attachment_get_display_name (EMailFormatterExtension *extension) { return NULL; } static const gchar * emfqe_attachment_get_description (EMailFormatterExtension *extension) { return NULL; } static const gchar ** emfqe_attachment_mime_types (EMailExtension *extension) { return formatter_mime_types; } static void e_mail_formatter_quote_attachment_class_init (EMailFormatterQuoteAttachmentClass *class) { } static void e_mail_formatter_quote_formatter_extension_interface_init (EMailFormatterExtensionInterface *iface) { iface->format = emfqe_attachment_format; iface->get_display_name = emfqe_attachment_get_display_name; iface->get_description = emfqe_attachment_get_description; } static void e_mail_formatter_quote_mail_extension_interface_init (EMailExtensionInterface *iface) { iface->mime_types = emfqe_attachment_mime_types; } static void e_mail_formatter_quote_attachment_init (EMailFormatterQuoteAttachment *formatter) { }