[evolution] EMailFormatterHeaders cleanups.



commit 257286b6ce8d12a8f7dc12490599d32f8e984776
Author: Matthew Barnes <mbarnes redhat com>
Date:   Fri Jun 7 10:30:22 2013 -0400

    EMailFormatterHeaders cleanups.

 em-format/e-mail-formatter-headers.c |   67 +++++++++++++++++++---------------
 em-format/e-mail-formatter-utils.c   |   34 ++++++++++-------
 2 files changed, 58 insertions(+), 43 deletions(-)
---
diff --git a/em-format/e-mail-formatter-headers.c b/em-format/e-mail-formatter-headers.c
index 3cd5fa5..702b4a6 100644
--- a/em-format/e-mail-formatter-headers.c
+++ b/em-format/e-mail-formatter-headers.c
@@ -50,10 +50,11 @@ static const gchar *formatter_mime_types[] = {
 static void
 format_short_headers (EMailFormatter *formatter,
                       GString *buffer,
-                      CamelMedium *part,
+                      EMailPart *part,
                       guint32 flags,
                       GCancellable *cancellable)
 {
+       CamelMimePart *mime_part;
        GtkTextDirection direction;
        const gchar *charset;
        CamelContentType *ct;
@@ -67,9 +68,10 @@ format_short_headers (EMailFormatter *formatter,
        if (g_cancellable_is_cancelled (cancellable))
                return;
 
+       mime_part = e_mail_part_ref_mime_part (part);
        direction = gtk_widget_get_default_direction ();
 
-       ct = camel_mime_part_get_content_type ((CamelMimePart *) part);
+       ct = camel_mime_part_get_content_type (mime_part);
        charset = camel_content_type_param (ct, "charset");
        charset = camel_iconv_charset_name (charset);
        hdr_charset = e_mail_formatter_dup_charset (formatter);
@@ -85,7 +87,7 @@ format_short_headers (EMailFormatter *formatter,
                "id=\"__evo-short-headers\" style=\"display: %s\">",
                flags & E_MAIL_FORMATTER_HEADER_FLAG_COLLAPSED ? "table" : "none");
 
-       header = ((CamelMimePart *) part)->headers;
+       header = mime_part->headers;
        while (header) {
                if (!g_ascii_strcasecmp (header->name, "From")) {
                        GString *tmp;
@@ -141,38 +143,40 @@ format_short_headers (EMailFormatter *formatter,
 
        g_string_free (from, TRUE);
        g_free (evolution_imagesdir);
+
+       g_object_unref (mime_part);
 }
 
 static void
-write_contact_picture (CamelMimePart *part,
+write_contact_picture (CamelMimePart *mime_part,
                        gint size,
                        GString *buffer)
 {
        gchar *b64, *content_type;
        CamelDataWrapper *dw;
        CamelContentType *ct;
-       GByteArray *ba;
+       GByteArray *ba = NULL;
 
-       ba = NULL;
-       dw = camel_medium_get_content (CAMEL_MEDIUM (part));
-       if (dw) {
+       dw = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
+       if (dw != NULL)
                ba = camel_data_wrapper_get_byte_array (dw);
-       }
 
-       if (!ba || ba->len == 0) {
+       if (ba == NULL || ba->len == 0) {
+               const gchar *filename;
 
-               if (camel_mime_part_get_filename (part)) {
+               filename = camel_mime_part_get_filename (mime_part);
 
+               if (filename != NULL) {
                        if (size >= 0) {
                                g_string_append_printf (
                                        buffer,
                                        "<img width=\"%d\" src=\"evo-file://%s\" />",
-                                       size, camel_mime_part_get_filename (part));
+                                       size, filename);
                        } else {
                                g_string_append_printf (
                                        buffer,
                                        "<img src=\"evo-file://%s\" />",
-                                       camel_mime_part_get_filename (part));
+                                       filename);
                        }
                }
 
@@ -180,7 +184,7 @@ write_contact_picture (CamelMimePart *part,
        }
 
        b64 = g_base64_encode (ba->data, ba->len);
-       ct = camel_mime_part_get_content_type (part);
+       ct = camel_mime_part_get_content_type (mime_part);
        content_type = camel_content_type_simple (ct);
 
        if (size >= 0) {
@@ -202,11 +206,12 @@ write_contact_picture (CamelMimePart *part,
 static void
 format_full_headers (EMailFormatter *formatter,
                      GString *buffer,
-                     CamelMedium *part,
+                     EMailPart *part,
                      guint32 mode,
                      guint32 flags,
                      GCancellable *cancellable)
 {
+       CamelMimePart *mime_part;
        const gchar *charset;
        CamelContentType *ct;
        struct _camel_header_raw *header;
@@ -223,6 +228,8 @@ format_full_headers (EMailFormatter *formatter,
        if (g_cancellable_is_cancelled (cancellable))
                return;
 
+       mime_part = e_mail_part_ref_mime_part (part);
+
        switch (gtk_widget_get_default_direction ()) {
                case GTK_TEXT_DIR_RTL:
                        direction = "rtl";
@@ -235,7 +242,7 @@ format_full_headers (EMailFormatter *formatter,
                        break;
        }
 
-       ct = camel_mime_part_get_content_type ((CamelMimePart *) part);
+       ct = camel_mime_part_get_content_type (mime_part);
        charset = camel_content_type_param (ct, "charset");
        charset = camel_iconv_charset_name (charset);
        hdr_charset = e_mail_formatter_dup_charset (formatter);
@@ -253,7 +260,7 @@ format_full_headers (EMailFormatter *formatter,
                flags & E_MAIL_FORMATTER_HEADER_FLAG_COLLAPSED ? "none" : "table",
                direction);
 
-       header = ((CamelMimePart *) part)->headers;
+       header = mime_part->headers;
        while (header != NULL) {
                if (!g_ascii_strcasecmp (header->name, "Sender")) {
                        struct _camel_header_address *addrs;
@@ -339,7 +346,7 @@ format_full_headers (EMailFormatter *formatter,
 
        /* dump selected headers */
        if (mode & E_MAIL_FORMATTER_MODE_ALL_HEADERS) {
-               header = ((CamelMimePart *) part)->headers;
+               header = mime_part->headers;
                while (header != NULL) {
                        e_mail_formatter_format_header (
                                formatter, buffer,
@@ -360,7 +367,7 @@ format_full_headers (EMailFormatter *formatter,
                        EMailFormatterHeader *h = link->data;
                        gint mailer, face;
 
-                       header = ((CamelMimePart *) part)->headers;
+                       header = mime_part->headers;
                        mailer = !g_ascii_strcasecmp (h->name, "X-Evolution-Mailer");
                        face = !g_ascii_strcasecmp (h->name, "Face");
 
@@ -431,7 +438,7 @@ format_full_headers (EMailFormatter *formatter,
 
        g_string_append (buffer, "</table></td>");
 
-       if (photo_name) {
+       if (photo_name != NULL) {
                gchar *name;
 
                name = g_uri_escape_string (photo_name, NULL, FALSE);
@@ -449,25 +456,27 @@ format_full_headers (EMailFormatter *formatter,
        }
 
        if (!contact_has_photo && face_decoded) {
-               CamelMimePart *part;
+               CamelMimePart *image_part;
 
-               part = camel_mime_part_new ();
+               image_part = camel_mime_part_new ();
                camel_mime_part_set_content (
-                       (CamelMimePart *) part,
+                       image_part,
                        (const gchar *) face_header_value,
                        face_header_len, "image/png");
 
                g_string_append (
                        buffer,
                        "<td align=\"right\" valign=\"top\">");
-               write_contact_picture (part, 48, buffer);
+               write_contact_picture (image_part, 48, buffer);
                g_string_append (buffer, "</td>");
 
-               g_object_unref (part);
+               g_object_unref (image_part);
                g_free (face_header_value);
        }
 
        g_string_append (buffer, "</tr></table>");
+
+       g_object_unref (mime_part);
 }
 
 static gboolean
@@ -546,14 +555,14 @@ emfe_headers_format (EMailFormatterExtension *extension,
 
        if (is_collapsable)
                format_short_headers (
-                       formatter, buffer,
-                       CAMEL_MEDIUM (mime_part),
+                       formatter,
+                       buffer, part,
                        context->flags,
                        cancellable);
 
        format_full_headers (
-               formatter, buffer,
-               CAMEL_MEDIUM (mime_part),
+               formatter,
+               buffer, part,
                context->mode,
                context->flags,
                cancellable);
diff --git a/em-format/e-mail-formatter-utils.c b/em-format/e-mail-formatter-utils.c
index f3f6f24..1967a61 100644
--- a/em-format/e-mail-formatter-utils.c
+++ b/em-format/e-mail-formatter-utils.c
@@ -47,6 +47,7 @@ e_mail_formatter_format_text_header (EMailFormatter *formatter,
 {
        GtkTextDirection direction;
        const gchar *fmt, *html;
+       const gchar *display;
        gchar *mhtml = NULL;
 
        g_return_if_fail (E_IS_MAIL_FORMATTER (formatter));
@@ -104,9 +105,12 @@ e_mail_formatter_format_text_header (EMailFormatter *formatter,
                                "</tr>";
        }
 
-       g_string_append_printf (
-               buffer, fmt,
-               (flags & E_MAIL_FORMATTER_HEADER_FLAG_HIDDEN ? "none" : "table-row"), label, html);
+       if (flags & E_MAIL_FORMATTER_HEADER_FLAG_HIDDEN)
+               display = "none";
+       else
+               display = "table-row";
+
+       g_string_append_printf (buffer, fmt, display, label, html);
 
        g_free (mhtml);
 }
@@ -278,7 +282,7 @@ e_mail_formatter_format_header (EMailFormatter *formatter,
                                 guint32 flags,
                                 const gchar *charset)
 {
-       gchar *name, *buf, *value = NULL;
+       gchar *canon_name, *buf, *value = NULL;
        const gchar *label, *txt;
        gboolean addrspec = FALSE;
        gchar *str_field = NULL;
@@ -289,18 +293,18 @@ e_mail_formatter_format_header (EMailFormatter *formatter,
        g_return_if_fail (header_name != NULL);
        g_return_if_fail (header_value != NULL);
 
-       name = g_alloca (strlen (header_name) + 1);
-       strcpy (name, header_name);
-       e_mail_formatter_canon_header_name (name);
+       canon_name = g_alloca (strlen (header_name) + 1);
+       strcpy (canon_name, header_name);
+       e_mail_formatter_canon_header_name (canon_name);
 
        for (i = 0; addrspec_hdrs[i]; i++) {
-               if (g_str_equal (name, addrspec_hdrs[i])) {
+               if (g_str_equal (canon_name, addrspec_hdrs[i])) {
                        addrspec = TRUE;
                        break;
                }
        }
 
-       label = _(name);
+       label = _(canon_name);
 
        if (addrspec) {
                struct _camel_header_address *addrs;
@@ -343,20 +347,21 @@ e_mail_formatter_format_header (EMailFormatter *formatter,
                flags |= E_MAIL_FORMATTER_HEADER_FLAG_HTML;
                flags |= E_MAIL_FORMATTER_HEADER_FLAG_BOLD;
 
-       } else if (g_str_equal (name, "Subject")) {
+       } else if (g_str_equal (canon_name, "Subject")) {
                buf = camel_header_unfold (header_value);
                txt = value = camel_header_decode_string (buf, charset);
                g_free (buf);
 
                flags |= E_MAIL_FORMATTER_HEADER_FLAG_BOLD;
 
-       } else if (g_str_equal (name, "X-evolution-mailer")) {
+       } else if (g_str_equal (canon_name, "X-Evolution-Mailer")) {
                /* pseudo-header */
                label = _("Mailer");
                txt = value = camel_header_format_ctext (header_value, charset);
                flags |= E_MAIL_FORMATTER_HEADER_FLAG_BOLD;
 
-       } else if (g_str_equal (name, "Date") || g_str_equal (name, "Resent-Date")) {
+       } else if (g_str_equal (canon_name, "Date") ||
+                  g_str_equal (canon_name, "Resent-Date")) {
                CamelMimeFilterToHTMLFlags text_format_flags;
                gint msg_offset, local_tz;
                time_t msg_date;
@@ -411,7 +416,7 @@ e_mail_formatter_format_header (EMailFormatter *formatter,
                flags |= E_MAIL_FORMATTER_HEADER_FLAG_HTML;
                flags |= E_MAIL_FORMATTER_HEADER_FLAG_BOLD;
 
-       } else if (g_str_equal (name, "Newsgroups")) {
+       } else if (g_str_equal (canon_name, "Newsgroups")) {
                struct _camel_header_newsgroup *ng, *scan;
                GString *html;
 
@@ -447,7 +452,8 @@ e_mail_formatter_format_header (EMailFormatter *formatter,
                flags |= E_MAIL_FORMATTER_HEADER_FLAG_HTML;
                flags |= E_MAIL_FORMATTER_HEADER_FLAG_BOLD;
 
-       } else if (g_str_equal (name, "Received") || g_str_has_prefix (name, "X-")) {
+       } else if (g_str_equal (canon_name, "Received") ||
+                  g_str_has_prefix (canon_name, "X-")) {
                /* don't unfold Received nor extension headers */
                txt = value = camel_header_decode_string (header_value, charset);
 


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