diff options
author | Dan Vrátil <dvratil@redhat.com> | 2012-04-28 00:26:49 +0800 |
---|---|---|
committer | Dan Vrátil <dvratil@redhat.com> | 2012-04-28 00:26:49 +0800 |
commit | 7981771ea6a6ab2729010fc814d427e25f792b31 (patch) | |
tree | 275571e76d5b72edec92365addeb5a240370aa54 /mail | |
parent | 8ffb4930b26f9badf8eb0cdb93275c01d3d36f6a (diff) | |
download | gsoc2013-evolution-7981771ea6a6ab2729010fc814d427e25f792b31.tar.gz gsoc2013-evolution-7981771ea6a6ab2729010fc814d427e25f792b31.tar.zst gsoc2013-evolution-7981771ea6a6ab2729010fc814d427e25f792b31.zip |
Bug #674381 - Show contact photo from address book doesn't work
Diffstat (limited to 'mail')
-rw-r--r-- | mail/em-format-html.c | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/mail/em-format-html.c b/mail/em-format-html.c index d85d202e69..5886142d6e 100644 --- a/mail/em-format-html.c +++ b/mail/em-format-html.c @@ -1488,6 +1488,15 @@ efh_finalize (GObject *object) } static void +efh_constructed (GObject *object) +{ + /* Chain up to parent's constructed() method. */ + G_OBJECT_CLASS (parent_class)->constructed (object); + + e_extensible_load_extensions (E_EXTENSIBLE (object)); +} + +static void efh_write_attachment (EMFormat *emf, EMFormatPURI *puri, CamelStream *stream, @@ -1671,6 +1680,7 @@ efh_class_init (EMFormatHTMLClass *klass) emf_class->write = efh_write; object_class = G_OBJECT_CLASS (klass); + object_class->constructed = efh_constructed; object_class->set_property = efh_set_property; object_class->get_property = efh_get_property; object_class->finalize = efh_finalize; @@ -1831,8 +1841,6 @@ efh_init (EMFormatHTML *efh, CAMEL_MIME_FILTER_TOHTML_CONVERT_SPACES | CAMEL_MIME_FILTER_TOHTML_MARK_CITATION; efh->show_icon = TRUE; - - e_extensible_load_extensions (E_EXTENSIBLE (efh)); } GType @@ -2608,8 +2616,31 @@ write_contact_picture (CamelMimePart *part, gint size, GString *buffer) CamelContentType *ct; GByteArray *ba; + ba = NULL; dw = camel_medium_get_content (CAMEL_MEDIUM (part)); - ba = camel_data_wrapper_get_byte_array (dw); + if (dw) { + ba = camel_data_wrapper_get_byte_array (dw); + } + + if (!ba || ba->len == 0) { + + if (camel_mime_part_get_filename (part)) { + + if (size >= 0) { + g_string_append_printf ( + buffer, + "<img width=\"%d\" src=\"evo-file://%s\" />", + size, camel_mime_part_get_filename (part)); + } else { + g_string_append_printf ( + buffer, + "<img src=\"evo-file://%s\" />", + camel_mime_part_get_filename (part)); + } + } + + return; + } b64 = g_base64_encode (ba->data, ba->len); ct = camel_mime_part_get_content_type (part); |