moved settings to separate module
[wifi-assistant] / package / src / wifi_assistant / config-gui.py
index 1bc0307..c33e0df 100644 (file)
@@ -14,11 +14,15 @@ class ConfigGui():
         self._settings = settings
         self._program = hildon.Program.get_instance()
         self._win = hildon.StackableWindow()
+        self._model= self._settings.getLaunchSettings()
 
 
     def main(self):
         self._win.set_title(_("Wifi Jail Breakout Assistant"))
-        self._win.add(self._create_ssid_view(self._settings.getLaunchSettings()))
+        ssid_list = self._create_ssid_view(self._model)
+        pannable_area= hildon.PannableArea()
+        pannable_area.add(ssid_list)
+        self._win.add(pannable_area)
         self._win.set_app_menu(self._create_menu())
         self._win.connect("destroy", gtk.main_quit, None)
         self._win.show_all()
@@ -96,6 +100,16 @@ class ConfigGui():
         settings.connect("clicked",self._show_settings)
         menu.append(settings)
         
+        add = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
+        add.set_label(_("Add network"))
+        add.connect("clicked", self._add_ssid)
+        menu.append(add)
+        
+        delete = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
+        delete.set_label(_("Delete networks"))
+        delete.connect("clicked", self._delete_ssid)
+        menu.append(delete)
+        
         menu.show_all()
         return menu
     
@@ -117,11 +131,106 @@ class ConfigGui():
         result = dialog.run()
         dialog.hide()
         
-        launchBrowser = (result == gtk.RESPONSE_YES)
-        self._settings.setLaunchSetting(ssid, launchBrowser)
-        model.set(iter, 1, launchBrowser)
+        launchBrowser = None
+        if result == gtk.RESPONSE_YES:
+            launchBrowser = True
+        elif result == gtk.RESPONSE_NO:
+            launchBrowser = False
+        
+        if launchBrowser is not None:
+            self._settings.setLaunchSetting(ssid, launchBrowser)
+            model.set(iter, 1, launchBrowser)
     
     
+    def _add_ssid(self, x):
+        checkbox = hildon.CheckButton(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT)
+        checkbox.set_label(_('Launch browser when connected'))
+        checkbox.set_active(True)
+        
+        url_label = gtk.Label(_('Name of the network:')) # IMPROVEMENT: caption?
+        url_label.set_alignment(0, 0.5)
+        url_label.set_padding(5, 5)
+        url_field = hildon.Entry(gtk.HILDON_SIZE_AUTO)
+        url_field.set_text(_('MyNetwork'))
+        
+        dialog = gtk.Dialog(_('Add network'), self._win)
+        dialog.vbox.set_homogeneous(False)
+        
+        dialog.vbox.add(url_label)
+        dialog.vbox.add(url_field)
+        dialog.vbox.add(checkbox)
+        
+        dialog.add_button(_('Cancel'), gtk.RESPONSE_CANCEL)
+        dialog.add_button(_('Save'), gtk.RESPONSE_YES)
+        
+        dialog.show_all()
+        result = dialog.run()
+        dialog.hide()
+        
+
+        if result == gtk.RESPONSE_YES:
+            launchBrowser = checkbox.get_active()
+            ssid = url_field.get_text()
+            self._settings.setLaunchSetting(ssid, launchBrowser)
+            self._model.append([ssid, launchBrowser])
+    
+
+    def _delete_ssid(self, x):
+        window = hildon.StackableWindow()
+        window.set_border_width(6)
+        toolbar = hildon.EditToolbar(_("Choose network settings to delete"), _("Delete"))
+        window.set_edit_toolbar(toolbar)
+     
+        area = hildon.PannableArea()
+        tree_view = self._create_delete_view()
+        area.add(tree_view)
+        window.add(area)
+     
+        toolbar.connect("button-clicked", self._delete_button_clicked, tree_view)
+        toolbar.connect_object("arrow-clicked", gtk.Window.destroy, window)
+     
+        window.show_all()
+        window.fullscreen()
+
+
+    def _delete_button_clicked(self, button, treeview):
+        selection = treeview.get_selection()
+     
+        (model, selected_rows) = selection.get_selected_rows()
+        
+        # TODO: are you sure?
+     
+        row_references = []
+        for path in selected_rows:
+            ref = gtk.TreeRowReference(model, path)
+            row_references.append(ref)
+     
+        for ref in row_references:
+            path = ref.get_path()
+            iter = model.get_iter(path)
+            ssid, x = model.get(iter, 0, 1)  
+            self._settings.deleteLaunchSetting(ssid)
+            model.remove(iter)
+
+        # TODO: close delete window?
+
+        
+    def _create_delete_view(self):
+        tv = hildon.GtkTreeView(gtk.HILDON_UI_MODE_EDIT)
+        renderer = gtk.CellRendererText()
+        col = gtk.TreeViewColumn("Title", renderer, text=0)
+     
+        tv.append_column(col)
+     
+        # Set multiple selection mode
+        selection = tv.get_selection()
+        selection.set_mode(gtk.SELECTION_MULTIPLE)
+     
+        tv.set_model(self._model)
+     
+        return tv
+
+
     def _create_ssid_view(self, model):
 #        view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
 #        view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
@@ -132,19 +241,24 @@ class ConfigGui():
         view = gtk.TreeView(model)
         view.set_border_width(5)
         
-        tvcolumn = gtk.TreeViewColumn(_('SSID'), gtk.CellRendererText(), text = 0)
-        tvcolumn.set_expand(True)
-        view.append_column(tvcolumn)
-    
         def boolean_func(column, cell, model, iter):
             if model.get_value(iter, 1):
                 stock_id = 'gtk-yes'
             else:
                 stock_id = 'gtk-no'
             cell.set_property('stock-id', stock_id)
-            
-        view.insert_column_with_data_func(1, _('Launch'), gtk.CellRendererPixbuf(), boolean_func)
         
+        launch_cell = gtk.CellRendererPixbuf()
+        launch_cell.set_fixed_size(100, 50)
+        view.insert_column_with_data_func(1, _('Launch'), launch_cell, boolean_func)
+#        toggle_cell = gtk.CellRendererToggle()
+#        toggle_cell.set_fixed_size(100, 50)
+#        view.append_column( gtk.TreeViewColumn( '', toggle_cell, active=1))
+         
+        tvcolumn = gtk.TreeViewColumn(_('SSID'), gtk.CellRendererText(), text = 0)
+        tvcolumn.set_expand(True)
+        view.append_column(tvcolumn)
+    
         view.connect('row-activated', self._row_activated)
         view.set_search_column(0)
         tvcolumn.set_sort_column_id(0)