aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
authorDan Vrátil <dvratil@redhat.com>2012-04-28 00:26:49 +0800
committerDan Vrátil <dvratil@redhat.com>2012-04-28 00:26:49 +0800
commit7981771ea6a6ab2729010fc814d427e25f792b31 (patch)
tree275571e76d5b72edec92365addeb5a240370aa54 /mail
parent8ffb4930b26f9badf8eb0cdb93275c01d3d36f6a (diff)
downloadgsoc2013-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.c37
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);