aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2013-05-21 01:41:57 +0800
committerMatthew Barnes <mbarnes@redhat.com>2013-05-21 03:35:56 +0800
commit68ea23e2a6339ef202f5e6ab6c7babe3b0d81c7f (patch)
tree2a50f11205d46d8ed5ed89f69034f2ebe0ca9357 /modules
parent773480a6e3baadbf4598dd2cb9ae0e8e166dd859 (diff)
downloadgsoc2013-evolution-68ea23e2a6339ef202f5e6ab6c7babe3b0d81c7f.tar
gsoc2013-evolution-68ea23e2a6339ef202f5e6ab6c7babe3b0d81c7f.tar.gz
gsoc2013-evolution-68ea23e2a6339ef202f5e6ab6c7babe3b0d81c7f.tar.bz2
gsoc2013-evolution-68ea23e2a6339ef202f5e6ab6c7babe3b0d81c7f.tar.lz
gsoc2013-evolution-68ea23e2a6339ef202f5e6ab6c7babe3b0d81c7f.tar.xz
gsoc2013-evolution-68ea23e2a6339ef202f5e6ab6c7babe3b0d81c7f.tar.zst
gsoc2013-evolution-68ea23e2a6339ef202f5e6ab6c7babe3b0d81c7f.zip
Simplify EABContactFormatter.
Simplify the EABContactFormatter API as follows: * Drop all constructor arguments from eab_contact_formatter_new() since get/set functions exist for all of them. * Remove eab_contact_formatter_format_contact_async() since EABContactFormatter does not block. * Replace eab_contact_formatter_format_contact_sync() with eab_contact_formatter_format_contact() which drops the CamelStream and GCancellable arguments and takes a GString as an output buffer. * Remove the "state" and "style" properties, and always use a white background when rendering the full contact. This is particularly important since render_normal() dereferenced the GtkStyle without checking for NULL, which would crash on mails with a vCard MIME part when "Show Full vCard" was clicked, because the "vcard-inline" module never set a GtkStyle. (cherry picked from commit badc0e6156777c65885bad6858a6f44f7cbf037e)
Diffstat (limited to 'modules')
-rw-r--r--modules/vcard-inline/e-mail-formatter-vcard-inline.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/modules/vcard-inline/e-mail-formatter-vcard-inline.c b/modules/vcard-inline/e-mail-formatter-vcard-inline.c
index bcced23351..ef968674e4 100644
--- a/modules/vcard-inline/e-mail-formatter-vcard-inline.c
+++ b/modules/vcard-inline/e-mail-formatter-vcard-inline.c
@@ -68,18 +68,22 @@ emfe_vcard_inline_format (EMailFormatterExtension *extension,
g_return_val_if_fail (E_MAIL_PART_IS (part, EMailPartVCardInline), FALSE);
vcard_part = (EMailPartVCardInline *) part;
+ g_return_val_if_fail (vcard_part->contact_list != NULL, FALSE);
if (context->mode == E_MAIL_FORMATTER_MODE_RAW) {
-
EContact *contact;
+ GString *buffer;
+
+ contact = E_CONTACT (vcard_part->contact_list->data);
+
+ buffer = g_string_sized_new (1024);
- if (vcard_part->contact_list != NULL)
- contact = E_CONTACT (vcard_part->contact_list->data);
- else
- contact = NULL;
+ eab_contact_formatter_format_contact (
+ vcard_part->formatter, contact, buffer);
+ camel_stream_write_string (
+ stream, buffer->str, cancellable, NULL);
- eab_contact_formatter_format_contact_sync (
- vcard_part->formatter, contact, stream, cancellable);
+ g_string_free (buffer, TRUE);
} else {
CamelFolder *folder;
@@ -93,8 +97,6 @@ emfe_vcard_inline_format (EMailFormatterExtension *extension,
gchar *html_label, *access_key;
length = g_slist_length (vcard_part->contact_list);
- if (length < 1)
- return FALSE;
folder = e_mail_part_list_get_folder (context->part_list);
message_uid = e_mail_part_list_get_message_uid (context->part_list);