More touch selector fun (Callback number)
authorepage <eopage@byu.net>
Fri, 25 Sep 2009 02:05:00 +0000 (02:05 +0000)
committerepage <eopage@byu.net>
Fri, 25 Sep 2009 02:05:00 +0000 (02:05 +0000)
git-svn-id: file:///svnroot/gc-dialer/trunk@478 c39d3808-3fe2-4d86-a59f-b7f623ee9f21

src/dc_glade.py
src/dialcentral.glade
src/gv_views.py
src/hildonize.py
src/null_views.py
support/builddeb.py

index 9e85078..dcdf777 100755 (executable)
@@ -111,7 +111,6 @@ class Dialcentral(object):
                self._window = hildonize.hildonize_window(self._app, self._window)
                hildonize.hildonize_text_entry(self._widgetTree.get_widget("usernameentry"))
                hildonize.hildonize_password_entry(self._widgetTree.get_widget("passwordentry"))
-               hildonize.hildonize_combo_entry(self._widgetTree.get_widget("callbackcombo").get_child())
 
                for scrollingWidget in (
                        'recent_scrolledwindow',
index 412fafd..ba8d0ff 100644 (file)
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="c" signal="clicked"/>
-                        <accelerator key="b" signal="clicked"/>
-                        <accelerator key="a" signal="clicked"/>
                         <accelerator key="2" signal="clicked"/>
+                        <accelerator key="a" signal="clicked"/>
+                        <accelerator key="b" signal="clicked"/>
+                        <accelerator key="c" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label10">
                             <property name="visible">True</property>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="f" signal="clicked"/>
-                        <accelerator key="e" signal="clicked"/>
-                        <accelerator key="d" signal="clicked"/>
                         <accelerator key="3" signal="clicked"/>
+                        <accelerator key="d" signal="clicked"/>
+                        <accelerator key="e" signal="clicked"/>
+                        <accelerator key="f" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label11">
                             <property name="visible">True</property>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="i" signal="clicked"/>
-                        <accelerator key="h" signal="clicked"/>
-                        <accelerator key="g" signal="clicked"/>
                         <accelerator key="4" signal="clicked"/>
+                        <accelerator key="g" signal="clicked"/>
+                        <accelerator key="h" signal="clicked"/>
+                        <accelerator key="i" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label13">
                             <property name="visible">True</property>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="l" signal="clicked"/>
-                        <accelerator key="k" signal="clicked"/>
-                        <accelerator key="j" signal="clicked"/>
                         <accelerator key="5" signal="clicked"/>
+                        <accelerator key="j" signal="clicked"/>
+                        <accelerator key="k" signal="clicked"/>
+                        <accelerator key="l" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label14">
                             <property name="visible">True</property>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="o" signal="clicked"/>
-                        <accelerator key="n" signal="clicked"/>
-                        <accelerator key="m" signal="clicked"/>
                         <accelerator key="6" signal="clicked"/>
+                        <accelerator key="m" signal="clicked"/>
+                        <accelerator key="n" signal="clicked"/>
+                        <accelerator key="o" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label15">
                             <property name="visible">True</property>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="s" signal="clicked"/>
-                        <accelerator key="r" signal="clicked"/>
-                        <accelerator key="q" signal="clicked"/>
-                        <accelerator key="p" signal="clicked"/>
                         <accelerator key="7" signal="clicked"/>
+                        <accelerator key="p" signal="clicked"/>
+                        <accelerator key="q" signal="clicked"/>
+                        <accelerator key="r" signal="clicked"/>
+                        <accelerator key="s" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label16">
                             <property name="visible">True</property>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="v" signal="clicked"/>
-                        <accelerator key="u" signal="clicked"/>
-                        <accelerator key="t" signal="clicked"/>
                         <accelerator key="8" signal="clicked"/>
+                        <accelerator key="t" signal="clicked"/>
+                        <accelerator key="u" signal="clicked"/>
+                        <accelerator key="v" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label17">
                             <property name="visible">True</property>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="z" signal="clicked"/>
-                        <accelerator key="y" signal="clicked"/>
-                        <accelerator key="x" signal="clicked"/>
-                        <accelerator key="w" signal="clicked"/>
                         <accelerator key="9" signal="clicked"/>
+                        <accelerator key="w" signal="clicked"/>
+                        <accelerator key="x" signal="clicked"/>
+                        <accelerator key="y" signal="clicked"/>
+                        <accelerator key="z" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label18">
                             <property name="visible">True</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkComboBoxEntry" id="callbackcombo">
-                    <property name="visible">True</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
                   <widget class="GtkLabel" id="label4">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
                   </packing>
                 </child>
                 <child>
+                  <widget class="GtkButton" id="callbackSelectButton">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                  </widget>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
                   <placeholder/>
                 </child>
                 <child>
index 079008b..d91bab2 100644 (file)
@@ -18,9 +18,7 @@ You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
-@todo Touch selector for callback number
 @todo Alternate UI for dialogs (stackables)
-@todo Switch to a selector with entry for notification time
 """
 
 from __future__ import with_statement
@@ -670,10 +668,10 @@ class AccountInfo(object):
                self._notifyOnVoicemail = False
                self._notifyOnSms = False
 
-               self._callbackList = gtk.ListStore(gobject.TYPE_STRING)
+               self._callbackList = []
                self._accountViewNumberDisplay = widgetTree.get_widget("gcnumber_display")
-               self._callbackCombo = widgetTree.get_widget("callbackcombo")
-               self._onCallbackentryChangedId = 0
+               self._callbackSelectButton = widgetTree.get_widget("callbackSelectButton")
+               self._onCallbackSelectChangedId = 0
 
                self._notifyCheckbox = widgetTree.get_widget("notifyCheckbox")
                self._minutesEntryButton = widgetTree.get_widget("minutesEntryButton")
@@ -696,8 +694,8 @@ class AccountInfo(object):
                self._accountViewNumberDisplay.set_use_markup(True)
                self.set_account_number("")
 
-               self._callbackList.clear()
-               self._onCallbackentryChangedId = self._callbackCombo.get_child().connect("changed", self._on_callbackentry_changed)
+               del self._callbackList[:]
+               self._onCallbackSelectChangedId = self._callbackSelectButton.connect("clicked", self._on_callbackentry_clicked)
 
                if self._alarmHandler is not None:
                        self._notifyCheckbox.set_active(self._alarmHandler.isEnabled)
@@ -721,8 +719,8 @@ class AccountInfo(object):
                self.update(force=True)
 
        def disable(self):
-               self._callbackCombo.get_child().disconnect(self._onCallbackentryChangedId)
-               self._onCallbackentryChangedId = 0
+               self._callbackSelectButton.disconnect(self._onCallbackSelectChangedId)
+               self._onCallbackSelectChangedId = 0
 
                if self._alarmHandler is not None:
                        self._notifyCheckbox.disconnect(self._onNotifyToggled)
@@ -743,10 +741,10 @@ class AccountInfo(object):
                        self._smsCheckbox.set_sensitive(True)
 
                self.clear()
-               self._callbackList.clear()
+               del self._callbackList[:]
 
        def get_selected_callback_number(self):
-               return make_ugly(self._callbackCombo.get_child().get_text())
+               return make_ugly(self._callbackSelectButton.get_label())
 
        def set_account_number(self, number):
                """
@@ -762,7 +760,7 @@ class AccountInfo(object):
                return True
 
        def clear(self):
-               self._callbackCombo.get_child().set_text("")
+               self._callbackSelectButton.set_label("")
                self.set_account_number("")
                self._isPopulated = False
 
@@ -791,7 +789,7 @@ class AccountInfo(object):
 
        def _populate_callback_combo(self):
                self._isPopulated = True
-               self._callbackList.clear()
+               del self._callbackList[:]
                try:
                        callbackNumbers = self._backend.get_callback_numbers()
                except Exception, e:
@@ -800,13 +798,10 @@ class AccountInfo(object):
                        return
 
                for number, description in callbackNumbers.iteritems():
-                       self._callbackList.append((make_pretty(number),))
+                       self._callbackList.append(make_pretty(number))
 
-               self._callbackCombo.set_model(self._callbackList)
-               self._callbackCombo.set_text_column(0)
-               #callbackNumber = self._backend.get_callback_number()
                callbackNumber = self._defaultCallback
-               self._callbackCombo.get_child().set_text(make_pretty(callbackNumber))
+               self._callbackSelectButton.set_label(make_pretty(callbackNumber))
 
        def _set_callback_number(self, number):
                try:
@@ -841,11 +836,20 @@ class AccountInfo(object):
                        self._notifyCheckbox.set_active(self._alarmHandler.isEnabled)
                        self._minutesEntryButton.set_label("%d Minutes" % self._alarmHandler.recurrence)
 
-       def _on_callbackentry_changed(self, *args):
+       def _on_callbackentry_clicked(self, *args):
                try:
-                       text = self.get_selected_callback_number()
-                       number = make_ugly(text)
+                       actualSelection = make_pretty(self.get_selected_callback_number())
+
+                       userSelection = hildonize.touch_selector_entry(
+                               self._window,
+                               "Callback Number",
+                               self._callbackList,
+                               actualSelection,
+                       )
+                       number = make_ugly(userSelection)
                        self._set_callback_number(number)
+               except RuntimeError, e:
+                       logging.exception("%s" % str(e))
                except Exception, e:
                        self._errorDisplay.push_exception()
 
index 84a3de3..98f848f 100644 (file)
@@ -568,7 +568,7 @@ def _null_touch_selector_entry(parent, title, items, defaultItem):
        customEntry = gtk.Entry()
 
        layout = gtk.VBox()
-       layout.pack_start(customEntry)
+       layout.pack_start(customEntry, expand=False)
        layout.pack_start(scrolledWin)
 
        hildonize_scrollwindow(layout)
index ce6a6cd..41d759a 100644 (file)
@@ -57,7 +57,7 @@ class AccountInfo(object):
        def __init__(self, widgetTree):
                self._callbackList = gtk.ListStore(gobject.TYPE_STRING)
                self._accountViewNumberDisplay = widgetTree.get_widget("gcnumber_display")
-               self._callbackCombo = widgetTree.get_widget("callbackcombo")
+               self._callbackSelectButton = widgetTree.get_widget("callbackSelectButton")
                self._clearCookiesButton = widgetTree.get_widget("clearcookies")
 
                self._notifyCheckbox = widgetTree.get_widget("notifyCheckbox")
@@ -67,7 +67,7 @@ class AccountInfo(object):
                self._smsCheckbox = widgetTree.get_widget("smsCheckbox")
 
        def enable(self):
-               self._callbackCombo.set_sensitive(False)
+               self._callbackSelectButton.set_sensitive(False)
                self._clearCookiesButton.set_sensitive(False)
 
                self._notifyCheckbox.set_sensitive(False)
@@ -79,7 +79,7 @@ class AccountInfo(object):
                self._accountViewNumberDisplay.set_label("")
 
        def disable(self):
-               self._callbackCombo.set_sensitive(True)
+               self._callbackSelectButton.set_sensitive(True)
                self._clearCookiesButton.set_sensitive(True)
 
                self._notifyCheckbox.set_sensitive(True)
index 97f3baa..ad5b063 100755 (executable)
@@ -19,21 +19,21 @@ __version__ = constants.__version__
 __build__ = constants.__build__
 __changelog__ = """
 1.0.6
-* Adding seperator between dialcentral launches in log
-* Implemented a work around for https://bugs.maemo.org/show_bug.cgi?id=4957
-* Disables notifications on uninstall
-* Including a vastly improved py2deb for better packages (icons on package, etc)
-* Tweaked sizes of stuff on recent tab
-* Starting some work on rotation support for fremantle
-* Made startup more error resistant
-* Simplified menus
-* Fremantle: Making various areas pannable
-* Fremantle: CTRL-V added for paste for Dialpad
-* Fremantle: CTRL-Enter added for fullscreen
-* Phone selection and SMS Message dialogs now use a tree view for the top part.  This gives highlighting of the last message, easier scrolling, easier code, etc
-* Added notifcations for various things like login and dialing
+* Fremantle Prep: Simplified menus in prep for no menu or the Fremantle App Menu
+* Fremantle Prep: Implemented a work around for https://bugs.maemo.org/show_bug.cgi?id=4957
+* Fremantle Prep: Switched to touch selectors for notification time, callback number, and contact addressbook
+* Fremantle Prep: Making various areas pannable
+* Fremantle Prep: CTRL-V added for paste for Dialpad
+* Fremantle Prep: CTRL-Enter added for fullscreen
+* UI Tweak: Phone selection and SMS Message dialogs now highlight the last message and are easier to scroll
+* UI Tweak: Tweaked sizes of stuff on recent tab
+* UI Tweak: Added notifcations for various things like login and dialing
 * UI Tweak: Switch to accounts tab when logging in and callback is blank as a sublte hint to configure it
 * UI Tweak: Switch to accounts tab on failed login to remind the user they are not logged in
+* Packaging: Disables notifications on uninstall
+* Packaging: Including a vastly improved py2deb for better packages (icons on package, etc)
+* Debugging: Adding seperator between dialcentral launches in log
+* Bug Fix: Made startup more error resistant
 * Bug Fix: some dependencies for Diablo
 * Bug Fix: Error on refreshing tabs when not logged in
 * Bug Fix: #4471 Notification Checkbox Won't Stay Checked (hour roll over error)