[claws-mail-cvs-commit] matcher.c

Colin Leroy <[email protected]> Mon, 14 Sep 2009 07:27:40 +0000
Newsgroups gmane.mail.sylpheed.claws.cvs
Message-ID <[email protected]>
Update of /srv/cvs/claws-mail/claws/src
In directory ran:/tmp/cvs-serv8165/src

Modified Files:
      Tag: gtk2
	matcher.c matcher.h matcher_parser_parse.y prefs_matcher.c 
Log Message:
2009-09-14 [colin]	3.7.2cvs32

	* src/matcher.c
	* src/matcher.h
	* src/matcher_parser_parse.y
	* src/prefs_matcher.c
		Add 'has_attachment' and 'signed' matcher
		expressions. Patch by Aleksei Miheev, fixes
		bug 1997. 

Index: matcher_parser_parse.y
===================================================================
RCS file: /srv/cvs/claws-mail/claws/src/matcher_parser_parse.y,v
retrieving revision 1.25.2.33
retrieving revision 1.25.2.34
diff -u -d -r1.25.2.33 -r1.25.2.34
--- matcher_parser_parse.y	23 Nov 2007 10:22:18 -0000	1.25.2.33
+++ matcher_parser_parse.y	14 Sep 2009 07:27:38 -0000	1.25.2.34
@@ -337,6 +337,8 @@
 %token MATCHER_ADD_TO_ADDRESSBOOK
 %token MATCHER_STOP MATCHER_HIDE MATCHER_IGNORE MATCHER_WATCH
 %token MATCHER_SPAM MATCHER_NOT_SPAM
+%token MATCHER_HAS_ATTACHMENT MATCHER_HAS_NO_ATTACHMENT
+%token MATCHER_SIGNED MATCHER_NOT_SIGNED
 %token MATCHER_TAG MATCHER_NOT_TAG MATCHER_SET_TAG MATCHER_UNSET_TAG
 %token MATCHER_TAGGED MATCHER_NOT_TAGGED MATCHER_CLEAR_TAGS
 
@@ -711,6 +713,34 @@
 	criteria = MATCHCRITERIA_NOT_SPAM;
 	prop = matcherprop_new(criteria, NULL, 0, NULL, 0);
 }
+| MATCHER_HAS_ATTACHMENT
+{
+	gint criteria = 0;
+
+	criteria = MATCHCRITERIA_HAS_ATTACHMENT;
+	prop = matcherprop_new(criteria, NULL, 0, NULL, 0);
+}
+| MATCHER_HAS_NO_ATTACHMENT
+{
+	gint criteria = 0;
+
+	criteria = MATCHCRITERIA_HAS_NO_ATTACHMENT;
+	prop = matcherprop_new(criteria, NULL, 0, NULL, 0);
+}
+| MATCHER_SIGNED
+{
+	gint criteria = 0;
+
+	criteria = MATCHCRITERIA_SIGNED;
+	prop = matcherprop_new(criteria, NULL, 0, NULL, 0);
+}
+| MATCHER_NOT_SIGNED
+{
+	gint criteria = 0;
+
+	criteria = MATCHCRITERIA_NOT_SIGNED;
+	prop = matcherprop_new(criteria, NULL, 0, NULL, 0);
+}
 | MATCHER_PARTIAL
 {
 	gint criteria = 0;

Index: matcher.h
===================================================================
RCS file: /srv/cvs/claws-mail/claws/src/matcher.h,v
retrieving revision 1.39.2.17
retrieving revision 1.39.2.18
diff -u -d -r1.39.2.17 -r1.39.2.18
--- matcher.h	8 Feb 2009 20:00:42 -0000	1.39.2.17
+++ matcher.h	14 Sep 2009 07:27:38 -0000	1.39.2.18
@@ -78,6 +78,8 @@
 	MC_(FORWARDED), MC_(NOT_FORWARDED),
 	MC_(LOCKED), MC_(NOT_LOCKED),
 	MC_(SPAM),MC_(NOT_SPAM),
+	MC_(HAS_ATTACHMENT), MC_(HAS_NO_ATTACHMENT),
+	MC_(SIGNED), MC_(NOT_SIGNED),
 	MC_(PARTIAL), MC_(NOT_PARTIAL),
 	MC_(COLORLABEL), MC_(NOT_COLORLABEL),
 	MC_(IGNORE_THREAD), MC_(NOT_IGNORE_THREAD),

Index: matcher.c
===================================================================
RCS file: /srv/cvs/claws-mail/claws/src/matcher.c,v
retrieving revision 1.75.2.65
retrieving revision 1.75.2.66
diff -u -d -r1.75.2.65 -r1.75.2.66
--- matcher.c	23 Feb 2009 16:55:41 -0000	1.75.2.65
+++ matcher.c	14 Sep 2009 07:27:37 -0000	1.75.2.66
@@ -85,6 +85,10 @@
 	{MATCHCRITERIA_NOT_WATCH_THREAD, "~watch_thread"},
 	{MATCHCRITERIA_SPAM, "spam"},
 	{MATCHCRITERIA_NOT_SPAM, "~spam"},
+	{MATCHCRITERIA_HAS_ATTACHMENT, "has_attachment"},
+	{MATCHCRITERIA_HAS_NO_ATTACHMENT, "~has_attachment"},
+	{MATCHCRITERIA_SIGNED, "signed"},
+	{MATCHCRITERIA_NOT_SIGNED, "~signed"},
 
 	/* msginfo headers */
 	{MATCHCRITERIA_SUBJECT, "subject"},
@@ -798,6 +802,14 @@
 		return MSG_IS_SPAM(info->flags);
 	case MATCHCRITERIA_NOT_SPAM:
 		return !MSG_IS_SPAM(info->flags);
+	case MATCHCRITERIA_HAS_ATTACHMENT:
+		return MSG_IS_WITH_ATTACHMENT(info->flags);
+	case MATCHCRITERIA_HAS_NO_ATTACHMENT:
+		return !MSG_IS_WITH_ATTACHMENT(info->flags);
+	case MATCHCRITERIA_SIGNED:
+		return MSG_IS_SIGNED(info->flags);
+	case MATCHCRITERIA_NOT_SIGNED:
+		return !MSG_IS_SIGNED(info->flags);
 	case MATCHCRITERIA_COLORLABEL:
 	{
 		gint color = MSG_GET_COLORLABEL_VALUE(info->flags);
@@ -1686,6 +1698,10 @@
 		case MATCHCRITERIA_NOT_LOCKED:
 		case MATCHCRITERIA_SPAM:
 		case MATCHCRITERIA_NOT_SPAM:
+		case MATCHCRITERIA_HAS_ATTACHMENT:
+		case MATCHCRITERIA_HAS_NO_ATTACHMENT:
+		case MATCHCRITERIA_SIGNED:
+		case MATCHCRITERIA_NOT_SIGNED:
 		case MATCHCRITERIA_COLORLABEL:
 		case MATCHCRITERIA_NOT_COLORLABEL:
 		case MATCHCRITERIA_IGNORE_THREAD:
@@ -1881,6 +1897,10 @@
 	case MATCHCRITERIA_NOT_LOCKED:
 	case MATCHCRITERIA_SPAM:
 	case MATCHCRITERIA_NOT_SPAM:
+	case MATCHCRITERIA_HAS_ATTACHMENT:
+	case MATCHCRITERIA_HAS_NO_ATTACHMENT:
+	case MATCHCRITERIA_SIGNED:
+	case MATCHCRITERIA_NOT_SIGNED:
 	case MATCHCRITERIA_PARTIAL:
 	case MATCHCRITERIA_NOT_PARTIAL:
 	case MATCHCRITERIA_IGNORE_THREAD:

Index: prefs_matcher.c
===================================================================
RCS file: /srv/cvs/claws-mail/claws/src/prefs_matcher.c,v
retrieving revision 1.43.2.81
retrieving revision 1.43.2.82
diff -u -d -r1.43.2.81 -r1.43.2.82
--- prefs_matcher.c	28 Jul 2009 18:42:52 -0000	1.43.2.81
+++ prefs_matcher.c	14 Sep 2009 07:27:38 -0000	1.43.2.82
@@ -170,7 +170,10 @@
 	CRITERIA_FOUND_IN_ADDRESSBOOK = 34,
 	
 	CRITERIA_TAG = 35,
-	CRITERIA_TAGGED = 36
+	CRITERIA_TAGGED = 36,
+
+	CRITERIA_HAS_ATTACHMENT = 37,
+	CRITERIA_SIGNED = 38
 };
 
 enum {
@@ -373,6 +376,8 @@
 	COMBOBOX_ADD(store, _("Forwarded"), CRITERIA_FORWARDED);
 	COMBOBOX_ADD(store, _("Locked"), CRITERIA_LOCKED);
 	COMBOBOX_ADD(store, _("Spam"), CRITERIA_SPAM);
+	COMBOBOX_ADD(store, _("Has attachment"), CRITERIA_HAS_ATTACHMENT);
+	COMBOBOX_ADD(store, _("Signed"), CRITERIA_SIGNED);
 	matcher.model_flags = GTK_TREE_MODEL(store);
 	
 	store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN);
@@ -1008,6 +1013,12 @@
 	case MATCHCRITERIA_NOT_SPAM:
 	case MATCHCRITERIA_SPAM:
 		return CRITERIA_SPAM;
+	case MATCHCRITERIA_HAS_ATTACHMENT:
+	case MATCHCRITERIA_HAS_NO_ATTACHMENT:
+		return CRITERIA_HAS_ATTACHMENT;
+	case MATCHCRITERIA_SIGNED:
+	case MATCHCRITERIA_NOT_SIGNED:
+		return CRITERIA_SIGNED;
 	case MATCHCRITERIA_PARTIAL:
 	case MATCHCRITERIA_NOT_PARTIAL:
 		return CRITERIA_PARTIAL;
@@ -1118,6 +1129,10 @@
 		return MATCHCRITERIA_LOCKED;
 	case CRITERIA_SPAM:
 		return MATCHCRITERIA_SPAM;
+	case CRITERIA_HAS_ATTACHMENT:
+		return MATCHCRITERIA_HAS_ATTACHMENT;
+	case CRITERIA_SIGNED:
+		return MATCHCRITERIA_SIGNED;
 	case CRITERIA_PARTIAL:
 		return MATCHCRITERIA_PARTIAL;
 	case CRITERIA_COLORLABEL:
@@ -1206,6 +1221,10 @@
 		return MATCHCRITERIA_NOT_LOCKED;
 	case MATCHCRITERIA_SPAM:
 		return MATCHCRITERIA_NOT_SPAM;
+	case MATCHCRITERIA_HAS_ATTACHMENT:
+		return MATCHCRITERIA_HAS_NO_ATTACHMENT;
+	case MATCHCRITERIA_SIGNED:
+		return MATCHCRITERIA_NOT_SIGNED;
 	case MATCHCRITERIA_PARTIAL:
 		return MATCHCRITERIA_NOT_PARTIAL;
 	case MATCHCRITERIA_COLORLABEL:
@@ -1315,6 +1334,8 @@
 	case CRITERIA_FORWARDED:
 	case CRITERIA_LOCKED:
 	case CRITERIA_SPAM:
+	case CRITERIA_HAS_ATTACHMENT:
+	case CRITERIA_SIGNED:
 	case CRITERIA_COLORLABEL:
 		return gtk_combo_box_get_active(GTK_COMBO_BOX(matcher.match_combo2));
 	case CRITERIA_WATCH_THREAD:
@@ -1389,6 +1410,8 @@
 	case CRITERIA_FORWARDED:
 	case CRITERIA_LOCKED:
 	case CRITERIA_SPAM:
+	case CRITERIA_HAS_ATTACHMENT:
+	case CRITERIA_SIGNED:
 	case CRITERIA_PARTIAL:
 	case CRITERIA_IGNORE_THREAD:
 	case CRITERIA_WATCH_THREAD:
@@ -2207,6 +2230,8 @@
 	case CRITERIA_FORWARDED:
 	case CRITERIA_LOCKED:
 	case CRITERIA_SPAM:
+	case CRITERIA_HAS_ATTACHMENT:
+	case CRITERIA_SIGNED:
 		match_criteria = MATCH_FLAG;
 		break;
 	case CRITERIA_PARTIAL:
@@ -2294,6 +2319,8 @@
 	case MATCHCRITERIA_NOT_FORWARDED:
 	case MATCHCRITERIA_NOT_LOCKED:
 	case MATCHCRITERIA_NOT_SPAM:
+	case MATCHCRITERIA_HAS_NO_ATTACHMENT:
+	case MATCHCRITERIA_NOT_SIGNED:
 	case MATCHCRITERIA_NOT_PARTIAL:
 	case MATCHCRITERIA_NOT_COLORLABEL:
 	case MATCHCRITERIA_NOT_IGNORE_THREAD:
@@ -2463,6 +2490,8 @@
 	case CRITERIA_FORWARDED:
 	case CRITERIA_LOCKED:
 	case CRITERIA_SPAM:
+	case CRITERIA_HAS_ATTACHMENT:
+	case CRITERIA_SIGNED:
 	case CRITERIA_COLORLABEL:
 		gtk_combo_box_set_active(GTK_COMBO_BOX(matcher.match_combo2),
 					 negative_cond ? PREDICATE_FLAG_DISABLED :