Switching to a touch selector for the addressbook selector
authorepage <eopage@byu.net>
Wed, 23 Sep 2009 01:15:53 +0000 (01:15 +0000)
committerepage <eopage@byu.net>
Wed, 23 Sep 2009 01:15:53 +0000 (01:15 +0000)
git-svn-id: file:///svnroot/gc-dialer/trunk@463 c39d3808-3fe2-4d86-a59f-b7f623ee9f21

src/dialcentral.glade
src/gv_views.py
src/hildonize.py
src/null_views.py

index a62a1d1..d271b7b 100644 (file)
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="2" signal="clicked"/>
-                        <accelerator key="a" signal="clicked"/>
-                        <accelerator key="b" signal="clicked"/>
                         <accelerator key="c" signal="clicked"/>
                         <accelerator key="c" signal="clicked"/>
+                        <accelerator key="b" signal="clicked"/>
+                        <accelerator key="a" signal="clicked"/>
+                        <accelerator key="2" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label10">
                             <property name="visible">True</property>
                         <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"/>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="3" signal="clicked"/>
-                        <accelerator key="d" signal="clicked"/>
-                        <accelerator key="e" signal="clicked"/>
                         <accelerator key="f" signal="clicked"/>
                         <accelerator key="f" signal="clicked"/>
+                        <accelerator key="e" signal="clicked"/>
+                        <accelerator key="d" signal="clicked"/>
+                        <accelerator key="3" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label11">
                             <property name="visible">True</property>
                         <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"/>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="4" signal="clicked"/>
-                        <accelerator key="g" signal="clicked"/>
-                        <accelerator key="h" signal="clicked"/>
                         <accelerator key="i" signal="clicked"/>
                         <accelerator key="i" signal="clicked"/>
+                        <accelerator key="h" signal="clicked"/>
+                        <accelerator key="g" signal="clicked"/>
+                        <accelerator key="4" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label13">
                             <property name="visible">True</property>
                         <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"/>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="5" signal="clicked"/>
-                        <accelerator key="j" signal="clicked"/>
-                        <accelerator key="k" signal="clicked"/>
                         <accelerator key="l" signal="clicked"/>
                         <accelerator key="l" signal="clicked"/>
+                        <accelerator key="k" signal="clicked"/>
+                        <accelerator key="j" signal="clicked"/>
+                        <accelerator key="5" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label14">
                             <property name="visible">True</property>
                         <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"/>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="6" signal="clicked"/>
-                        <accelerator key="m" signal="clicked"/>
-                        <accelerator key="n" signal="clicked"/>
                         <accelerator key="o" signal="clicked"/>
                         <accelerator key="o" signal="clicked"/>
+                        <accelerator key="n" signal="clicked"/>
+                        <accelerator key="m" signal="clicked"/>
+                        <accelerator key="6" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label15">
                             <property name="visible">True</property>
                         <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"/>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_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"/>
                         <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"/>
                         <child>
                           <widget class="GtkLabel" id="label16">
                             <property name="visible">True</property>
                         <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"/>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_clicked"/>
-                        <accelerator key="8" signal="clicked"/>
-                        <accelerator key="t" signal="clicked"/>
-                        <accelerator key="u" signal="clicked"/>
                         <accelerator key="v" signal="clicked"/>
                         <accelerator key="v" signal="clicked"/>
+                        <accelerator key="u" signal="clicked"/>
+                        <accelerator key="t" signal="clicked"/>
+                        <accelerator key="8" signal="clicked"/>
                         <child>
                           <widget class="GtkLabel" id="label17">
                             <property name="visible">True</property>
                         <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"/>
                         <property name="receives_default">False</property>
                         <property name="focus_on_click">False</property>
                         <signal name="clicked" handler="on_digit_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"/>
                         <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"/>
                         <child>
                           <widget class="GtkLabel" id="label18">
                             <property name="visible">True</property>
                         <child>
                           <widget class="GtkLabel" id="label18">
                             <property name="visible">True</property>
                 <property name="visible">True</property>
                 <property name="orientation">vertical</property>
                 <child>
                 <property name="visible">True</property>
                 <property name="orientation">vertical</property>
                 <child>
