aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-11-02 10:18:53 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-11-02 10:18:53 +0000
commitefb2528ff9a62784209a754de1cb183226d2f7be (patch)
treeee2199ef7ed3fa4020593675b02aab9ade8a2a2a /src
parent51951630e709bef4be1f74be57a4856bbd72c4ff (diff)
added an option to mark filtered junk mails as read.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@710 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r--src/prefs_common_dialog.c22
-rw-r--r--src/summaryview.c19
2 files changed, 37 insertions, 4 deletions
diff --git a/src/prefs_common_dialog.c b/src/prefs_common_dialog.c
index 9eb7ca38..a43bc55a 100644
--- a/src/prefs_common_dialog.c
+++ b/src/prefs_common_dialog.c
@@ -155,6 +155,7 @@ static struct JunkMail {
GtkWidget *entry_junkfolder;
GtkWidget *chkbtn_filter_on_recv;
GtkWidget *chkbtn_delete_on_recv;
+ GtkWidget *chkbtn_mark_as_read;
} junk;
#if USE_GPGME
@@ -386,6 +387,8 @@ static PrefsUIData ui_data[] = {
prefs_set_data_from_toggle, prefs_set_toggle},
{"delete_junk_on_receive", &junk.chkbtn_delete_on_recv,
prefs_set_data_from_toggle, prefs_set_toggle},
+ {"mark_junk_as_read", &junk.chkbtn_mark_as_read,
+ prefs_set_data_from_toggle, prefs_set_toggle},
#if USE_GPGME
/* Privacy */
@@ -1572,6 +1575,7 @@ static void prefs_junk_create(void)
GtkWidget *btn_folder;
GtkWidget *chkbtn_filter_on_recv;
GtkWidget *chkbtn_delete_on_recv;
+ GtkWidget *chkbtn_mark_as_read;
vbox1 = gtk_vbox_new (FALSE, VSPACING);
gtk_widget_show (vbox1);
@@ -1633,6 +1637,13 @@ static void prefs_junk_create(void)
PACK_VSPACER(vbox2, vbox3, 0);
+ PACK_SMALL_LABEL (vbox2, label,
+ _("To classify junk mails automatically, both junk "
+ "and not junk mails must be learned manually to "
+ "a certain extent."));
+
+ PACK_VSPACER(vbox2, vbox3, 0);
+
hbox = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
@@ -1664,13 +1675,17 @@ static void prefs_junk_create(void)
gtk_widget_show (vbox3);
gtk_box_pack_start (GTK_BOX(vbox2), vbox3, FALSE, FALSE, 0);
- PACK_CHECK_BUTTON(vbox3, chkbtn_filter_on_recv,
- _("Filter messages classified as junk on receiving"));
+ PACK_CHECK_BUTTON
+ (vbox3, chkbtn_filter_on_recv,
+ _("Filter messages classified as junk on receiving"));
PACK_CHECK_BUTTON
(vbox3, chkbtn_delete_on_recv,
- _("Delete junk mails from server when filtered on receiving"));
+ _("Delete junk mails from server on receiving"));
SET_TOGGLE_SENSITIVITY (chkbtn_filter_on_recv, chkbtn_delete_on_recv);
+ PACK_CHECK_BUTTON (vbox3, chkbtn_mark_as_read,
+ _("Mark filtered junk mails as read"));
+
junk.chkbtn_enable_junk = chkbtn_enable_junk;
junk.entry_junk_learncmd = entry_junk_learncmd;
junk.entry_nojunk_learncmd = entry_nojunk_learncmd;
@@ -1678,6 +1693,7 @@ static void prefs_junk_create(void)
junk.entry_junkfolder = entry_junkfolder;
junk.chkbtn_filter_on_recv = chkbtn_filter_on_recv;
junk.chkbtn_delete_on_recv = chkbtn_delete_on_recv;
+ junk.chkbtn_mark_as_read = chkbtn_mark_as_read;
}
#if USE_GPGME
diff --git a/src/summaryview.c b/src/summaryview.c
index 43f63ec0..77d85e1d 100644
--- a/src/summaryview.c
+++ b/src/summaryview.c
@@ -3835,9 +3835,20 @@ static gboolean summary_filter_junk_func(GtkTreeModel *model, GtkTreePath *path,
if (fltinfo->actions[FLT_ACTION_MOVE] ||
fltinfo->actions[FLT_ACTION_COPY] ||
- fltinfo->actions[FLT_ACTION_DELETE])
+ fltinfo->actions[FLT_ACTION_DELETE] ||
+ fltinfo->actions[FLT_ACTION_MARK_READ])
summaryview->filtered++;
+ if (msginfo->flags.perm_flags != fltinfo->flags.perm_flags) {
+ msginfo->flags = fltinfo->flags;
+ summary_set_row(summaryview, iter, msginfo);
+ if (MSG_IS_IMAP(msginfo->flags)) {
+ if (fltinfo->actions[FLT_ACTION_MARK_READ])
+ imap_msg_unset_perm_flags(msginfo,
+ MSG_NEW|MSG_UNREAD);
+ }
+ }
+
if (fltinfo->actions[FLT_ACTION_MOVE] && fltinfo->move_dest)
summary_move_row_to(summaryview, iter, fltinfo->move_dest);
else if (fltinfo->actions[FLT_ACTION_DELETE])
@@ -3958,6 +3969,12 @@ static void summary_junk_func(GtkTreeModel *model, GtkTreePath *path,
ret = filter_action_exec(&rule, msginfo, file, fltinfo);
+ if (ret == 0 && MSG_IS_UNREAD(msginfo->flags)) {
+ summary_mark_row_as_read(summaryview, iter);
+ if (MSG_IS_IMAP(msginfo->flags))
+ imap_msg_unset_perm_flags
+ (msginfo, MSG_NEW | MSG_UNREAD);
+ }
if (ret == 0 && fltinfo->actions[FLT_ACTION_MOVE] && fltinfo->move_dest)
summary_move_row_to(summaryview, iter, fltinfo->move_dest);