class DummyAddressBook(object):
+ """
+ Minimal example of both an addressbook factory and an addressbook
+ """
def get_addressbooks(self):
"""
def open_addressbook(self, bookId):
return self
- def factory_name(self):
+ @staticmethod
+ def factory_short_name():
+ return ""
+
+ @staticmethod
+ def factory_name():
return ""
def get_contacts(self):
return []
-class SettingsDialog(object):
-
- def __init__(self, widgetTree, gcDialer):
- self._gcDialer = gcDialer
- self._widgetTree = widgetTree
- self._dialog = self._widgetTree.get_widget("settings_dialog")
-
- self._applyButton = self._widgetTree.get_widget("apply_settings")
- self._applyButton.connect("clicked", self.custom_button_response(gtk.RESPONSE_OK))
-
- self._cancelButton = self._widgetTree.get_widget("cancel_settings")
- self._cancelButton.connect("clicked", self.custom_button_response(gtk.RESPONSE_CANCEL))
-
- self._booksList = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
- for (factoryId, bookId), (factoryName, bookName) in self._gcDialer.get_addressbooks():
- row = (str(factoryId), bookId, factoryName, bookName)
- self._booksList.append(row)
-
- self._booksView = self._widgetTree.get_widget("books_view")
- self._booksView.set_model(self._booksList)
-
- # Add the column to the treeview
- column = gtk.TreeViewColumn("Addressbook")
-
- textrenderer = gtk.CellRendererText()
- column.pack_start(textrenderer, expand=False)
- column.add_attribute(textrenderer, 'text', 2)
-
- textrenderer = gtk.CellRendererText()
- column.pack_start(textrenderer, expand=True)
- column.add_attribute(textrenderer, 'text', 3)
-
- column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
- column.set_sort_column_id(2)
- column.set_visible(True)
- self._booksView.append_column(column)
-
- self._booksViewSelection = self._booksView.get_selection()
- self._booksViewSelection.set_mode(gtk.SELECTION_SINGLE)
- self.reset()
-
- def reset(self):
- pass
-
- def custom_button_response(self, response):
-
- def button_handler(*args, **kwds):
- self._dialog.response(response)
-
- return button_handler
-
- def run(self):
- userResponse = self._dialog.run()
-
- if userResponse == gtk.RESPONSE_OK:
- model, itr = self._booksViewSelection.get_selected()
- if itr:
- factoryId = int(self._booksList.get_value(itr, 0))
- bookId = self._booksList.get_value(itr, 1)
- self._gcDialer.open_addressbook(factoryId, bookId)
- self._booksViewSelection.unselect_all()
- else:
- self.reset()
-
- self._dialog.hide()
-
-
class PhoneTypeSelector(object):
def __init__(self, widgetTree, gcBackend):
self._recentmodel = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
self._recentviewselection = None
- self._gcContactText = "GC"
- try:
- self._gcContactIcon = gtk.gdk.pixbuf_new_from_file_at_size('gc_contact.png', 16, 16)
- except gobject.GError:
- self._gcContactIcon = None
self._contactstime = 0.0
- if self._gcContactIcon is not None:
- self._contactsmodel = gtk.ListStore(
- gtk.gdk.Pixbuf,
- gobject.TYPE_STRING,
- gobject.TYPE_STRING,
- gobject.TYPE_STRING,
- gobject.TYPE_STRING
- )
- else:
- self._contactsmodel = gtk.ListStore(
- gobject.TYPE_STRING,
- gobject.TYPE_STRING,
- gobject.TYPE_STRING,
- gobject.TYPE_STRING,
- gobject.TYPE_STRING
- )
+ self._contactsmodel = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
self._contactsviewselection = None
for path in Dialpad._glade_files:
self._widgetTree.get_widget("usernameentry").set_property('hildon-input-mode', 7)
self._widgetTree.get_widget("passwordentry").set_property('hildon-input-mode', 7|(1 << 29))
- gtkMenu = self._widgetTree.get_widget("menubar1")
+ gtkMenu = self._widgetTree.get_widget("dialpad_menubar")
menu = gtk.Menu()
for child in gtkMenu.get_children():
child.reparent(menu)
"on_dialpad_quit": self._on_close,
"on_paste": self._on_paste,
"on_clear_number": self._on_clear_number,
- "on_settings": self._on_settings,
"on_clearcookies_clicked": self._on_clearcookies_clicked,
"on_notebook_switch_page": self._on_notebook_switch_page,
}
self._widgetTree.signal_autoconnect(callbackMapping)
self._widgetTree.get_widget("callbackcombo").get_child().connect("changed", self._on_callbackentry_changed)
+ self._widgetTree.get_widget("addressbook_combo").get_child().connect("changed", self._on_addressbook_entry_changed)
if self._window:
self._window.connect("destroy", gtk.main_quit)
self._addressBook = None
self.open_addressbook(*self.get_addressbooks().next()[0][0:2])
+ self._booksList = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
+ for (factoryId, bookId), (factoryName, bookName) in self.get_addressbooks():
+ if factoryName and bookName:
+ entryName = "%s: %s" % (factoryName, bookName)
+ elif factoryName:
+ entryName = factoryName
+ elif bookName:
+ entryName = bookName
+ else:
+ entryName = "Bad name (%d)" % factoryId
+ row = (str(factoryId), bookId, entryName)
+ self._booksList.append(row)
+
+ combobox = self._widgetTree.get_widget("addressbook_combo")
+ combobox.set_model(self._booksList)
+ combobox.set_text_column(2)
+ combobox.set_active(0)
+
self._phoneTypeSelector = PhoneTypeSelector(self._widgetTree, self._gcBackend)
- self._settingsDialog = SettingsDialog(self._widgetTree, self)
if not self._gcBackend.is_authed():
self.attempt_login(2)
# Add the column to the treeview
column = gtk.TreeViewColumn("Contact")
- if self._gcContactIcon is not None:
- iconrenderer = gtk.CellRendererPixbuf()
- column.pack_start(iconrenderer, expand=False)
- column.add_attribute(iconrenderer, 'pixbuf', 0)
- else:
- warnings.warn("Contact icon unavailable", UserWarning, 1)
- textrenderer = gtk.CellRendererText()
- column.pack_start(textrenderer, expand=False)
- column.add_attribute(textrenderer, 'text', 0)
-
textrenderer = gtk.CellRendererText()
column.pack_start(textrenderer, expand=True)
column.add_attribute(textrenderer, 'text', 1)
return False
def _idly_setup_callback_combo(self):
- combobox = self._widgetTree.get_widget("callbackcombo")
self.callbacklist = gtk.ListStore(gobject.TYPE_STRING)
+ for number, description in self._gcBackend.get_callback_numbers().iteritems():
+ self.callbacklist.append((make_pretty(number),))
+
+ combobox = self._widgetTree.get_widget("callbackcombo")
combobox.set_model(self.callbacklist)
combobox.set_text_column(0)
- for number, description in self._gcBackend.get_callback_numbers().iteritems():
- self.callbacklist.append([make_pretty(number)])
combobox.get_child().set_text(make_pretty(self._gcBackend.get_callback_number()))
self._callbackNeedsSetup = False
contactsview.freeze_child_notify()
contactsview.set_model(None)
- # get gc icon
- if self._gcContactIcon is not None:
- contactType = (self._gcContactIcon,)
- else:
- contactType = (self._gcContactText,)
+ contactType = (self._addressBook.factory_short_name(),)
for contactId, contactName in self._addressBook.get_contacts():
self._contactsmodel.append(contactType + (contactName, "", contactId) + ("",))
yield
Displays current account number
"""
accountnumber = self._gcBackend.get_account_number()
- self._widgetTree.get_widget("gcnumberlabel").set_label("<span size='23000' weight='bold'>%s</span>" % (accountnumber))
+ self._widgetTree.get_widget("gcnumber_display").set_label("<span size='23000' weight='bold'>%s</span>" % (accountnumber))
def _on_close(self, *args):
gtk.main_quit()
else:
self._isFullScreen = False
- def _on_settings(self, *args, **kwds):
- self._settingsDialog.run()
-
def _on_key_press(self, widget, event, *args):
"""
@note Hildon specific
self._notebook.set_current_page(0)
self._recentviewselection.unselect_all()
+ def _on_addressbook_entry_changed(self, *args, **kwds):
+ combobox = self._widgetTree.get_widget("addressbook_combo")
+ itr = combobox.get_active_iter()
+
+ factoryId = int(self._booksList.get_value(itr, 0))
+ bookId = self._booksList.get_value(itr, 1)
+ self.open_addressbook(factoryId, bookId)
+
def _on_contactsview_row_activated(self, treeview, path, view_column):
model, itr = self._contactsviewselection.get_selected()
if not itr: