30
31
public class SearchQueryState
32
33
private HashTable<string, string> previous_query = new HashTable<string, string> (str_hash, str_equal);
34
private HashTable<string, bool> canned_query = new HashTable<string, bool> (str_hash, str_equal);
34
36
public void remove (string home_channel_id)
41
43
return previous_query.contains (home_channel_id);
46
public void set_canned_query (string channel_id)
48
canned_query[channel_id] = true;
45
52
* Compare search string with previous string for given home channel. Store new search string.
47
54
public SearchQueryChange search_query_changed (string channel_id, string search_string)
49
56
var query = search_string.strip ();
51
57
var changed = SearchQueryChange.NEW_QUERY;
52
if (previous_query.contains (channel_id))
54
var prev = previous_query[channel_id];
55
if (query == "" && prev != "") // there was a query previously, but user removed all characters in new one
57
changed = SearchQueryChange.NEW_QUERY;
62
changed = SearchQueryChange.NOT_CHANGED;
59
if (canned_query.contains(channel_id))
61
changed = SearchQueryChange.CANNED_QUERY;
62
canned_query.remove (channel_id);
66
if (previous_query.contains (channel_id))
68
var prev = previous_query[channel_id];
69
if (query == "" && prev != "") // there was a query previously, but user removed all characters in new one
64
71
changed = SearchQueryChange.NEW_QUERY;
65
else if (query.has_prefix (prev))
66
changed = SearchQueryChange.APPENDS_TO_PREVIOUS_QUERY;
67
else if (prev.has_prefix (query))
68
changed = SearchQueryChange.REMOVES_FROM_PREVIOUS_QUERY;
76
changed = SearchQueryChange.NOT_CHANGED;
78
changed = SearchQueryChange.NEW_QUERY;
79
else if (query.has_prefix (prev))
80
changed = SearchQueryChange.APPENDS_TO_PREVIOUS_QUERY;
81
else if (prev.has_prefix (query))
82
changed = SearchQueryChange.REMOVES_FROM_PREVIOUS_QUERY;