Updating branch refs/heads/master to 740b3d0f5cb1774ac8291ff779b3b383383e8e1c (commit) from 43696960ac253c24b6b061e0d6feaf032e43488a (commit)
commit 740b3d0f5cb1774ac8291ff779b3b383383e8e1c Author: Christian Dywan <christ...@twotoasts.de> Date: Sun Jun 6 07:29:37 2010 +0200 Handle combination of search folder and search entry postler/postler-messages.vala | 37 ++++++++++++++++++++++++------------- 1 files changed, 24 insertions(+), 13 deletions(-) diff --git a/postler/postler-messages.vala b/postler/postler-messages.vala index 9fbefc6..7efbb74 100644 --- a/postler/postler-messages.vala +++ b/postler/postler-messages.vala @@ -337,15 +337,15 @@ public class Postler.Messages : Gtk.TreeView { to_or_from = "from"; try { - string filter_header; - string real_filter = ""; + string[] headers = {}; + string[] filters = {}; string[] folders = {}; try { var keyfile = new KeyFile (); keyfile.load_from_file (location, 0); - filter_header = keyfile.get_string ("search", "header"); - real_filter = keyfile.get_string ("search", "filter").down (); + headers += keyfile.get_string ("search", "header"); + filters += keyfile.get_string ("search", "filter").down (); string search_account = keyfile.get_string ("search", "account"); string toplevel = Environment.get_variable ("MAILDIR"); if (toplevel == null || toplevel == "") @@ -353,11 +353,11 @@ public class Postler.Messages : Gtk.TreeView { folders += toplevel + "/" + search_account + "/INBOX/cur"; folders += toplevel + "/" + search_account + "/INBOX/new"; } catch (GLib.KeyFileError keyfile_error) { - filter_header = header; - real_filter = last_filter; folders += location + "/cur"; folders += location + "/new"; } + headers += header; + filters += last_filter != "" ? last_filter : null; foreach (var folder in folders) { var folder_dir = File.new_for_path (folder); @@ -398,25 +398,36 @@ public class Postler.Messages : Gtk.TreeView { if (parts == null || parts[0] == null) continue; string field = parts[0].down (); - if (real_filter != "" && filter_header == field && - !(real_filter in parts[1].down ())) { - skip = true; - break; + if (filters[0] != null && parts[1] != null) { + string lowercased = parts[1].down (); + if (headers[0] == field + && !(filters[0] in lowercased)) { + skip = true; + break; + } + else if (filters[1] != null && headers[1] == field + && !(filters[1] in lowercased)) { + skip = true; + break; + } } if (field == "subject") { subject = parts[1].strip (); - if (from != null && timestamp != 0) + if (from != null && timestamp != 0 + && filters[0] == null) break; } else if (field == to_or_from) { from = parts[1]; - if (subject != null && timestamp != 0) + if (subject != null && timestamp != 0 + && filters[0] == null) break; } else if (field == "date") { var parsed = new Soup.Date.from_string (parts[1]); timestamp = parsed != null ? (time_t)parsed.to_time_t () : 0; - if (subject != null && from != null) + if (subject != null && from != null + && filters[0] == null) break; } } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits