From fcf8fff40a95e69c448bc93c53164ab08e272396 Mon Sep 17 00:00:00 2001 From: epage Date: Sat, 29 Aug 2009 19:13:05 +0000 Subject: [PATCH] Finishing up the hildonization of the number editor git-svn-id: file:///svnroot/gc-dialer/trunk@428 c39d3808-3fe2-4d86-a59f-b7f623ee9f21 --- src/dialcentral.glade | 100 ++++++++++++++++++++----------------------------- src/gv_views.py | 30 +++++++-------- src/hildonize.py | 55 +++++++++++++++++++++++++++ src/null_views.py | 6 +-- 4 files changed, 112 insertions(+), 79 deletions(-) diff --git a/src/dialcentral.glade b/src/dialcentral.glade index bdc65ae..34a5326 100644 --- a/src/dialcentral.glade +++ b/src/dialcentral.glade @@ -249,10 +249,10 @@ False False - - - + + + True @@ -275,10 +275,10 @@ False False - - - + + + True @@ -301,10 +301,10 @@ False False - - - + + + True @@ -327,10 +327,10 @@ False False - - - + + + True @@ -355,10 +355,10 @@ False False - - - + + + True @@ -383,11 +383,11 @@ False False - - - - + + + + True @@ -410,10 +410,10 @@ False False - - - + + + True @@ -438,11 +438,11 @@ False False - - - - + + + + True @@ -771,40 +771,6 @@ - - True - - - True - True - - True - - - 0 - - - - - True - Minutes - - - False - 1 - - - - - 1 - 2 - 3 - 4 - GTK_FILL - - - - True 0 @@ -917,6 +883,20 @@ + + True + True + True + + + 1 + 2 + 3 + 4 + GTK_FILL + + + diff --git a/src/gv_views.py b/src/gv_views.py index d1a04b1..ed2606f 100644 --- a/src/gv_views.py +++ b/src/gv_views.py @@ -583,7 +583,7 @@ class AccountInfo(object): self._onCallbackentryChangedId = 0 self._notifyCheckbox = widgetTree.get_widget("notifyCheckbox") - self._minutesEntry = widgetTree.get_widget("minutesEntry") + self._minutesEntryButton = widgetTree.get_widget("minutesEntryButton") self._missedCheckbox = widgetTree.get_widget("missedCheckbox") self._voicemailCheckbox = widgetTree.get_widget("voicemailCheckbox") self._smsCheckbox = widgetTree.get_widget("smsCheckbox") @@ -594,6 +594,7 @@ class AccountInfo(object): self._onSmsToggled = 0 self._applyAlarmTimeoutId = None + self._window = gtk_toolbox.find_parent_window(self._minutesEntryButton) self._defaultCallback = "" def enable(self): @@ -606,22 +607,20 @@ class AccountInfo(object): self._onCallbackentryChangedId = self._callbackCombo.get_child().connect("changed", self._on_callbackentry_changed) if self._alarmHandler is not None: - self._minutesEntry.set_range(1, 60) - self._notifyCheckbox.set_active(self._alarmHandler.isEnabled) - self._minutesEntry.set_value(self._alarmHandler.recurrence) + self._minutesEntryButton.set_label("%d minutes" % self._alarmHandler.recurrence) self._missedCheckbox.set_active(self._notifyOnMissed) self._voicemailCheckbox.set_active(self._notifyOnVoicemail) self._smsCheckbox.set_active(self._notifyOnSms) self._onNotifyToggled = self._notifyCheckbox.connect("toggled", self._on_notify_toggled) - self._onMinutesChanged = self._minutesEntry.connect("value-changed", self._on_minutes_changed) + self._onMinutesChanged = self._minutesEntryButton.connect("clicked", self._on_minutes_changed) self._onMissedToggled = self._missedCheckbox.connect("toggled", self._on_missed_toggled) self._onVoicemailToggled = self._voicemailCheckbox.connect("toggled", self._on_voicemail_toggled) self._onSmsToggled = self._smsCheckbox.connect("toggled", self._on_sms_toggled) else: self._notifyCheckbox.set_sensitive(False) - self._minutesEntry.set_sensitive(False) + self._minutesEntryButton.set_sensitive(False) self._missedCheckbox.set_sensitive(False) self._voicemailCheckbox.set_sensitive(False) self._smsCheckbox.set_sensitive(False) @@ -634,7 +633,7 @@ class AccountInfo(object): if self._alarmHandler is not None: self._notifyCheckbox.disconnect(self._onNotifyToggled) - self._minutesEntry.disconnect(self._onMinutesChanged) + self._minutesEntryButton.disconnect(self._onMinutesChanged) self._missedCheckbox.disconnect(self._onNotifyToggled) self._voicemailCheckbox.disconnect(self._onNotifyToggled) self._smsCheckbox.disconnect(self._onNotifyToggled) @@ -645,7 +644,7 @@ class AccountInfo(object): self._onSmsToggled = 0 else: self._notifyCheckbox.set_sensitive(True) - self._minutesEntry.set_sensitive(True) + self._minutesEntryButton.set_sensitive(True) self._missedCheckbox.set_sensitive(True) self._voicemailCheckbox.set_sensitive(True) self._smsCheckbox.set_sensitive(True) @@ -742,16 +741,15 @@ class AccountInfo(object): except StandardError, e: self._errorDisplay.push_exception() - def _update_alarm_settings(self): + def _update_alarm_settings(self, recurrence): try: isEnabled = self._notifyCheckbox.get_active() - recurrence = self._minutesEntry.get_value_as_int() if isEnabled != self._alarmHandler.isEnabled or recurrence != self._alarmHandler.recurrence: self._alarmHandler.apply_settings(isEnabled, recurrence) finally: self.save_everything() self._notifyCheckbox.set_active(self._alarmHandler.isEnabled) - self._minutesEntry.set_value(self._alarmHandler.recurrence) + self._minutesEntryButton.set_label("%d Minutes" % self._alarmHandler.recurrence) def _on_callbackentry_changed(self, *args): text = self.get_selected_callback_number() @@ -765,15 +763,15 @@ class AccountInfo(object): self._applyAlarmTimeoutId = gobject.timeout_add(500, self._on_apply_timeout) def _on_minutes_changed(self, *args): - if self._applyAlarmTimeoutId is not None: - gobject.source_remove(self._applyAlarmTimeoutId) - self._applyAlarmTimeoutId = None - self._applyAlarmTimeoutId = gobject.timeout_add(500, self._on_apply_timeout) + recurrence = hildonize.request_number( + self._window, "Minutes", (1, 50), self._alarmHandler.recurrence + ) + self._update_alarm_settings(recurrence) def _on_apply_timeout(self, *args): self._applyAlarmTimeoutId = None - self._update_alarm_settings() + self._update_alarm_settings(self._alarmHandler.recurrence) return False def _on_missed_toggled(self, *args): diff --git a/src/hildonize.py b/src/hildonize.py index 28dd4cb..0db6905 100644 --- a/src/hildonize.py +++ b/src/hildonize.py @@ -101,3 +101,58 @@ if IS_HILDON: else: def set_thumb_scrollbar(scrolledWindow): pass + + +if IS_HILDON: + def request_number(parent, title, range, default): + spinner = hildon.NumberEditor(*range) + spinner.set_value(default) + + dialog = gtk.Dialog( + title, + parent, + gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT, + (gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL), + ) + dialog.set_default_response(gtk.RESPONSE_CANCEL) + dialog.get_child().add(spinner) + + try: + dialog.show_all() + response = dialog.run() + finally: + dialog.hide() + + if response == gtk.RESPONSE_OK: + return spinner.get_value() + elif response == gtk.RESPONSE_CANCEL or response == gtk.RESPONSE_DELETE_EVENT: + raise RuntimeError("User cancelled request") + else: + raise RuntimeError("Unrecognized response %r", response) +else: + def request_number(parent, title, range, default): + adjustment = gtk.Adjustment(default, range[0], range[1], 1, 5, 0) + spinner = gtk.SpinButton(adjustment, 0, 0) + spinner.set_wrap(False) + + dialog = gtk.Dialog( + title, + parent, + gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT, + (gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL), + ) + dialog.set_default_response(gtk.RESPONSE_CANCEL) + dialog.get_child().add(spinner) + + try: + dialog.show_all() + response = dialog.run() + finally: + dialog.hide() + + if response == gtk.RESPONSE_OK: + return spinner.get_value_as_int() + elif response == gtk.RESPONSE_CANCEL or response == gtk.RESPONSE_DELETE_EVENT: + raise RuntimeError("User cancelled request") + else: + raise RuntimeError("Unrecognized response %r", response) diff --git a/src/null_views.py b/src/null_views.py index 07fdfe8..73bfd75 100644 --- a/src/null_views.py +++ b/src/null_views.py @@ -61,7 +61,7 @@ class AccountInfo(object): self._clearCookiesButton = widgetTree.get_widget("clearcookies") self._notifyCheckbox = widgetTree.get_widget("notifyCheckbox") - self._minutesEntry = widgetTree.get_widget("minutesEntry") + self._minutesEntryButton = widgetTree.get_widget("minutesEntryButton") self._missedCheckbox = widgetTree.get_widget("missedCheckbox") self._voicemailCheckbox = widgetTree.get_widget("voicemailCheckbox") self._smsCheckbox = widgetTree.get_widget("smsCheckbox") @@ -71,7 +71,7 @@ class AccountInfo(object): self._clearCookiesButton.set_sensitive(False) self._notifyCheckbox.set_sensitive(False) - self._minutesEntry.set_sensitive(False) + self._minutesEntryButton.set_sensitive(False) self._missedCheckbox.set_sensitive(False) self._voicemailCheckbox.set_sensitive(False) self._smsCheckbox.set_sensitive(False) @@ -83,7 +83,7 @@ class AccountInfo(object): self._clearCookiesButton.set_sensitive(True) self._notifyCheckbox.set_sensitive(True) - self._minutesEntry.set_sensitive(True) + self._minutesEntryButton.set_sensitive(True) self._missedCheckbox.set_sensitive(True) self._voicemailCheckbox.set_sensitive(True) self._smsCheckbox.set_sensitive(True) -- 1.7.9.5