diff options
Diffstat (limited to 'em-format/e-mail-parser-headers.c')
-rw-r--r-- | em-format/e-mail-parser-headers.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/em-format/e-mail-parser-headers.c b/em-format/e-mail-parser-headers.c index 06f28746f0..0a2c2bd40e 100644 --- a/em-format/e-mail-parser-headers.c +++ b/em-format/e-mail-parser-headers.c @@ -58,6 +58,31 @@ G_DEFINE_TYPE_EXTENDED ( static const gchar *parser_mime_types[] = { "application/vnd.evolution.headers", NULL }; +static void +empe_headers_bind_dom (EMailPart *part, + WebKitDOMElement *element) +{ + WebKitDOMDocument *document; + WebKitDOMElement *photo; + gchar *addr, *uri; + gboolean only_local; + + document = webkit_dom_node_get_owner_document (WEBKIT_DOM_NODE (element)); + photo = webkit_dom_document_get_element_by_id (document, "__evo-contact-photo"); + + addr = webkit_dom_element_get_attribute (photo, "data-mailaddr"); + only_local = webkit_dom_element_has_attribute (photo, "data-onlylocal"); + + uri = g_strdup_printf ("mail://contact-photo?mailaddr=%s%s", + addr, only_local ? "&only-local-photo=1" : ""); + + webkit_dom_html_image_element_set_src ( + WEBKIT_DOM_HTML_IMAGE_ELEMENT (photo), uri); + + g_free (addr); + g_free (uri); +} + static GSList * empe_headers_parse (EMailParserExtension *extension, EMailParser *parser, @@ -76,6 +101,7 @@ empe_headers_parse (EMailParserExtension *extension, mail_part = e_mail_part_new (part, part_id->str); mail_part->mime_type = g_strdup ("application/vnd.evolution.headers"); + mail_part->bind_func = empe_headers_bind_dom; g_string_truncate (part_id, len); return g_slist_append (NULL, mail_part); |