Remove the entry_filters argument from *View constructors.
[matthijs/upstream/mobilegtd.git] / src / gui / gui.py
index 1dc34b291ea2d2875aa3405657900e978701188a..0247175fc22ee76eb165184427b36aa257f67cd0 100644 (file)
@@ -236,13 +236,26 @@ class KeyBindingView(object):
             self.view.bind(key,no_action)
 
 class SearchableListView(WidgetBasedListView):
-    def __init__(self,entry_filters):
-        self.current_entry_filter_index = 0
-        self.entry_filters = entry_filters
-        self.filtered_list = self.entry_filters[0]
+    def __init__(self):
+        self.current_entry_filter_index = -1
+        self.entry_filters = []
+        self.filtered_list = lambda:[]
         self.lock = None
         super(SearchableListView,self).__init__()
 
+    def set_filters(self, entry_filters):
+        """
+        Set the filters that could be applied to this list. Each filter
+        can be applied in turn by calling switch_entry_filter (for
+        example from a key binding).
+
+        The entry_filters argument should be a list of filters. The
+        active filter is stored into self.filtered_list and should be
+        processed by generate_widgets in the subclass.
+        """
+        self.current_entry_filter_index = 0
+        self.entry_filters = entry_filters
+        self.filtered_list = self.entry_filters[0]
 
     def search_item(self):
         selected_item = appuifw.selection_list(self.all_widget_texts(),search_field=1)
@@ -250,6 +263,7 @@ class SearchableListView(WidgetBasedListView):
             selected_item = self.selected_index()
         self.view.set_list(self.items(),selected_item)
         self.set_bindings_for_selection(selected_item)
+
     def switch_entry_filter(self):
         self.current_entry_filter_index += 1
         self.filtered_list = self.entry_filters[self.current_entry_filter_index % len(self.entry_filters)]
@@ -257,9 +271,9 @@ class SearchableListView(WidgetBasedListView):
 
 
 class EditableListView(SearchableListView,KeyBindingView):
-    def __init__(self,entry_filters):
+    def __init__(self):
         KeyBindingView.__init__(self)
-        super(EditableListView, self).__init__(entry_filters)
+        super(EditableListView, self).__init__()
 
     def key_and_menu_bindings(self,selected_index):
         key_and_menu_bindings=[]