talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 71662e37dbd0f6fda39d65810b2f62f789c99d72
parent 5b8104037ae9e92f3aad290767d3eaab68a908fc
Author: Colin Leroy <colin@colino.net>
Date:   Wed, 31 Oct 2012 10:25:17 +0000

2012-10-31 [colin]	3.8.1cvs109

	* src/folder_item_prefs.c
	* src/folder_item_prefs.h
	* src/messageview.c
	* src/prefs_folder_item.c
		Implement feature from bug #2569,
		"select html part on folder specific properties"
		Patch based on Andrej's patch.

Diffstat:
MChangeLog | 10++++++++++
MPATCHSETS | 1+
Mconfigure.ac | 2+-
Msrc/folder_item_prefs.c | 4++++
Msrc/folder_item_prefs.h | 6++++++
Msrc/messageview.c | 9+++++++--
Msrc/prefs_folder_item.c | 50+++++++++++++++++++++++++++++++++++++++++++++++++-
7 files changed, 78 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,13 @@ +2012-10-31 [colin] 3.8.1cvs109 + + * src/folder_item_prefs.c + * src/folder_item_prefs.h + * src/messageview.c + * src/prefs_folder_item.c + Implement feature from bug #2569, + "select html part on folder specific properties" + Patch based on Andrej's patch. + 2012-10-29 [wwp] 3.8.1cvs108 * src/textview.c diff --git a/PATCHSETS b/PATCHSETS @@ -4483,3 +4483,4 @@ ( cvs diff -u -r 1.36.2.207 -r 1.36.2.208 src/common/utils.c; cvs diff -u -r 1.20.2.82 -r 1.20.2.83 src/common/utils.h; cvs diff -u -r 1.96.2.251 -r 1.96.2.252 src/textview.c; ) > 3.8.1cvs106.patchset ( cvs diff -u -r 1.96.2.252 -r 1.96.2.253 src/textview.c; ) > 3.8.1cvs107.patchset ( cvs diff -u -r 1.96.2.253 -r 1.96.2.254 src/textview.c; ) > 3.8.1cvs108.patchset +( cvs diff -u -r 1.2.2.40 -r 1.2.2.41 src/folder_item_prefs.c; cvs diff -u -r 1.2.2.25 -r 1.2.2.26 src/folder_item_prefs.h; cvs diff -u -r 1.94.2.239 -r 1.94.2.240 src/messageview.c; cvs diff -u -r 1.52.2.88 -r 1.52.2.89 src/prefs_folder_item.c; ) > 3.8.1cvs109.patchset diff --git a/configure.ac b/configure.ac @@ -12,7 +12,7 @@ MINOR_VERSION=8 MICRO_VERSION=1 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=108 +EXTRA_VERSION=109 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/folder_item_prefs.c b/src/folder_item_prefs.c @@ -95,6 +95,8 @@ static PrefParam param[] = { NULL, NULL, NULL}, {"remove_old_bodies", "FALSE", &tmp_prefs.remove_old_bodies, P_BOOL, NULL, NULL, NULL}, + {"promote_html_part", "0", &tmp_prefs.promote_html_part, P_ENUM, + NULL, NULL, NULL}, {"compose_with_format", "FALSE", &tmp_prefs.compose_with_format, P_BOOL, NULL, NULL, NULL}, @@ -211,6 +213,7 @@ static FolderItemPrefs *folder_item_prefs_clear(FolderItemPrefs *prefs) prefs->offlinesync = FALSE; prefs->offlinesync_days = 0; prefs->remove_old_bodies = FALSE; + prefs->promote_html_part = HTML_PROMOTE_DEFAULT; prefs->compose_with_format = FALSE; prefs->compose_subject_format = NULL; @@ -270,6 +273,7 @@ void folder_item_prefs_copy_prefs(FolderItem * src, FolderItem * dest) tmp_prefs.offlinesync = src->prefs->offlinesync; tmp_prefs.offlinesync_days = src->prefs->offlinesync_days; tmp_prefs.remove_old_bodies = src->prefs->remove_old_bodies; + tmp_prefs.promote_html_part = src->prefs->promote_html_part; prefs_matcher_read_config(); diff --git a/src/folder_item_prefs.h b/src/folder_item_prefs.h @@ -26,6 +26,11 @@ typedef struct _FolderItemPrefs FolderItemPrefs; #include "folder.h" +typedef enum { + HTML_PROMOTE_DEFAULT=0, + HTML_PROMOTE_NEVER, + HTML_PROMOTE_ALWAYS +} HTMLPromoteType; struct _FolderItemPrefs { gchar * directory; @@ -38,6 +43,7 @@ struct _FolderItemPrefs { int offlinesync; int offlinesync_days; int remove_old_bodies; + HTMLPromoteType promote_html_part; gboolean request_return_receipt; gboolean enable_default_to; diff --git a/src/messageview.c b/src/messageview.c @@ -66,6 +66,7 @@ #include "quoted-printable.h" #include "version.h" #include "statusbar.h" +#include "folder_item_prefs.h" #ifndef USE_NEW_ADDRBOOK #include "addressbook.h" #else @@ -1503,7 +1504,9 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo, } else if (mimeinfo->type == MIMETYPE_TEXT && !strcasecmp(mimeinfo->subtype, "html") && mimeinfo->disposition != DISPOSITIONTYPE_ATTACHMENT && - prefs_common.promote_html_part) { + (msginfo->folder->prefs->promote_html_part == HTML_PROMOTE_ALWAYS || + (msginfo->folder->prefs->promote_html_part == HTML_PROMOTE_DEFAULT && + prefs_common.promote_html_part))) { mimeview_select_mimepart_icon(messageview->mimeview, mimeinfo); goto done; } @@ -1531,7 +1534,9 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo, } else if (mimeinfo->type == MIMETYPE_TEXT && !strcasecmp(mimeinfo->subtype, "html") && mimeinfo->disposition != DISPOSITIONTYPE_ATTACHMENT && - prefs_common.promote_html_part) { + (msginfo->folder->prefs->promote_html_part == HTML_PROMOTE_ALWAYS || + (msginfo->folder->prefs->promote_html_part == HTML_PROMOTE_DEFAULT && + prefs_common.promote_html_part))) { mimeview_select_mimepart_icon(messageview->mimeview, mimeinfo); goto done; } diff --git a/src/prefs_folder_item.c b/src/prefs_folder_item.c @@ -94,6 +94,7 @@ struct _FolderItemGeneralPage GtkWidget *entry_offlinesync; GtkWidget *label_end_offlinesync; GtkWidget *checkbtn_remove_old_offlinesync; + GtkWidget *promote_html_part; /* apply to sub folders */ #ifndef G_OS_WIN32 @@ -105,6 +106,7 @@ struct _FolderItemGeneralPage GtkWidget *enable_processing_when_opening_rec_checkbtn; GtkWidget *newmailcheck_rec_checkbtn; GtkWidget *offlinesync_rec_checkbtn; + GtkWidget *promote_html_part_rec_checkbtn; gint folder_color; }; @@ -240,6 +242,8 @@ static void prefs_folder_item_general_create_widget_func(PrefsPage * page_, GtkWidget *entry_offlinesync; GtkWidget *label_end_offlinesync; GtkWidget *checkbtn_remove_old_offlinesync; + GtkWidget *promote_html_part; + GtkListStore *promote_html_part_menu; #ifndef G_OS_WIN32 GtkWidget *simplify_subject_rec_checkbtn; @@ -250,6 +254,7 @@ static void prefs_folder_item_general_create_widget_func(PrefsPage * page_, GtkWidget *enable_processing_when_opening_rec_checkbtn; GtkWidget *newmailcheck_rec_checkbtn; GtkWidget *offlinesync_rec_checkbtn; + GtkWidget *promote_html_part_rec_checkbtn; page->item = item; @@ -490,6 +495,39 @@ static void prefs_folder_item_general_create_widget_func(PrefsPage * page_, rowcount++; + /* Select HTML part by default? */ + hbox = gtk_hbox_new (FALSE, 2); + gtk_widget_show (hbox); + gtk_table_attach (GTK_TABLE(table), hbox, 0, 2, + rowcount, rowcount+1, GTK_FILL, GTK_FILL, 0, 0); + + label = gtk_label_new(_("Select the HTML part of multipart messages:")); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0); + + promote_html_part = gtkut_sc_combobox_create (NULL, FALSE); + gtk_widget_show (promote_html_part); + gtk_box_pack_start (GTK_BOX(hbox), promote_html_part, FALSE, FALSE, 0); + + promote_html_part_menu = GTK_LIST_STORE(gtk_combo_box_get_model( + GTK_COMBO_BOX(promote_html_part))); + COMBOBOX_ADD (promote_html_part_menu, _("Default"), HTML_PROMOTE_DEFAULT); + COMBOBOX_ADD (promote_html_part_menu, _("No"), HTML_PROMOTE_NEVER); + COMBOBOX_ADD (promote_html_part_menu, _("Yes"), HTML_PROMOTE_ALWAYS); + + combobox_select_by_data(GTK_COMBO_BOX(promote_html_part), + item->prefs->promote_html_part); + + CLAWS_SET_TIP(hbox, _( + "\"Default\" will follow global preference (found in Preferences -> " + "Message View -> Text Options")); + + promote_html_part_rec_checkbtn = gtk_check_button_new(); + gtk_widget_show (promote_html_part_rec_checkbtn); + gtk_table_attach(GTK_TABLE(table), promote_html_part_rec_checkbtn, 2, 3, + rowcount, rowcount + 1, GTK_SHRINK, GTK_SHRINK, 0, 0); + rowcount++; + /* Synchronise folder for offline use */ checkbtn_offlinesync = gtk_check_button_new_with_label(_("Synchronise for offline use")); gtk_table_attach(GTK_TABLE(table), checkbtn_offlinesync, 0, 2, @@ -597,6 +635,7 @@ static void prefs_folder_item_general_create_widget_func(PrefsPage * page_, page->entry_offlinesync = entry_offlinesync; page->label_end_offlinesync = label_end_offlinesync; page->checkbtn_remove_old_offlinesync = checkbtn_remove_old_offlinesync; + page->promote_html_part = promote_html_part; #ifndef G_OS_WIN32 page->simplify_subject_rec_checkbtn = simplify_subject_rec_checkbtn; @@ -607,6 +646,7 @@ static void prefs_folder_item_general_create_widget_func(PrefsPage * page_, page->enable_processing_when_opening_rec_checkbtn = enable_processing_when_opening_rec_checkbtn; page->newmailcheck_rec_checkbtn = newmailcheck_rec_checkbtn; page->offlinesync_rec_checkbtn = offlinesync_rec_checkbtn; + page->promote_html_part_rec_checkbtn = promote_html_part_rec_checkbtn; page->page.widget = table; @@ -632,6 +672,7 @@ static void general_save_folder_prefs(FolderItem *folder, FolderItemGeneralPage gboolean all = FALSE, summary_update_needed = FALSE; SpecialFolderItemType type = F_NORMAL; FolderView *folderview = mainwindow_get_mainwindow()->folderview; + HTMLPromoteType promote_html_part = HTML_PROMOTE_DEFAULT; if (folder->path == NULL) return; @@ -647,6 +688,11 @@ static void general_save_folder_prefs(FolderItem *folder, FolderItemGeneralPage summary_update_needed = TRUE; } + promote_html_part = + combobox_get_active_data(GTK_COMBO_BOX(page->promote_html_part)); + if (all || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->promote_html_part_rec_checkbtn))) + prefs->promote_html_part = promote_html_part; + #ifndef G_OS_WIN32 if (all || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->simplify_subject_rec_checkbtn))) { gboolean old_simplify_subject = prefs->enable_simplify_subject; @@ -732,7 +778,9 @@ static gboolean general_save_recurse_func(GNode *node, gpointer data) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->enable_processing_rec_checkbtn)) || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->enable_processing_when_opening_rec_checkbtn)) || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->newmailcheck_rec_checkbtn)) || - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->offlinesync_rec_checkbtn)))) + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->offlinesync_rec_checkbtn)) || + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->promote_html_part_rec_checkbtn)) + )) return TRUE; else return FALSE;