aboutsummaryrefslogtreecommitdiffstats
path: root/mail/em-format-html.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2009-05-27 20:37:17 +0800
committerMatthew Barnes <mbarnes@redhat.com>2009-05-27 20:37:17 +0800
commitcc3a98fc1ad5bb87aa7335f3de404ee7feee1541 (patch)
tree763785c47096a6aba1ca6c03115b5e862c9f49ad /mail/em-format-html.c
parent10f8406b09318b1a3e4fe9d08d41a60239f9f3a6 (diff)
parente4afd3f9fb962ea1295a0657ec9f83a427829171 (diff)
downloadgsoc2013-evolution-cc3a98fc1ad5bb87aa7335f3de404ee7feee1541.tar.gz
gsoc2013-evolution-cc3a98fc1ad5bb87aa7335f3de404ee7feee1541.tar.zst
gsoc2013-evolution-cc3a98fc1ad5bb87aa7335f3de404ee7feee1541.zip
Merge branch 'master' into kill-bonobo
Conflicts: a11y/widgets/ea-combo-button.c a11y/widgets/ea-combo-button.h addressbook/gui/component/addressbook-component.c addressbook/gui/component/addressbook-component.h addressbook/gui/component/addressbook-view.c addressbook/gui/component/addressbook-view.h addressbook/gui/component/component-factory.c addressbook/gui/widgets/e-addressbook-view.c addressbook/gui/widgets/eab-contact-display.c addressbook/gui/widgets/eab-gui-util.h addressbook/gui/widgets/eab-menu.c addressbook/gui/widgets/eab-menu.h addressbook/gui/widgets/eab-popup-control.c addressbook/gui/widgets/eab-popup-control.h addressbook/gui/widgets/eab-popup.c addressbook/gui/widgets/eab-popup.h calendar/gui/cal-search-bar.c calendar/gui/calendar-commands.c calendar/gui/calendar-component.c calendar/gui/comp-editor-factory.c calendar/gui/comp-editor-factory.h calendar/gui/control-factory.c calendar/gui/dialogs/comp-editor.c calendar/gui/e-cal-component-memo-preview.c calendar/gui/e-cal-component-memo-preview.h calendar/gui/e-calendar-table.c calendar/gui/e-memo-table.c calendar/gui/e-memos.c calendar/gui/e-tasks.c calendar/gui/gnome-cal.c calendar/gui/gnome-cal.h calendar/gui/itip-bonobo-control.c calendar/gui/itip-bonobo-control.h calendar/gui/main.c calendar/gui/memos-component.c calendar/gui/memos-control.c calendar/gui/memos-control.h calendar/gui/migration.c calendar/gui/migration.h calendar/gui/tasks-component.c calendar/gui/tasks-control.c calendar/importers/main.c composer/Makefile.am composer/e-composer-header-table.c composer/e-composer-header.c composer/e-composer-header.h composer/e-composer-name-header.c composer/e-composer-private.c composer/e-composer-text-header.c composer/e-msg-composer.c composer/e-msg-composer.h e-util/e-corba-utils.h e-util/e-logger.c e-util/e-logger.h e-util/e-util-labels.c e-util/e-util-labels.h em-format/em-format.c mail/Makefile.am mail/e-mail-shell-migrate.c mail/em-account-editor.c mail/em-account-editor.h mail/em-composer-prefs.c mail/em-composer-utils.c mail/em-composer-utils.h mail/em-folder-browser.c mail/em-folder-tree-model.c mail/em-folder-tree.c mail/em-folder-tree.h mail/em-folder-utils.c mail/em-folder-utils.h mail/em-folder-view.c mail/em-format-html-display.c mail/em-format-html.c mail/em-mailer-prefs.c mail/em-mailer-prefs.h mail/em-message-browser.c mail/em-message-browser.h mail/em-network-prefs.h mail/em-popup.c mail/em-utils.c mail/importers/Makefile.am mail/mail-component-factory.c mail/mail-component.c mail/mail-config-factory.c mail/mail-config-factory.h mail/mail-config.c mail/mail-dialogs.glade mail/mail-types.h plugins/calendar-weather/calendar-weather.c plugins/mail-account-disable/mail-account-disable.c plugins/select-one-source/select-one-source.c po/POTFILES.in shell/e-component-registry.c shell/e-component-registry.h shell/e-component-view.c shell/e-component-view.h shell/e-corba-config-page.c shell/e-corba-config-page.h shell/e-shell-constants.h shell/e-shell-settings-dialog.c shell/e-shell-settings-dialog.h shell/e-shell-window-commands.c shell/e-shell-window.c shell/e-shell.h shell/e-sidebar.c shell/e-sidebar.h shell/e-user-creatable-items-handler.c shell/e-user-creatable-items-handler.h shell/es-menu.c shell/es-menu.h shell/evolution-component.h shell/evolution-config-control.c shell/evolution-config-control.h shell/evolution-listener.c shell/evolution-listener.h shell/evolution-shell-component-utils.c shell/evolution-shell-component-utils.h shell/importer/evolution-importer-client.c shell/importer/evolution-importer-client.h shell/importer/evolution-importer-listener.c shell/importer/evolution-importer-listener.h shell/importer/evolution-importer.c shell/importer/evolution-importer.h shell/importer/evolution-intelligent-importer.c shell/importer/evolution-intelligent-importer.h shell/importer/intelligent.c shell/main.c shell/test/evolution-test-component.c shell/test/evolution-test-component.h widgets/menus/gal-view-instance.c widgets/menus/gal-view-menus.c widgets/menus/gal-view-menus.h widgets/misc/Makefile.am widgets/misc/e-activity-handler.c widgets/misc/e-activity-handler.h widgets/misc/e-charset-picker.c widgets/misc/e-combo-button.c widgets/misc/e-combo-button.h widgets/misc/e-config-page.h widgets/misc/e-dropdown-button.c widgets/misc/e-dropdown-button.h widgets/misc/e-filter-bar.c widgets/misc/e-info-label.c widgets/misc/e-info-label.h widgets/misc/e-multi-config-dialog.c widgets/misc/e-multi-config-dialog.h widgets/misc/e-search-bar.c widgets/misc/e-search-bar.h widgets/misc/e-task-bar.c widgets/misc/e-task-bar.h widgets/misc/e-task-widget.c widgets/misc/e-task-widget.h widgets/misc/test-dropdown-button.c widgets/misc/test-error.c widgets/misc/test-info-label.c widgets/table/e-table-example-1.c
Diffstat (limited to 'mail/em-format-html.c')
-rw-r--r--mail/em-format-html.c128
1 files changed, 63 insertions, 65 deletions
diff --git a/mail/em-format-html.c b/mail/em-format-html.c
index cbf90a9214..6bc4a79794 100644
--- a/mail/em-format-html.c
+++ b/mail/em-format-html.c
@@ -10,7 +10,7 @@
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
*
*
* Authors:
@@ -978,7 +978,6 @@ em_format_html_get_color (EMFormatHTML *efh,
GdkColor *format_color;
g_return_if_fail (EM_IS_FORMAT_HTML (efh));
- g_return_if_fail (type >= 0);
g_return_if_fail (type < EM_FORMAT_HTML_NUM_COLOR_TYPES);
g_return_if_fail (color != NULL);
@@ -998,7 +997,6 @@ em_format_html_set_color (EMFormatHTML *efh,
const gchar *property_name;
g_return_if_fail (EM_IS_FORMAT_HTML (efh));
- g_return_if_fail (type >= 0);
g_return_if_fail (type < EM_FORMAT_HTML_NUM_COLOR_TYPES);
g_return_if_fail (color != NULL);
@@ -2014,40 +2012,40 @@ efh_image(EMFormatHTML *efh, CamelStream *stream, CamelMimePart *part, EMFormatH
}
static EMFormatHandler type_builtin_table[] = {
- { "image/gif", (EMFormatFunc)efh_image },
- { "image/jpeg", (EMFormatFunc)efh_image },
- { "image/png", (EMFormatFunc)efh_image },
- { "image/x-png", (EMFormatFunc)efh_image },
- { "image/tiff", (EMFormatFunc)efh_image },
- { "image/x-bmp", (EMFormatFunc)efh_image },
- { "image/bmp", (EMFormatFunc)efh_image },
- { "image/svg", (EMFormatFunc)efh_image },
- { "image/x-cmu-raster", (EMFormatFunc)efh_image },
- { "image/x-ico", (EMFormatFunc)efh_image },
- { "image/x-portable-anymap", (EMFormatFunc)efh_image },
- { "image/x-portable-bitmap", (EMFormatFunc)efh_image },
- { "image/x-portable-graymap", (EMFormatFunc)efh_image },
- { "image/x-portable-pixmap", (EMFormatFunc)efh_image },
- { "image/x-xpixmap", (EMFormatFunc)efh_image },
- { "text/enriched", (EMFormatFunc)efh_text_enriched },
- { "text/plain", (EMFormatFunc)efh_text_plain },
- { "text/html", (EMFormatFunc)efh_text_html },
- { "text/richtext", (EMFormatFunc)efh_text_enriched },
- { "text/*", (EMFormatFunc)efh_text_plain },
- { "message/external-body", (EMFormatFunc)efh_message_external },
- { "message/delivery-status", (EMFormatFunc)efh_message_deliverystatus },
- { "multipart/related", (EMFormatFunc)efh_multipart_related },
+ { (gchar *) "image/gif", (EMFormatFunc)efh_image },
+ { (gchar *) "image/jpeg", (EMFormatFunc)efh_image },
+ { (gchar *) "image/png", (EMFormatFunc)efh_image },
+ { (gchar *) "image/x-png", (EMFormatFunc)efh_image },
+ { (gchar *) "image/tiff", (EMFormatFunc)efh_image },
+ { (gchar *) "image/x-bmp", (EMFormatFunc)efh_image },
+ { (gchar *) "image/bmp", (EMFormatFunc)efh_image },
+ { (gchar *) "image/svg", (EMFormatFunc)efh_image },
+ { (gchar *) "image/x-cmu-raster", (EMFormatFunc)efh_image },
+ { (gchar *) "image/x-ico", (EMFormatFunc)efh_image },
+ { (gchar *) "image/x-portable-anymap", (EMFormatFunc)efh_image },
+ { (gchar *) "image/x-portable-bitmap", (EMFormatFunc)efh_image },
+ { (gchar *) "image/x-portable-graymap", (EMFormatFunc)efh_image },
+ { (gchar *) "image/x-portable-pixmap", (EMFormatFunc)efh_image },
+ { (gchar *) "image/x-xpixmap", (EMFormatFunc)efh_image },
+ { (gchar *) "text/enriched", (EMFormatFunc)efh_text_enriched },
+ { (gchar *) "text/plain", (EMFormatFunc)efh_text_plain },
+ { (gchar *) "text/html", (EMFormatFunc)efh_text_html },
+ { (gchar *) "text/richtext", (EMFormatFunc)efh_text_enriched },
+ { (gchar *) "text/*", (EMFormatFunc)efh_text_plain },
+ { (gchar *) "message/external-body", (EMFormatFunc)efh_message_external },
+ { (gchar *) "message/delivery-status", (EMFormatFunc)efh_message_deliverystatus },
+ { (gchar *) "multipart/related", (EMFormatFunc)efh_multipart_related },
/* This is where one adds those busted, non-registered types,
that some idiot mailer writers out there decide to pull out
of their proverbials at random. */
- { "image/jpg", (EMFormatFunc)efh_image },
- { "image/pjpeg", (EMFormatFunc)efh_image },
+ { (gchar *) "image/jpg", (EMFormatFunc)efh_image },
+ { (gchar *) "image/pjpeg", (EMFormatFunc)efh_image },
/* special internal types */
- { "x-evolution/message/rfc822", (EMFormatFunc)efh_format_message }
+ { (gchar *) "x-evolution/message/rfc822", (EMFormatFunc)efh_format_message }
};
static void
@@ -2071,18 +2069,18 @@ efh_format_text_header (EMFormatHTML *emfh, CamelStream *stream, const char *lab
const char *fmt, *html;
char *mhtml = NULL;
gboolean is_rtl;
-
+
if (value == NULL)
return;
while (*value == ' ')
value++;
-
+
if (!(flags & EM_FORMAT_HTML_HEADER_HTML))
html = mhtml = camel_text_to_html (value, emfh->text_html_flags, 0);
- else
+ else
html = value;
-
+
is_rtl = gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL;
if (emfh->simple_headers) {
fmt = "<b>%s</b>: %s<br>";
@@ -2099,7 +2097,7 @@ efh_format_text_header (EMFormatHTML *emfh, CamelStream *stream, const char *lab
else
fmt = "<tr><th align=\"right\" valign=\"top\" nowrap>%s<b>&nbsp;</b></th><td valign=top>%s</td></tr>";
} else {
-
+
if (flags & EM_FORMAT_HEADER_BOLD) {
if (is_rtl)
fmt = "<tr><td align=\"right\" valign=\"top\" width=\"100%%\">%2$s</td><th align=\"left\" nowrap>%1$s:<b>&nbsp;</b></th></tr>";
@@ -2118,7 +2116,7 @@ efh_format_text_header (EMFormatHTML *emfh, CamelStream *stream, const char *lab
g_free(mhtml);
}
-static char *addrspec_hdrs[] = {
+static const gchar *addrspec_hdrs[] = {
"Sender", "From", "Reply-To", "To", "Cc", "Bcc",
"Resent-Sender", "Resent-From", "Resent-Reply-To",
"Resent-To", "Resent-Cc", "Resent-Bcc", NULL
@@ -2238,22 +2236,22 @@ static void
canon_header_name (char *name)
{
char *inptr = name;
-
+
/* canonicalise the header name... first letter is
* capitalised and any letter following a '-' also gets
* capitalised */
-
+
if (*inptr >= 'a' && *inptr <= 'z')
*inptr -= 0x20;
-
+
inptr++;
-
+
while (*inptr) {
if (inptr[-1] == '-' && *inptr >= 'a' && *inptr <= 'z')
*inptr -= 0x20;
else if (*inptr >= 'A' && *inptr <= 'Z')
*inptr += 0x20;
-
+
inptr++;
}
}
@@ -2278,22 +2276,22 @@ efh_format_header(EMFormat *emf, CamelStream *stream, CamelMedium *part, struct
break;
}
}
-
+
label = _(name);
-
+
if (addrspec) {
struct _camel_header_address *addrs;
GString *html;
char *img;
-
+
buf = camel_header_unfold (header->value);
if (!(addrs = camel_header_address_decode (buf, emf->charset ? emf->charset : emf->default_charset))) {
g_free (buf);
return;
}
-
+
g_free (buf);
-
+
html = g_string_new("");
img = efh_format_address(efh, html, addrs, (char *)label);
@@ -2303,7 +2301,7 @@ efh_format_header(EMFormat *emf, CamelStream *stream, CamelMedium *part, struct
flags |= EM_FORMAT_HTML_HEADER_NODEC;
g_free (img);
}
-
+
camel_header_address_unref(addrs);
txt = value = html->str;
g_string_free(html, FALSE);
@@ -2313,7 +2311,7 @@ efh_format_header(EMFormat *emf, CamelStream *stream, CamelMedium *part, struct
buf = camel_header_unfold (header->value);
txt = value = camel_header_decode_string (buf, charset);
g_free (buf);
-
+
flags |= EM_FORMAT_HEADER_BOLD;
} else if (!strcmp(name, "X-evolution-mailer")) {
/* pseudo-header */
@@ -2340,7 +2338,7 @@ efh_format_header(EMFormat *emf, CamelStream *stream, CamelMedium *part, struct
if (msg_offset) {
char buf[256], *html;
-
+
msg_offset += (local.tm_hour * 60) + local.tm_min;
if (msg_offset >= (24 * 60) || msg_offset < 0) {
/* translators: strftime format for local time equivalent in Date header display, with day */
@@ -2353,27 +2351,27 @@ efh_format_header(EMFormat *emf, CamelStream *stream, CamelMedium *part, struct
e_utf8_strftime(buf, sizeof(buf), msg, &local);
g_free(msg);
}
-
+
html = camel_text_to_html(txt, efh->text_html_flags, 0);
txt = value = g_strdup_printf("%s %s", html, buf);
g_free(html);
flags |= EM_FORMAT_HTML_HEADER_HTML;
}
-
+
flags |= EM_FORMAT_HEADER_BOLD;
} else if (!strcmp(name, "Newsgroups")) {
struct _camel_header_newsgroup *ng, *scan;
GString *html;
-
+
buf = camel_header_unfold (header->value);
-
+
if (!(ng = camel_header_newsgroups_decode (buf))) {
g_free (buf);
return;
}
-
+
g_free (buf);
-
+
html = g_string_new("");
scan = ng;
while (scan) {
@@ -2382,9 +2380,9 @@ efh_format_header(EMFormat *emf, CamelStream *stream, CamelMedium *part, struct
if (scan)
g_string_append_printf(html, ", ");
}
-
+
camel_header_newsgroups_free(ng);
-
+
txt = html->str;
g_string_free(html, FALSE);
flags |= EM_FORMAT_HEADER_BOLD|EM_FORMAT_HTML_HEADER_HTML;
@@ -2397,9 +2395,9 @@ efh_format_header(EMFormat *emf, CamelStream *stream, CamelMedium *part, struct
txt = value = camel_header_decode_string (buf, charset);
g_free (buf);
}
-
+
efh_format_text_header(efh, stream, label, txt, flags);
-
+
g_free (value);
g_free (str_field);
}
@@ -2421,7 +2419,7 @@ efh_format_headers(EMFormatHTML *efh, CamelStream *stream, CamelMedium *part)
char *header_sender = NULL, *header_from = NULL, *name;
gboolean mail_from_delegate = FALSE;
const char *hdr_charset;
-
+
if (!part)
return;
@@ -2436,9 +2434,9 @@ efh_format_headers(EMFormatHTML *efh, CamelStream *stream, CamelMedium *part)
e_color_to_value (
&efh->priv->colors[
EM_FORMAT_HTML_COLOR_HEADER]));
-
+
hdr_charset = emf->charset ? emf->charset : emf->default_charset;
-
+
header = ((CamelMimePart *)part)->headers;
while (header) {
if (!g_ascii_strcasecmp (header->name, "Sender")) {
@@ -2477,7 +2475,7 @@ efh_format_headers(EMFormatHTML *efh, CamelStream *stream, CamelMedium *part)
header = header->next;
}
-
+
if (header_sender && header_from && mail_from_delegate) {
camel_stream_printf(stream, "<tr><td><table border=1 width=\"100%%\" cellspacing=2 cellpadding=2><tr>");
if(gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL)
@@ -2541,7 +2539,7 @@ efh_format_headers(EMFormatHTML *efh, CamelStream *stream, CamelMedium *part)
if (!use_header)
use_header = header;
- xmailer.name = "X-Evolution-Mailer";
+ xmailer.name = (gchar *) "X-Evolution-Mailer";
xmailer.value = use_header->value;
mailer_shown = TRUE;
@@ -2550,11 +2548,11 @@ efh_format_headers(EMFormatHTML *efh, CamelStream *stream, CamelMedium *part)
have_icon = TRUE;
} else if (!face_decoded && face && !g_ascii_strcasecmp (header->name, "Face")) {
char *cp = header->value;
-
+
/* Skip over spaces */
while (*cp == ' ')
cp++;
-
+
face_header_value = g_base64_decode (cp, &face_header_len);
face_header_value = g_realloc (face_header_value, face_header_len + 1);
face_header_value[face_header_len] = 0;