[Xfce4-commits] <postler:master> Implement 'Fulltext' search, treating it like a special header

Christian Dywan noreply at xfce.org
Sat Jul 10 00:24:03 CEST 2010


Updating branch refs/heads/master
         to 1e897eb58ba839170ddf21dfb4748e119f3f0923 (commit)
       from 94be2a7aa7b50dc41a412e28f844805b1a89a39d (commit)

commit 1e897eb58ba839170ddf21dfb4748e119f3f0923
Author: Christian Dywan <christian at twotoasts.de>
Date:   Sat Jun 26 22:08:50 2010 +0200

    Implement 'Fulltext' search, treating it like a special header

 postler/postler-bureau.vala   |   12 +++++++++++-
 postler/postler-messages.vala |   17 +++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletions(-)

diff --git a/postler/postler-bureau.vala b/postler/postler-bureau.vala
index ba6da9f..8a9134a 100644
--- a/postler/postler-bureau.vala
+++ b/postler/postler-bureau.vala
@@ -79,6 +79,7 @@ public class Postler.Bureau : Gtk.Window {
                 <toolitem action="SearchSubject"/>
                 <toolitem action="SearchSender"/>
                 <toolitem action="SearchRecipient"/>
+                <toolitem action="SearchFulltext"/>
                 <separator expand="true"/>
                 <toolitem action="SaveSearch"/>
             </toolbar>
@@ -159,6 +160,9 @@ public class Postler.Bureau : Gtk.Window {
         case 2:
             messages.search (search.text, "to");
             break;
+        case 3:
+            messages.search (search.text, "fulltext");
+            break;
         default:
             assert_not_reached ();
         }
@@ -183,6 +187,9 @@ public class Postler.Bureau : Gtk.Window {
         case 2:
             header = "to";
             break;
+        case 3:
+            header = "fulltext";
+            break;
         default:
             assert_not_reached ();
         }
@@ -263,7 +270,9 @@ public class Postler.Bureau : Gtk.Window {
         { "SearchSender", null, N_("Sender"), "",
           N_("Search messages by sender"), 1 },
         { "SearchRecipient", null, N_("Recipient"), "",
-          N_("Search messages by recipient"), 2 }
+          N_("Search messages by recipient"), 2 },
+        { "SearchFulltext", null, N_("_Fulltext"), "",
+          N_("Search the full message text"), 3}
     };
 
     static string icon_name_for_mime_type (string mime_type, Gtk.Widget widget) {
@@ -366,6 +375,7 @@ public class Postler.Bureau : Gtk.Window {
         actions.get_action ("SearchSubject").is_important = true;
         actions.get_action ("SearchSender").is_important = true;
         actions.get_action ("SearchRecipient").is_important = true;
+        actions.get_action ("SearchFulltext").is_important = true;
         actions.get_action ("SaveSearch").is_important = true;
         messages_box.pack_start (search_options, false, false, 0);
         messages = new Postler.Messages (accounts);
diff --git a/postler/postler-messages.vala b/postler/postler-messages.vala
index ec1a06a..a534802 100644
--- a/postler/postler-messages.vala
+++ b/postler/postler-messages.vala
@@ -500,6 +500,23 @@ public class Postler.Messages : Gtk.TreeView {
                         }
                         if (skip)
                             continue;
+
+                        unowned string? fulltext = null;
+                        if (headers[0] == "fulltext")
+                            fulltext = filters[0];
+                        else if (headers[1] == "fulltext")
+                            fulltext = filters[1];
+                        if (fulltext != null) {
+                            skip = true;
+                            while ((line = stream.read_line (null, null)) != null) {
+                                if (line.down ().contains (fulltext)) {
+                                    skip = false;
+                                    break;
+                                }
+                            }
+                        }
+                        if (skip)
+                            continue;
                     } catch (GLib.Error contents_error) {
                         GLib.critical (_("Failed to read message \"%s\": %s"),
                             contents.get_path (), contents_error.message);



More information about the Xfce4-commits mailing list