implemented fields selection
authorMax Usachev <maxusachev@gmail.com>
Wed, 9 Jun 2010 14:02:05 +0000 (17:02 +0300)
committerMax Usachev <maxusachev@gmail.com>
Wed, 9 Jun 2010 14:02:05 +0000 (17:02 +0300)
ui/hildon_ui.py

index 6c424c9..ef89400 100644 (file)
@@ -207,6 +207,8 @@ class ConfigurationDialog:
         # create other widgets
         self.window.set_app_menu(menu)
         self.selector = hildon.TouchSelector(text=True)
+        self.callback_id = self.selector.connect('changed', \
+            self.save_selected_fields)
         self.pannable_area = hildon.PannableArea()
         vbox = gtk.VBox()
         vbox.pack_start(self.selector)
@@ -217,6 +219,8 @@ class ConfigurationDialog:
         """Shows dialog for selecting necessary items."""
 
         self.pannable_area.hide()
+        # blocks 'change' event for selector
+        self.selector.handler_block(self.callback_id)
 
         # fill items list
         for item in items:
@@ -229,11 +233,15 @@ class ConfigurationDialog:
         # mark necessary items
         items_to_select = self.config.get_fields()
         model = self.selector.get_model(0)
-        for index, item in enumerate(items_to_select):
-            self.selector.select_iter(0, model.get_iter(index), False)
+        for index, item in enumerate(items):
+            if item in items_to_select:
+                self.selector.select_iter(0, model.get_iter(index), False)
 
         self.selector.show()
 
+        # reconnect signal
+        self.selector.connect('changed', self.save_selected_fields)
+
     def show_order_settings(self, widget, items):
         """Shows dialog for selecting items order."""
 
@@ -253,3 +261,12 @@ class ConfigurationDialog:
         # activate first tab
         # FIXME: read from config
         self.window.show_all()
+        self.button_items.set_active(True)
+
+    def save_selected_fields(self, widget, column):
+        """Save selected choice."""
+
+        model = self.selector.get_model(0)
+        selected_items = [model[index][0] for index in [item[0] for item in \
+            self.selector.get_selected_rows(0)]]
+        self.config.set_fields(selected_items)