-                  <widget class="GtkComboBox" id="addressbook_combo">
+                  <widget class="GtkButton" id="addressbookSelectButton">
                     <property name="visible">True</property>
                     <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
index 03dea17..b9efa42 100644 (file)
@@ -1173,8 +1173,8 @@ class ContactsView(object):
                self._selectedComboIndex = 0
                self._addressBookFactories = [null_backend.NullAddressBook()]
 
                self._selectedComboIndex = 0
                self._addressBookFactories = [null_backend.NullAddressBook()]
 
-               self._booksList = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
-               self._booksSelectionBox = widgetTree.get_widget("addressbook_combo")
+               self._booksList = []
+               self._bookSelectionButton = widgetTree.get_widget("addressbookSelectButton")
 
                self._isPopulated = False
                self._contactsmodel = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
 
                self._isPopulated = False
                self._contactsmodel = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
@@ -1199,7 +1199,7 @@ class ContactsView(object):
                self._contactColumn.set_visible(True)
 
                self._onContactsviewRowActivatedId = 0
                self._contactColumn.set_visible(True)
 
                self._onContactsviewRowActivatedId = 0
-               self._onAddressbookComboChangedId = 0
+               self._onAddressbookButtonChangedId = 0
                self._window = gtk_toolbox.find_parent_window(self._contactsview)
                self._phoneTypeSelector = PhoneTypeSelector(widgetTree, self._backend)
 
                self._window = gtk_toolbox.find_parent_window(self._contactsview)
                self._phoneTypeSelector = PhoneTypeSelector(widgetTree, self._backend)
 
@@ -1218,7 +1218,7 @@ class ContactsView(object):
                self._contactsviewselection = self._contactsview.get_selection()
                self._contactsviewselection.set_mode(gtk.SELECTION_SINGLE)
 
                self._contactsviewselection = self._contactsview.get_selection()
                self._contactsviewselection.set_mode(gtk.SELECTION_SINGLE)
 
-               self._booksList.clear()
+               del self._booksList[:]
                for (factoryId, bookId), (factoryName, bookName) in self.get_addressbooks():
                        if factoryName and bookName:
                                entryName = "%s: %s" % (factoryName, bookName)
                for (factoryId, bookId), (factoryName, bookName) in self.get_addressbooks():
                        if factoryName and bookName:
                                entryName = "%s: %s" % (factoryName, bookName)
@@ -1231,26 +1231,24 @@ class ContactsView(object):
                        row = (str(factoryId), bookId, entryName)
                        self._booksList.append(row)
 
                        row = (str(factoryId), bookId, entryName)
                        self._booksList.append(row)
 
-               self._booksSelectionBox.set_model(self._booksList)
-               cell = gtk.CellRendererText()
-               self._booksSelectionBox.pack_start(cell, True)
-               self._booksSelectionBox.add_attribute(cell, 'text', 2)
-
                self._onContactsviewRowActivatedId = self._contactsview.connect("row-activated", self._on_contactsview_row_activated)
                self._onContactsviewRowActivatedId = self._contactsview.connect("row-activated", self._on_contactsview_row_activated)
-               self._onAddressbookComboChangedId = self._booksSelectionBox.connect("changed", self._on_addressbook_combo_changed)
+               self._onAddressbookButtonChangedId = self._bookSelectionButton.connect("clicked", self._on_addressbook_button_changed)
 
                if len(self._booksList) <= self._selectedComboIndex:
                        self._selectedComboIndex = 0
 
                if len(self._booksList) <= self._selectedComboIndex:
                        self._selectedComboIndex = 0
