lib/sup/search.rb in sup-0.14.0 vs lib/sup/search.rb in sup-0.14.1
- old
+ new
@@ -1,5 +1,7 @@
+# encoding: utf-8
+
module Redwood
class SearchManager
include Singleton
@@ -13,14 +15,31 @@
l =~ /^([^:]*): (.*)$/ or raise "can't parse #{fn} line #{l.inspect}"
@searches[$1] = $2
end
end
@modified = false
+
+ @predefined_searches = { 'All mail' => 'Search all mail.' }
+ @predefined_queries = { 'All mail'.to_sym => { :qobj => Xapian::Query.new('Kmail'),
+ :load_spam => false,
+ :load_deleted => false,
+ :load_killed => false,
+ :text => 'Search all mail.'}
+ }
+ @predefined_searches.each do |k,v|
+ @searches[k] = v
+ end
end
+ def predefined_queries; return @predefined_queries; end
def all_searches; return @searches.keys.sort; end
- def search_string_for name; return @searches[name]; end
+ def search_string_for name;
+ if @predefined_searches.keys.member? name
+ return name.to_sym
+ end
+ return @searches[name];
+ end
def valid_name? name; name =~ /^[\w-]+$/; end
def name_format_hint; "letters, numbers, underscores and dashes only"; end
def add name, search_string
return unless valid_name? name
@@ -63,10 +82,10 @@
return expanded
end
def save
return unless @modified
- File.open(@fn, "w") { |f| @searches.sort.each { |(n, s)| f.puts "#{n}: #{s}" } }
+ File.open(@fn, "w:UTF-8") { |f| (@searches - @predefined_searches.keys).sort.each { |(n, s)| f.puts "#{n}: #{s}" } }
@modified = false
end
end
end