2007-07-30 [paul] 2.10.0cvs80
[claws.git] / src / prefs_matcher.c
index a2d656932d3f1651e2a3b61cda0e8737898fbb17..f7bc3d5814c19c932e324a4c27d903ed053882dd 100644 (file)
@@ -4,7 +4,7 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
@@ -13,8 +13,8 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * 
  */
 
 #ifdef HAVE_CONFIG_H
@@ -136,20 +136,24 @@ enum {
        CRITERIA_SPAM = 22,
        CRITERIA_COLORLABEL = 23,
        CRITERIA_IGNORE_THREAD = 24,
+       CRITERIA_WATCH_THREAD = 25,
 
-       CRITERIA_SCORE_GREATER = 25,
-       CRITERIA_SCORE_LOWER = 26,
-       CRITERIA_SCORE_EQUAL = 27,
+       CRITERIA_SCORE_GREATER = 26,
+       CRITERIA_SCORE_LOWER = 27,
+       CRITERIA_SCORE_EQUAL = 28,
 
-       CRITERIA_TEST = 28,
+       CRITERIA_TEST = 29,
 
-       CRITERIA_SIZE_GREATER = 29,
-       CRITERIA_SIZE_SMALLER = 30,
-       CRITERIA_SIZE_EQUAL   = 31,
+       CRITERIA_SIZE_GREATER = 30,
+       CRITERIA_SIZE_SMALLER = 31,
+       CRITERIA_SIZE_EQUAL   = 32,
        
-       CRITERIA_PARTIAL = 32,
+       CRITERIA_PARTIAL = 33,
 
-       CRITERIA_FOUND_IN_ADDRESSBOOK = 33,
+       CRITERIA_FOUND_IN_ADDRESSBOOK = 34,
+       
+       CRITERIA_TAG = 35,
+       CRITERIA_TAGGED = 36
 };
 
 /*!
@@ -174,8 +178,8 @@ static struct_criteria_text criteria_text [] = {
        { N_("Newsgroups"), TRUE },
        { N_("In reply to"), TRUE },
        { N_("References"), TRUE },
-       { N_("Age greater than"), FALSE },
-       { N_("Age lower than"), FALSE },
+       { N_("Age greater than (days)"), FALSE },
+       { N_("Age less than (days)"), FALSE },
        { N_("Header"), FALSE },
        { N_("Headers part"), FALSE },
        { N_("Body part"), FALSE },
@@ -190,15 +194,18 @@ static struct_criteria_text criteria_text [] = {
        { N_("Spam flag"), FALSE },
        { N_("Color label"), FALSE },
        { N_("Ignored thread"), FALSE },
+       { N_("Watched thread"), FALSE },
        { N_("Score greater than"), FALSE },
        { N_("Score lower than"), FALSE },
        { N_("Score equal to"), FALSE },
        { N_("Test"), FALSE },
-       { N_("Size greater than"), FALSE }, 
-       { N_("Size smaller than"), FALSE },
-       { N_("Size exactly"), FALSE },
+       { N_("Size greater than (bytes)"), FALSE }, 
+       { N_("Size smaller than (bytes)"), FALSE },
+       { N_("Size exactly (bytes)"), FALSE },
        { N_("Partially downloaded"), FALSE },
        { N_("Found in addressbook"), FALSE },
+       { N_("Tags"), FALSE },
+       { N_("Tagged"), FALSE },
        { NULL, FALSE }
 };
 
@@ -508,7 +515,7 @@ static void prefs_matcher_create(void)
 
        g_list_free(combo_items);
 
-       gtk_widget_set_size_request(criteria_combo, 170, -1);
+       gtk_widget_set_size_request(criteria_combo, 190, -1);
        gtk_table_attach(GTK_TABLE(criteria_table), criteria_combo, 0, 1, 1, 2,
                          0, 0, 0, 0);
        criteria_list = GTK_COMBO(criteria_combo)->list;
@@ -996,6 +1003,9 @@ static gint prefs_matcher_get_criteria_from_matching(gint matching_id)
        case MATCHCRITERIA_IGNORE_THREAD:
        case MATCHCRITERIA_NOT_IGNORE_THREAD:
                return CRITERIA_IGNORE_THREAD;
+       case MATCHCRITERIA_WATCH_THREAD:
+       case MATCHCRITERIA_NOT_WATCH_THREAD:
+               return CRITERIA_WATCH_THREAD;
        case MATCHCRITERIA_NOT_SUBJECT:
        case MATCHCRITERIA_SUBJECT:
                return CRITERIA_SUBJECT;
@@ -1020,6 +1030,12 @@ static gint prefs_matcher_get_criteria_from_matching(gint matching_id)
        case MATCHCRITERIA_NOT_TO_AND_NOT_CC:
        case MATCHCRITERIA_TO_OR_CC:
                return CRITERIA_TO_OR_CC;
+       case MATCHCRITERIA_NOT_TAG:
+       case MATCHCRITERIA_TAG:
+               return CRITERIA_TAG;
+       case MATCHCRITERIA_NOT_TAGGED:
+       case MATCHCRITERIA_TAGGED:
+               return CRITERIA_TAGGED;
        case MATCHCRITERIA_NOT_BODY_PART:
        case MATCHCRITERIA_BODY_PART:
                return CRITERIA_BODY_PART;
@@ -1094,6 +1110,8 @@ static gint prefs_matcher_get_matching_from_criteria(gint criteria_id)
                return MATCHCRITERIA_COLORLABEL;
        case CRITERIA_IGNORE_THREAD:
                return MATCHCRITERIA_IGNORE_THREAD;
+       case CRITERIA_WATCH_THREAD:
+               return MATCHCRITERIA_WATCH_THREAD;
        case CRITERIA_SUBJECT:
                return MATCHCRITERIA_SUBJECT;
        case CRITERIA_FROM:
@@ -1104,6 +1122,10 @@ static gint prefs_matcher_get_matching_from_criteria(gint criteria_id)
                return MATCHCRITERIA_CC;
        case CRITERIA_TO_OR_CC:
                return MATCHCRITERIA_TO_OR_CC;
+       case CRITERIA_TAG:
+               return MATCHCRITERIA_TAG;
+       case CRITERIA_TAGGED:
+               return MATCHCRITERIA_TAGGED;
        case CRITERIA_NEWSGROUPS:
                return MATCHCRITERIA_NEWSGROUPS;
        case CRITERIA_INREPLYTO:
@@ -1176,6 +1198,8 @@ static gint prefs_matcher_not_criteria(gint matcher_criteria)
                return MATCHCRITERIA_NOT_COLORLABEL;
        case MATCHCRITERIA_IGNORE_THREAD:
                return MATCHCRITERIA_NOT_IGNORE_THREAD;
+       case MATCHCRITERIA_WATCH_THREAD:
+               return MATCHCRITERIA_NOT_WATCH_THREAD;
        case MATCHCRITERIA_SUBJECT:
                return MATCHCRITERIA_NOT_SUBJECT;
        case MATCHCRITERIA_FROM:
@@ -1186,6 +1210,10 @@ static gint prefs_matcher_not_criteria(gint matcher_criteria)
                return MATCHCRITERIA_NOT_CC;
        case MATCHCRITERIA_TO_OR_CC:
                return MATCHCRITERIA_NOT_TO_AND_NOT_CC;
+       case MATCHCRITERIA_TAG:
+               return MATCHCRITERIA_NOT_TAG;
+       case MATCHCRITERIA_TAGGED:
+               return MATCHCRITERIA_NOT_TAGGED;
        case MATCHCRITERIA_NEWSGROUPS:
                return MATCHCRITERIA_NOT_NEWSGROUPS;
        case MATCHCRITERIA_INREPLYTO:
@@ -1253,7 +1281,9 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void)
        case CRITERIA_TEST:
        case CRITERIA_COLORLABEL:
        case CRITERIA_IGNORE_THREAD:
+       case CRITERIA_WATCH_THREAD:
        case CRITERIA_FOUND_IN_ADDRESSBOOK:
+       case CRITERIA_TAGGED:
                if (value_pred_flag == PREDICATE_FLAG_DISABLED)
                        criteria = prefs_matcher_not_criteria(criteria);
                break;
@@ -1262,6 +1292,7 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void)
        case CRITERIA_TO:
        case CRITERIA_CC:
        case CRITERIA_TO_OR_CC:
+       case CRITERIA_TAG:
        case CRITERIA_NEWSGROUPS:
        case CRITERIA_INREPLYTO:
        case CRITERIA_REFERENCES:
@@ -1305,6 +1336,8 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void)
        case CRITERIA_SPAM:
        case CRITERIA_PARTIAL:
        case CRITERIA_IGNORE_THREAD:
+       case CRITERIA_WATCH_THREAD:
+       case CRITERIA_TAGGED:
                break;
 
        case CRITERIA_SUBJECT:
@@ -1312,6 +1345,7 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void)
        case CRITERIA_TO:
        case CRITERIA_CC:
        case CRITERIA_TO_OR_CC:
+       case CRITERIA_TAG:
        case CRITERIA_NEWSGROUPS:
        case CRITERIA_INREPLYTO:
        case CRITERIA_REFERENCES:
@@ -1655,6 +1689,8 @@ static void prefs_matcher_criteria_select(GtkList *list,
        case CRITERIA_SPAM:
        case CRITERIA_PARTIAL:
        case CRITERIA_IGNORE_THREAD:
+       case CRITERIA_WATCH_THREAD:
+       case CRITERIA_TAGGED:
                prefs_matcher_disable_widget(matcher.header_combo);
                prefs_matcher_disable_widget(matcher.header_label);
                prefs_matcher_disable_widget(matcher.header_addr_combo);
@@ -1695,6 +1731,7 @@ static void prefs_matcher_criteria_select(GtkList *list,
        case CRITERIA_TO:
        case CRITERIA_CC:
        case CRITERIA_TO_OR_CC:
+       case CRITERIA_TAG:
        case CRITERIA_NEWSGROUPS:
        case CRITERIA_INREPLYTO:
        case CRITERIA_REFERENCES:
@@ -2082,11 +2119,14 @@ static gboolean prefs_matcher_selected(GtkTreeSelection *selector,
        case MATCHCRITERIA_NOT_PARTIAL:
        case MATCHCRITERIA_NOT_COLORLABEL:
        case MATCHCRITERIA_NOT_IGNORE_THREAD:
+       case MATCHCRITERIA_NOT_WATCH_THREAD:
        case MATCHCRITERIA_NOT_SUBJECT:
        case MATCHCRITERIA_NOT_FROM:
        case MATCHCRITERIA_NOT_TO:
        case MATCHCRITERIA_NOT_CC:
        case MATCHCRITERIA_NOT_TO_AND_NOT_CC:
+       case MATCHCRITERIA_NOT_TAG:
+       case MATCHCRITERIA_NOT_TAGGED:
        case MATCHCRITERIA_NOT_NEWSGROUPS:
        case MATCHCRITERIA_NOT_INREPLYTO:
        case MATCHCRITERIA_NOT_REFERENCES:
@@ -2109,6 +2149,7 @@ static gboolean prefs_matcher_selected(GtkTreeSelection *selector,
        case MATCHCRITERIA_NOT_TO:
        case MATCHCRITERIA_NOT_CC:
        case MATCHCRITERIA_NOT_TO_AND_NOT_CC:
+       case MATCHCRITERIA_NOT_TAG:
        case MATCHCRITERIA_NOT_NEWSGROUPS:
        case MATCHCRITERIA_NOT_INREPLYTO:
        case MATCHCRITERIA_NOT_REFERENCES:
@@ -2121,6 +2162,7 @@ static gboolean prefs_matcher_selected(GtkTreeSelection *selector,
        case MATCHCRITERIA_TO:
        case MATCHCRITERIA_CC:
        case MATCHCRITERIA_TO_OR_CC:
+       case MATCHCRITERIA_TAG:
        case MATCHCRITERIA_NEWSGROUPS:
        case MATCHCRITERIA_INREPLYTO:
        case MATCHCRITERIA_REFERENCES: