import evolution
from ctypes import *
from pygobject import *
+from org.maemo.hermes.gui.searchablelist import SearchableList
-class ContactView(hildon.PannableArea):
+class ContactView(SearchableList):
"""Widget which shows a list of contacts in a pannable area.
Copyright (c) Andrew Flegg <andrew@bleb.org> 2009.
def __init__(self, contacts):
"""Constructor. Passed a list of Contacts."""
- hildon.PannableArea.__init__(self)
+ SearchableList.__init__(self, 1)
self.contacts = contacts
columns = [gtk.gdk.Pixbuf, # 0. Photo
# -- Work out which services need to be shown...
#
- icons = {}
- services = set([])
+ self._icons = {}
+ self._services = set([])
for contact in self.contacts:
- services |= contact.get_mappings()
+ self._services |= contact.get_mappings()
- for service in sorted(services):
+ for service in sorted(self._services):
columns.append(gtk.gdk.Pixbuf)
try:
- icons[service] = gtk.gdk.pixbuf_new_from_file('/opt/hermes/share/account-%s.png' % (service))
+ self._icons[service] = gtk.gdk.pixbuf_new_from_file('/opt/hermes/share/account-%s.png' % (service))
except glib.GError, e:
- icons[service] = None
+ self._icons[service] = None
columns.append(gobject.TYPE_PYOBJECT)
self.treestore = gtk.ListStore(*tuple(columns))
pixbuf = pixbuf.subpixbuf(0, 0, size, size).scale_simple(48, 48, gtk.gdk.INTERP_BILINEAR)
row = [pixbuf, contact.get_name(), ]
- for service in services:
- row.append(service in contact.get_mappings() and icons[service] or None)
+ for service in self._services:
+ row.append(service in contact.get_mappings() and self._icons[service] or None)
row.append(contact)
self.treestore.append(row)
self.treeview.append_column(tvcolumn)
i = 2
- for service in services:
+ for service in self._services:
self.treeview.append_column(gtk.TreeViewColumn('Service', gtk.CellRendererPixbuf(), pixbuf = i))
- i = i + 1
+ i += 1
self.treeview.connect('row-activated', self._activated)
self.add(self.treeview)
- self.set_size_request_policy(hildon.SIZE_REQUEST_CHILDREN)
+
+ # -----------------------------------------------------------------------
+ def add_mapping(self, service_id):
+ """Used to emit the `contact-activated' signal once a row has been
+ selected."""
+
+ if self._selected_iter:
+ i = 2
+ for service in self._services:
+ if service == service_id:
+ self.treeview.get_model().set_value(self._selected_iter, i, self._icons[service])
+ i += 1
+
# -----------------------------------------------------------------------
def _activated(self, treeview, path, column):
"""Used to emit the `contact-activated' signal once a row has been
selected."""
- iter = treeview.get_model().get_iter(path)
- contact = treeview.get_model().get_value(iter, self._contact_index)
+ self._selected_iter = treeview.get_model().get_iter(path)
+ contact = treeview.get_model().get_value(self._selected_iter, self._contact_index)
self.emit('contact-activated', contact)
_contact_activated = gobject.signal_new('contact-activated', ContactView, gobject.SIGNAL_ACTION, gobject.TYPE_NONE, [gobject.TYPE_PYOBJECT])
-
-