SylpheedでHTMLメールと添付ありのメールを区別する
htmlメールはsylpheedさんに添付アリのメールと認識されるので、メールのリスト見ただけだとホントに添付アリのメールがどれなのかわからないのが困る。
とつぶやいている人がいて、なるほどと思ったので、やってみました。
- text/plain,text/htmlのみからなるメールについては小さなメールアイコンを表示
- それ以外は従来通りクリップアイコンを表示
という動作をするようにしてみました。
上記を実現するためのパッチは以下の通りです。
diff -uNr '--exclude=.svn' sylpheed.orig/src/icons/htmlmail.xpm sylpheed.rev/src/icons/htmlmail.xpm --- sylpheed.orig/src/icons/htmlmail.xpm 1970-01-01 09:00:00.000000000 +0900 +++ sylpheed.rev/src/icons/htmlmail.xpm 2012-08-18 16:29:42.000000000 +0900 @@ -0,0 +1,44 @@ +/* XPM */ +static char *htmlmail_xpm[] = { +"8 12 28 1", +" c None", +"B c #000000", +"C c #474747", +"D c #F5F5F5", +"E c #323232", +"F c #F4F4F4", +"G c #C1C1C1", +"H c #EAEAEA", +"I c #EBEBEB", +"J c #AAAAAA", +"K c #3D3D3D", +"L c #EFEFEF", +"M c #F3F3F3", +"N c #3F3F3F", +"O c #464646", +"P c #BDBDBD", +"Q c #D6D6D6", +"R c #A0A0A0", +"S c #F2F2F2", +"T c #BABABA", +"U c #E9E9E9", +"V c #8C8C8C", +"W c #BFBFBF", +"X c #DADADA", +"Y c #CDCDCD", +"Z c #A7A7A7", +"a c #D3D3D3", +"b c #282828", +" ", +" ", +" ", +" BBBBBB ", +"BBDDDDBB", +"BDCLDCDB", +"BDDCCDDB", +"BDCGGCDB", +"BCDDDDCB", +" BBBBBB ", +" ", +" " +}; diff -uNr '--exclude=.svn' sylpheed.orig/src/stock_pixmap.c sylpheed.rev/src/stock_pixmap.c --- sylpheed.orig/src/stock_pixmap.c 2012-08-18 16:28:20.000000000 +0900 +++ sylpheed.rev/src/stock_pixmap.c 2012-08-18 16:29:20.000000000 +0900 @@ -34,6 +34,7 @@ #include "icons/deleted.xpm" #include "icons/error.xpm" #include "icons/forwarded.xpm" +#include "icons/htmlmail.xpm" #include "icons/interface.xpm" #include "icons/jpilot.xpm" #include "icons/ldap.xpm" @@ -110,6 +111,7 @@ {error_xpm , NULL, NULL}, {forwarded_xpm , NULL, NULL}, {NULL, NULL, NULL, NULL, group, sizeof(group), "group", 0}, + {htmlmail_xpm , NULL, NULL}, {interface_xpm , NULL, NULL}, {jpilot_xpm , NULL, NULL}, {ldap_xpm , NULL, NULL}, diff -uNr '--exclude=.svn' sylpheed.orig/src/stock_pixmap.h sylpheed.rev/src/stock_pixmap.h --- sylpheed.orig/src/stock_pixmap.h 2012-08-18 16:28:20.000000000 +0900 +++ sylpheed.rev/src/stock_pixmap.h 2012-08-18 16:29:20.000000000 +0900 @@ -38,6 +38,7 @@ STOCK_PIXMAP_ERROR, STOCK_PIXMAP_FORWARDED, STOCK_PIXMAP_GROUP, + STOCK_PIXMAP_HTMLMAIL, STOCK_PIXMAP_INTERFACE, STOCK_PIXMAP_JPILOT, STOCK_PIXMAP_LDAP, diff -uNr '--exclude=.svn' sylpheed.orig/src/summaryview.c sylpheed.rev/src/summaryview.c --- sylpheed.orig/src/summaryview.c 2012-08-18 16:28:20.000000000 +0900 +++ sylpheed.rev/src/summaryview.c 2012-08-18 16:38:22.000000000 +0900 @@ -139,6 +139,7 @@ static GdkPixbuf *forwarded_pixbuf; static GdkPixbuf *clip_pixbuf; +static GdkPixbuf *htmlmail_pixbuf; static void summary_clear_list_full (SummaryView *summaryview, gboolean is_refresh); @@ -624,6 +625,8 @@ &forwarded_pixbuf); stock_pixbuf_gdk(summaryview->treeview, STOCK_PIXMAP_CLIP, &clip_pixbuf); + stock_pixbuf_gdk(summaryview->treeview, STOCK_PIXMAP_HTMLMAIL, + &htmlmail_pixbuf); font_desc = pango_font_description_new(); size = pango_font_description_get_size @@ -2416,6 +2419,7 @@ MsgFlags flags; GdkColor color; gint color_val; + MimeInfo *mimeinfo = NULL; if (!msginfo) { GET_MSG_INFO(msginfo, iter); @@ -2473,8 +2477,23 @@ else if (MSG_IS_FORWARDED(flags)) unread_pix = forwarded_pixbuf; - if (MSG_IS_MIME(flags)) - mime_pix = clip_pixbuf; + if (MSG_IS_MIME(flags)) { + mimeinfo = procmime_scan_message(msginfo); + while (mimeinfo) { + if (mimeinfo->mime_type != MIME_TEXT && + mimeinfo->mime_type != MIME_TEXT_HTML && + mimeinfo->mime_type != MIME_MULTIPART) { + break; + } else { + mimeinfo = procmime_mimeinfo_next(mimeinfo); + } + } + if (mimeinfo) { + mime_pix = clip_pixbuf; + } else { + mime_pix = htmlmail_pixbuf; + } + } if (prefs_common.bold_unread) { if (MSG_IS_UNREAD(flags))