diff options
author | Guido Günther <agx@sigxcpu.org> | 2012-01-04 20:40:01 +0100 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2012-01-04 20:40:01 +0100 |
commit | 17bb6e30fd7a4d24f1fb1b700bd5e7ddc86be207 (patch) | |
tree | 41ebef3a855f3209175b7896e16529b4b6afe8f7 | |
parent | 6a08a5de0d90caa19d6c8f3dc6eaf575cddde0c0 (diff) | |
parent | ef38aedd75fcbc2aea8875e2a811245da7ccbc04 (diff) |
Merge commit 'v0.0.3.1' into debian/sid
-rw-r--r-- | NEWS | 8 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | src/ppm-provider-assistant.ui | 2 | ||||
-rw-r--r-- | src/ppm.ui | 5 | ||||
-rw-r--r-- | src/ppm/modemproxy.py | 20 | ||||
-rw-r--r-- | src/ppm/providerdb.py | 7 | ||||
-rwxr-xr-x | src/prepaid-manager-applet.py | 60 |
7 files changed, 76 insertions, 30 deletions
@@ -1,3 +1,11 @@ +=============== +Version 0.0.3.1 +=============== +* Provider selections fixes +* Add 'change' button to allow to reconfigure current provider +* Reschedule modem setup on modem errors +* Switch to xz tarballs + ============== Version 0.0.3 ============== diff --git a/configure.ac b/configure.ac index a6530a0..429b404 100644 --- a/configure.ac +++ b/configure.ac @@ -1,9 +1,9 @@ # -*- Autoconf -*- AC_PREREQ([2.67]) -AC_INIT([prepaid-manager-applet], [0.0.3], +AC_INIT([prepaid-manager-applet], [0.0.3.1], [https://honk.sigxcpu.org/piki/projects/ppm/]) -AM_INIT_AUTOMAKE([-Wno-portability]) +AM_INIT_AUTOMAKE([dist-xz -Wno-portability]) IT_PROG_INTLTOOL([0.35.0]) diff --git a/src/ppm-provider-assistant.ui b/src/ppm-provider-assistant.ui index f07314d..590e18d 100644 --- a/src/ppm-provider-assistant.ui +++ b/src/ppm-provider-assistant.ui @@ -33,7 +33,7 @@ <child> <object class="GtkLabel" id="label1"> <property name="visible">True</property> - <property name="label" translatable="yes">Prepaid Manager couldn't autodetect your mobile broadband provider. The following pages will guide you through the process of setting it up.</property> + <property name="label" translatable="yes">The following pages will guide you through the process of setting it you mobile broadband provider.</property> <property name="wrap">True</property> </object> <packing> @@ -39,7 +39,7 @@ </object> </child> <child> - <object class="GtkMenuItem" id="menuitem_help"> + <object class="GtkMenuItem" id="menu_item_help"> <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> @@ -120,6 +120,7 @@ <object class="GtkButton" id="button_provider_change"> <property name="label" translatable="yes">change</property> <property name="use_action_appearance">False</property> + <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="has_tooltip">True</property> @@ -267,9 +268,11 @@ <object class="GtkButton" id="button_provider_change1"> <property name="label" translatable="yes">change</property> <property name="use_action_appearance">False</property> + <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="use_action_appearance">False</property> + <signal name="clicked" handler="on_provider_change_clicked" swapped="no"/> </object> <packing> <property name="left_attach">2</property> diff --git a/src/ppm/modemproxy.py b/src/ppm/modemproxy.py index 7ac8fa7..08d8015 100644 --- a/src/ppm/modemproxy.py +++ b/src/ppm/modemproxy.py @@ -47,6 +47,8 @@ class ModemManagerProxy(GObject.GObject): MM_DBUS_INTERFACE_MODEM_GSM_CARD='org.freedesktop.ModemManager.Modem.Gsm.Card' MM_DBUS_INTERFACE_MODEM_GSM_USSD='org.freedesktop.ModemManager.Modem.Gsm.Ussd' MM_DBUS_TIMEOUT = 5000 + MM_DBUS_FLAGS = (Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES | + Gio.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS) __gsignals__ = { # Emitted when a request to MM starts @@ -114,7 +116,7 @@ class ModemManagerProxy(GObject.GObject): def get_modems(self): modems = [] mm = Gio.DBusProxy.new_sync(self.bus, - Gio.DBusProxyFlags.NONE, + self.MM_DBUS_FLAGS, None, self.MM_DBUS_SERVICE, self.MM_DBUS_OBJECT_MODEM_MANAGER, @@ -127,12 +129,12 @@ class ModemManagerProxy(GObject.GObject): def get_imsi(self): card = Gio.DBusProxy.new_sync(self.bus, - Gio.DBusProxyFlags.NONE, - None, - self.MM_DBUS_SERVICE, - self.modem, - self.MM_DBUS_INTERFACE_MODEM_GSM_CARD, - None) + self.MM_DBUS_FLAGS, + None, + self.MM_DBUS_SERVICE, + self.modem, + self.MM_DBUS_INTERFACE_MODEM_GSM_CARD, + None) try: return card.GetImsi() except Exception as msg: @@ -147,7 +149,7 @@ class ModemManagerProxy(GObject.GObject): @mm_request def ussd_initiate(self, command, reply_func=None, error_func=None): ussd = Gio.DBusProxy.new_sync(self.bus, - Gio.DBusProxyFlags.NONE, + self.MM_DBUS_FLAGS, None, self.MM_DBUS_SERVICE, self.modem, @@ -160,7 +162,7 @@ class ModemManagerProxy(GObject.GObject): @mm_request def _modem__enable(self, enable, reply_func=None, error_func=None): ussd = Gio.DBusProxy.new_sync(self.bus, - Gio.DBusProxyFlags.NONE, + self.MM_DBUS_FLAGS, None, self.MM_DBUS_SERVICE, self.modem, diff --git a/src/ppm/providerdb.py b/src/ppm/providerdb.py index e2b097d..c1aebec 100644 --- a/src/ppm/providerdb.py +++ b/src/ppm/providerdb.py @@ -133,6 +133,13 @@ class ProviderDB(object): for r in searcher(self.tree): yield r.attrib['code'] + def get_country_by_code(self, code): + """Given a country code return it's name""" + try: + return self.countries[code] + except KeyError: + return None + def get_countries(self): for code in self.get_country_codes(): try: diff --git a/src/prepaid-manager-applet.py b/src/prepaid-manager-applet.py index 7df63e6..b1f4f6f 100755 --- a/src/prepaid-manager-applet.py +++ b/src/prepaid-manager-applet.py @@ -117,21 +117,31 @@ class PPMController(GObject.GObject): mnc = imsi[3:5] return (mcc, mnc) - def _get_provider_interactive(self, imsi): + def get_provider_interactive(self, imsi=None): """ Given the imsi, determine the provider based on that information from providerdb, request user input where ncessary + + @param imsi: If given use this to dertimine the mcc and mnc + and from that the provider. If set to C{None} request all + information from the user. + @type imsi: C{str} """ - mcc, mnc = self._imsi_to_network_id(imsi) - self.providers = self.providerdb.get_providers(mcc, mnc) - if self.providers: - if len(self.providers) > 1: - # More than one provider matching mcc/mnc, let user select - self.view.show_provider_assistant(self.providers) - else: - self.set_provider(self.providers[0]) + self.providers = [] + if imsi: + mcc, mnc = self._imsi_to_network_id(imsi) + self.providers = self.providerdb.get_providers(mcc, mnc) + + if len(self.providers) == 1: + self.set_provider(self.providers[0]) + elif len(self.providers): + # More than one provider matching mcc/mnc, let user select + self.view.show_provider_assistant(self.providers) else: - self.view.show_provider_unknown(mcc, mnc) + if imsi: + self.view.show_provider_unknown(mcc, mnc) + else: + self.view.show_provider_assistant(None) def _get_account_from_accountdb(self, imsi): """ @@ -175,7 +185,7 @@ class PPMController(GObject.GObject): else: # Account not known yet, get provider interactively self.account = None - self._get_provider_interactive(self.imsi) + self.get_provider_interactive(self.imsi) # Everything worked out, disable the timer. return False @@ -217,6 +227,9 @@ class PPMController(GObject.GObject): def get_provider_providers(self, country_code): return self.providerdb.get_providers_by_code(country_code) + def get_country_by_code(self, code): + return self.providerdb.get_country_by_code(code) + def on_mm_request_started(self, obj, mm_proxy): logging.debug("Started modem request: %s", mm_proxy.request) self.view.show_modem_response() @@ -247,6 +260,8 @@ class PPMController(GObject.GObject): def on_modem_error(self, e): self.view.show_modem_error(e.msg) logging.error(e.msg) + # The modem might have disconnected. So reschedule the setup + self.schedule_setup() def on_provider_changed(self, obj, provider): """Act on provider-changed signal""" @@ -384,9 +399,7 @@ class PPMDialog(GObject.GObject, PPMObject): self.controller.fetch_balance() def on_provider_change_clicked(self, dummy): - # FIXME: allow to select provider - # and communicate the change to the controller - raise NotImplementedError + self.controller.get_provider_interactive(imsi=None) def on_entry_code_insert(self, entry): cur_len = entry.get_text_length() @@ -569,6 +582,7 @@ class PPMProviderAssistant(PPMObject): self.country_code = None self.provider = None self.possible_providers = None + self.providers_initialized = False def _get_current_country_from_locale(self): (l, enc) = locale.getlocale() @@ -611,6 +625,7 @@ class PPMProviderAssistant(PPMObject): def show(self, providers=None): self.possible_providers = providers self.provider = None + self.providers_initialized = False if not self.possible_providers: # No list of possible providers so allow to select the country first @@ -647,28 +662,39 @@ class PPMProviderAssistant(PPMObject): def on_ppm_provider_assistant_prepare(self, obj, page): if self.assistant.get_current_page() == self.PAGE_PROVIDERS: if self.possible_providers: + if self.providers_initialized: + return + else: + self.providers_initialized = True self._fill_provider_liststore_by_providers() + self.providers_intialized = True else: + if self.country_code == self.providers_initialized: + return + else: + self.providers_initialized = self.country_code self._fill_provider_liststore_by_country_code(self.country_code) elif self.assistant.get_current_page() == self.PAGE_CONFIRM: - self.label_country.set_text(self.country_code) + country = self.controller.get_country_by_code(self.country_code) + label = country if country else self.country_code + self.label_country.set_text(label) self.label_provider.set_text(self.provider) def on_treeview_countries_changed(self, obj): - self.assistant.set_page_complete(self.vbox_countries, True) selection = self.treeview_countries.get_selection() (model, iter) = selection.get_selected() if not iter: return self.country_code = model.get_value(iter, 1) + self.assistant.set_page_complete(self.vbox_countries, True) def on_treeview_providers_changed(self, obj): - self.assistant.set_page_complete(self.vbox_providers, True) selection = self.treeview_providers.get_selection() (model, iter) = selection.get_selected() if not iter: return self.provider = model.get_value(iter, 0) + self.assistant.set_page_complete(self.vbox_providers, True) def on_ppm_provider_assistant_close(self, obj): logging.debug("Selected: %s %s", self.provider, self.country_code) |