+++ /dev/null
-#!/usr/bin/python2.5
-import gtk, hildon
-import conic
-import gobject
-
-from launcher import Launcher
-
-def _(str):
- return str
-
-class Daemon():
-
- def __init__(self, launcher, application_settings, network_settings, parent_window):
- self._application_settings = application_settings
- self._network_settings = network_settings
- self._parent = parent_window
- self._launcher = launcher
- self._popup = self._application_settings.getUsePopup()
-
-
- def connectionEstablished(self, ssid):
- settings = self._network_settings.get(ssid)
- if settings is None:
- if self.showDecisionDialog(ssid):
- defaults = self._network_settings.getDefaultSettings()
- self.launchBrowser(defaults)
- return
-
- if settings.getLaunchingOfBrowserEnabled():
- self.launchBrowser(settings)
-
-
- def launchBrowser(self, settings):
- browser_name = settings.getNameOfBrowserToLaunch()
- browser_options = settings.getBrowserOptions()
- if 'url' in browser_options:
- self._launcher.launchBrowser(browser_name, browser_options)
- # the following line is the backwards compatible line
- else:
- settings = self._network_settings.getDefaultSettings()
- self.launchBrowser(settings)
-
- def showDecisionDialog(self, ssid):
- if not self._popup:
- return False
-
- dialog = self._createDialog(ssid)
-
- dialog.show_all()
- result = dialog.run()
- dialog.hide()
-
- launch_browser = (result == gtk.RESPONSE_YES)
- if checkbox.get_active():
- setting = NetworkSetting()
- setting.setNetworkName(ssid)
- setting.setLaunchingOfBrowserEnabled(launch_browser)
- self._network_settings.save(setting)
-
- return launch_browser
-
- def start(self):
- self._connection = conic.Connection()
- self._connection.connect("connection-event", self._connectionEventCallback)
- self._connection.set_property("automatic-connection-events", True)
- self._application_settings.addUsePopupListener(self._usePopupEventCallback)
- gtk.main()
-
-
- def stop(self):
- self._application_settings.removeUsePopupListener(self._usePopupEventCallback)
- self._connection.set_property("automatic-connection-events", False)
-
-
- def _createDialog(self, ssid):
- dialog = gtk.Dialog(ssid, self._parent)
- dialog.vbox.set_homogeneous(False)
-
- dialog.add_button(_('No'), gtk.RESPONSE_NO)
- dialog.add_button(_('Yes'), gtk.RESPONSE_YES)
-
- label = gtk.Label(_('New network connection established - do you wish to launch a browser?'))
- label.set_line_wrap(True)
- #label.set_justify(gtk.JUSTIFY_LEFT)
- #label.set_alignment(0, 0.5)
- dialog.vbox.add(label)
-
- checkbox = hildon.CheckButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
- checkbox.set_label(_('Remember this decision'))
- checkbox.set_active(True)
- dialog.vbox.add(checkbox)
-
- return dialog
-
-
- def _connectionEventCallback(self, connection, event):
- status = event.get_status()
- if status == conic.STATUS_CONNECTED:
- # assemble id > name dict
- iap_id_to_name = {}
- iaps = connection.get_all_iaps()
- for iap in iaps:
- iap_id = iap.get_id()
- iap_name = iap.get_name()
- iap_id_to_name[iap_id] = iap_name
-
- # get name of network
- iap_id = event.get_iap_id()
- iap_name = None
- if (iap_id_to_name.has_key(iap_id)):
- iap_name = iap_id_to_name[iap_id]
- self.connectionEstablished(iap_name)
-
-
- def _usePopupEventCallback(self, gconfClient, id, gconfEntry, x):
- self._popup = gconfEntry.get_value().get_bool()
-
-
-if __name__ == "__main__":
- d = Daemon(Launcher(), ApplicationSettings(), NetworkSettings(), gtk.Window())
-
- d.start()
- d.stop()