added "add and remove network settings" features
authorFredrik Wendt <fredrik@wendt.se>
Sun, 1 Aug 2010 14:54:52 +0000 (15:54 +0100)
committerFredrik Wendt <fredrik@wendt.se>
Sun, 1 Aug 2010 14:54:52 +0000 (15:54 +0100)
package/src/wifi_assistant/config-gui.py

index 49622db..c33e0df 100644 (file)
@@ -14,11 +14,12 @@ 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"))
-        ssid_list = 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)
@@ -99,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
     
@@ -131,6 +142,95 @@ class ConfigGui():
             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)