-               self._booksSelectionBox.set_active(self._selectedComboIndex)
+               self._bookSelectionButton.set_label(self._booksList[self._selectedComboIndex][2])
+
+               selectedFactoryId = self._booksList[self._selectedComboIndex][0]
+               selectedBookId = self._booksList[self._selectedComboIndex][1]
+               self.open_addressbook(selectedFactoryId, selectedBookId)
 
        def disable(self):
                self._contactsview.disconnect(self._onContactsviewRowActivatedId)
 
        def disable(self):
                self._contactsview.disconnect(self._onContactsviewRowActivatedId)
-               self._booksSelectionBox.disconnect(self._onAddressbookComboChangedId)
+               self._bookSelectionButton.disconnect(self._onAddressbookButtonChangedId)
 
                self.clear()
 
 
                self.clear()
 
-               self._booksSelectionBox.clear()
-               self._booksSelectionBox.set_model(None)
+               self._bookSelectionButton.set_label("")
                self._contactsview.set_model(None)
                self._contactsview.remove_column(self._contactColumn)
 
                self._contactsview.set_model(None)
                self._contactsview.remove_column(self._contactColumn)
 
@@ -1336,15 +1334,23 @@ class ContactsView(object):
                        self._errorDisplay.push_exception_with_lock()
                return False
 
                        self._errorDisplay.push_exception_with_lock()
                return False
 
-       def _on_addressbook_combo_changed(self, *args, **kwds):
+       def _on_addressbook_button_changed(self, *args, **kwds):
                try:
                try:
-                       itr = self._booksSelectionBox.get_active_iter()
-                       if itr is None:
+                       try:
+                               newSelectedComboIndex = hildonize.touch_selector(
+                                       self._window,
+                                       "Addressbook",
+                                       (("%s" % m[2]) for m in self._booksList),
+                                       self._selectedComboIndex,
+                               )
+                       except RuntimeError:
                                return
                                return
-                       self._selectedComboIndex = self._booksSelectionBox.get_active()
-                       selectedFactoryId = self._booksList.get_value(itr, 0)
-                       selectedBookId = self._booksList.get_value(itr, 1)
+
+                       selectedFactoryId = self._booksList[newSelectedComboIndex][0]
+                       selectedBookId = self._booksList[newSelectedComboIndex][1]
                        self.open_addressbook(selectedFactoryId, selectedBookId)
                        self.open_addressbook(selectedFactoryId, selectedBookId)
+                       self._selectedComboIndex = newSelectedComboIndex
+                       self._bookSelectionButton.set_label(self._booksList[self._selectedComboIndex][2])
                except Exception, e:
                        self._errorDisplay.push_exception()
 
                except Exception, e:
                        self._errorDisplay.push_exception()
 
index 79cef5b..f467998 100644 (file)
@@ -402,6 +402,8 @@ def _null_touch_selector(parent, title, items, defaultIndex = -1):
        )
        dialog.set_default_response(gtk.RESPONSE_CANCEL)
        dialog.get_child().add(scrolledWin)
        )
        dialog.set_default_response(gtk.RESPONSE_CANCEL)
        dialog.get_child().add(scrolledWin)
+       parentSize = parent.get_size()
+       dialog.resize(parentSize[0], max(parentSize[1]-100, 100))
        treeView.connect("row-activated", _on_null_touch_selector_activated, dialog)
 
        try:
        treeView.connect("row-activated", _on_null_touch_selector_activated, dialog)
 
        try:
index 09315aa..ce6a6cd 100644 (file)
@@ -177,13 +177,13 @@ class MessagesView(object):
 class ContactsView(object):
 
        def __init__(self, widgetTree):
 class ContactsView(object):
 
        def __init__(self, widgetTree):
-               self._booksSelectionBox = widgetTree.get_widget("addressbook_combo")
+               self._bookSelectionButton = widgetTree.get_widget("addressbookSelectButton")
 
        def enable(self):
 
        def enable(self):
-               self._booksSelectionBox.set_sensitive(False)
+               self._bookSelectionButton.set_sensitive(False)
 
        def disable(self):
 
        def disable(self):
-               self._booksSelectionBox.set_sensitive(True)
+               self._bookSelectionButton.set_sensitive(True)
 
        def update(self, force = False):
                return False
 
        def update(self, force = False):
                return False