[evolution/gnome-2-32] Bug #630518 - Hides calendar parts from multipart/alternative



commit 35cb4890c251c5baf59264a1df01f2fbbf233bb3
Author: Milan Crha <mcrha redhat com>
Date:   Mon Oct 18 13:16:39 2010 +0200

    Bug #630518 - Hides calendar parts from multipart/alternative

 em-format/em-format.c               |    2 ++
 plugins/prefer-plain/prefer-plain.c |   18 ++++++++++++++----
 2 files changed, 16 insertions(+), 4 deletions(-)
---
diff --git a/em-format/em-format.c b/em-format/em-format.c
index a5cda11..c037d52 100644
--- a/em-format/em-format.c
+++ b/em-format/em-format.c
@@ -1124,6 +1124,8 @@ em_format_is_attachment (EMFormat *emf,
 		 || camel_content_type_is(dw->mime_type, "application", "x-inlinepgp-signed")
 		 || camel_content_type_is(dw->mime_type, "application", "x-inlinepgp-encrypted")
 		 || camel_content_type_is(dw->mime_type, "x-evolution", "evolution-rss-feed")
+		 || camel_content_type_is(dw->mime_type, "text", "calendar")
+		 || camel_content_type_is(dw->mime_type, "text", "x-calendar")
 		 || (camel_content_type_is (dw->mime_type, "text", "*")
 		     && camel_mime_part_get_filename(part) == NULL));
 }
diff --git a/plugins/prefer-plain/prefer-plain.c b/plugins/prefer-plain/prefer-plain.c
index f4d5c16..3a076c6 100644
--- a/plugins/prefer-plain/prefer-plain.c
+++ b/plugins/prefer-plain/prefer-plain.c
@@ -114,8 +114,8 @@ void
 org_gnome_prefer_plain_multipart_alternative(gpointer ep, EMFormatHookTarget *t)
 {
 	CamelMultipart *mp = (CamelMultipart *)camel_medium_get_content ((CamelMedium *)t->part);
-	CamelMimePart *part, *display_part = NULL;
-	gint i, nparts, partidlen, displayid = 0;
+	CamelMimePart *part, *display_part = NULL, *calendar_part = NULL;
+	gint i, nparts, partidlen, displayid = 0, calendarid = 0;
 
 	/* FIXME: this part-id stuff is poking private data, needs api */
 	partidlen = t->format->part_id->len;
@@ -168,11 +168,19 @@ org_gnome_prefer_plain_multipart_alternative(gpointer ep, EMFormatHookTarget *t)
 
 	nparts = camel_multipart_get_number(mp);
 	for (i=0; i<nparts; i++) {
+		CamelContentType *ct;
+
 		part = camel_multipart_get_part(mp, i);
-		if (part && camel_content_type_is(camel_mime_part_get_content_type(part), "text", "plain")) {
+		if (!part)
+			continue;
+
+		ct = camel_mime_part_get_content_type (part);
+		if (!display_part && camel_content_type_is (ct, "text", "plain")) {
 			displayid = i;
 			display_part = part;
-			break;
+		} else if (!calendar_part && (camel_content_type_is (ct, "text", "calendar") || camel_content_type_is (ct, "text", "x-calendar"))) {
+			calendarid = i;
+			calendar_part = part;
 		}
 	}
 
@@ -186,6 +194,8 @@ org_gnome_prefer_plain_multipart_alternative(gpointer ep, EMFormatHookTarget *t)
 	/* all other parts are attachments */
 	if (epp_show_suppressed)
 		export_as_attachments (mp, t->format, t->stream, display_part);
+	else if (calendar_part)
+		make_part_attachment (t->format, t->stream, calendar_part, calendarid);
 
 	g_string_truncate(t->format->part_id, partidlen);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]