From b10ec13f8b5e2cd92d111c31fcd7d4d854f55474 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 10 Apr 2002 21:23:02 +0000 Subject: Handle the X-Mailer display style. (There is currently no GUI for * mail-config.c (config_read, mail_config_write, mail_config_get_x_mailer_display_style, mail_config_set_x_mailer_display_style): Handle the X-Mailer display style. (There is currently no GUI for configuring this.) * mail-format.c (write_headers, write_xmailer_header): Show X-Mailer/User-Agent (and Rupert's stamp of approval) as appropriate. svn path=/trunk/; revision=16430 --- mail/ChangeLog | 11 +++++++++ mail/mail-config.c | 23 ++++++++++++++++++ mail/mail-config.h | 10 ++++++++ mail/mail-format.c | 71 ++++++++++++++++++++++++++++++++++++++++++++---------- 4 files changed, 102 insertions(+), 13 deletions(-) diff --git a/mail/ChangeLog b/mail/ChangeLog index 83451115b5..a6328d659b 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,14 @@ +2002-04-10 Dan Winship + + * mail-config.c (config_read, mail_config_write, + mail_config_get_x_mailer_display_style, + mail_config_set_x_mailer_display_style): Handle the X-Mailer + display style. (There is currently no GUI for configuring this.) + + * mail-format.c (write_headers, write_xmailer_header): Show + X-Mailer/User-Agent (and Rupert's stamp of approval) as + appropriate. + 2002-04-09 Jeffrey Stedfast * mail-account-gui.c (setup_service): Kludge around the brokeness diff --git a/mail/mail-config.c b/mail/mail-config.c index 6e2963ad22..1ecbbb1ff2 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -112,6 +112,7 @@ typedef struct { MailConfigForwardStyle default_forward_style; MailConfigReplyStyle default_reply_style; MailConfigDisplayStyle message_display_style; + MailConfigXMailerDisplayStyle x_mailer_display_style; char *default_charset; GHashTable *threaded_hash; @@ -946,6 +947,11 @@ config_read (void) config->notify_filename = bonobo_config_get_string ( config->db, "/Mail/Notify/new_mail_notification_sound_file", NULL); + /* X-Mailer header display */ + config->x_mailer_display_style = bonobo_config_get_long_with_default ( + config->db, "/Mail/Format/x_mailer_display_style", + MAIL_CONFIG_XMAILER_NONE, NULL); + /* last filesel dir */ config->last_filesel_dir = bonobo_config_get_string ( config->db, "/Mail/Filesel/last_filesel_dir", NULL); @@ -1310,6 +1316,11 @@ mail_config_write_on_exit (void) bonobo_config_set_string_wrapper (config->db, "/Mail/Notify/new_mail_notification_sound_file", config->notify_filename, NULL); + /* X-Mailer Display */ + bonobo_config_set_long (config->db, + "/Mail/Format/x_mailer_display_style", + config->x_mailer_display_style, NULL); + /* last filesel dir */ bonobo_config_set_string_wrapper (config->db, "/Mail/Filesel/last_filesel_dir", config->last_filesel_dir, NULL); @@ -2132,6 +2143,18 @@ mail_config_set_new_mail_notify_sound_file (const char *filename) config->notify_filename = g_strdup (filename); } +MailConfigXMailerDisplayStyle +mail_config_get_x_mailer_display_style (void) +{ + return config->x_mailer_display_style; +} + +void +mail_config_set_x_mailer_display_style (MailConfigXMailerDisplayStyle style) +{ + config->x_mailer_display_style = style; +} + const char * mail_config_get_label_name (int label) { diff --git a/mail/mail-config.h b/mail/mail-config.h index 917924d025..4d34374d9a 100644 --- a/mail/mail-config.h +++ b/mail/mail-config.h @@ -114,6 +114,13 @@ typedef enum { MAIL_CONFIG_NOTIFY_PLAY_SOUND, } MailConfigNewMailNotify; +typedef enum { + MAIL_CONFIG_XMAILER_NONE = 0, + MAIL_CONFIG_XMAILER_EVO = 1, + MAIL_CONFIG_XMAILER_OTHER = 2, + MAIL_CONFIG_XMAILER_RUPERT_APPROVED = 4 +} MailConfigXMailerDisplayStyle; + typedef struct { char *name; guint32 color; @@ -234,6 +241,9 @@ void mail_config_set_new_mail_notify (MailConfigNewMailNotify const char *mail_config_get_new_mail_notify_sound_file (void); void mail_config_set_new_mail_notify_sound_file (const char *filename); +MailConfigXMailerDisplayStyle mail_config_get_x_mailer_display_style (void); +void mail_config_set_x_mailer_display_style (MailConfigXMailerDisplayStyle style); + const char *mail_config_get_default_charset (void); void mail_config_set_default_charset (const char *charset); diff --git a/mail/mail-format.c b/mail/mail-format.c index d0f5da6757..604740793c 100644 --- a/mail/mail-format.c +++ b/mail/mail-format.c @@ -895,15 +895,39 @@ write_default_header(CamelMimeMessage *message, MailDisplay *md, } } +static gboolean +write_xmailer_header (CamelMimeMessage *message, MailDisplay *md, + GtkHTML *html, GtkHTMLStream *stream, + MailConfigXMailerDisplayStyle xm) +{ + const char *xmailer, *evolution; + + xmailer = camel_medium_get_header (CAMEL_MEDIUM (message), "X-Mailer"); + if (!xmailer) { + xmailer = camel_medium_get_header (CAMEL_MEDIUM (message), "User-Agent"); + if (!xmailer) + return FALSE; + } + + evolution = strstr (xmailer, "Evolution"); + if ((xm & MAIL_CONFIG_XMAILER_OTHER) || + (evolution && (xm & MAIL_CONFIG_XMAILER_EVO))) + write_text_header (_("Mailer"), xmailer, WRITE_BOLD, html, stream); + + return evolution != NULL && (xm & MAIL_CONFIG_XMAILER_RUPERT_APPROVED); +} + #define COLOR_IS_LIGHT(r, g, b) ((r + g + b) > (128 * 3)) static void write_headers (CamelMimeMessage *message, MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream) { + MailConfigXMailerDisplayStyle xm = mail_config_get_x_mailer_display_style (); gboolean full = (md->display_style == MAIL_CONFIG_DISPLAY_FULL_HEADERS); char bgcolor[7], fontcolor[7]; GtkStyle *style = NULL; + gboolean evo_icon = FALSE; int i; /* My favorite thing to do... muck around with colors so we respect people's stupid themes. @@ -940,16 +964,20 @@ write_headers (CamelMimeMessage *message, MailDisplay *md, strcpy (fontcolor, "000000"); } - gtk_html_stream_printf (stream, - "" - "" - "" - "
" - "
" - "
" - "" - "" - "
\n", fontcolor, bgcolor); + gtk_html_stream_printf ( + stream, + "
" + /* Top margin */ + "" + /* Left margin */ + "" + /* Black border */ + "
" + /* Main header box */ + "
" + /* Internal header table */ + ""); + + if (!md->printing && evo_icon) { + gtk_html_stream_printf (stream, + "", + mail_display_get_url_for_icon (md, EVOLUTION_ICONSDIR "/monkey-16.png")); + } + mail_html_write (html, stream, - "
\n", + bgcolor, fontcolor); if (full) { struct _header_raw *header; @@ -975,12 +1003,29 @@ write_headers (CamelMimeMessage *message, MailDisplay *md, } else { for (i=0;i
" + "" + "
" - "
\n"); + /* Main header box */ + "
" + /* Black border */ + "
" + /* Right margin */ + "
" + "\n"); } static void -- cgit v1.2.3