X-Git-Url: http://git.maemo.org/git/?p=gc-dialer;a=blobdiff_plain;f=src%2Fevo_backend.py;h=0c6464516850b2378bf2706ad69b83b94f491232;hp=c094c2ec279a7f5e536e1b8e745eb27c73cc3f67;hb=3ca7385bd450cee5f6226de8456ff7e538c01127;hpb=e5ff5aa11117a9bbdbcd527d036d459f88315aa9 diff --git a/src/evo_backend.py b/src/evo_backend.py index c094c2e..0c64645 100644 --- a/src/evo_backend.py +++ b/src/evo_backend.py @@ -1,6 +1,6 @@ #!/usr/bin/python -# GC Dialer - Front end for Google's Grand Central service. +# DialCentral - Front end for Google's Grand Central service. # Copyright (C) 2008 Eric Warnke ericew AT gmail DOT com # # This library is free software; you can redistribute it and/or @@ -20,6 +20,11 @@ """ Evolution Contact Support + +It seems the evolution contact API used is specific to the desktop. evolution.ebook combined with abook is what is needed for Maemo. + http://maemo.org/maemo_release_documentation/maemo4.1.x/node8.html#SECTION00870000000000000000 + https://garage.maemo.org/svn/pymaemo/packages/python-abook/trunk/tests/ especially contact_get_iter amd filter_model + http://pymaemo.garage.maemo.org/documentation/api/abook/index.html """ @@ -39,9 +44,19 @@ class EvolutionAddressBook(object): return self._phoneTypes = None - self._bookId = bookId if bookId is not None else self.get_addressbooks().next()[1] + if bookId is not None: + self._bookId = bookId + else: + try: + self._bookId = [ + bookData[1] + for bookData in self.get_addressbooks() + ][0] + except IndexError: + global evolution + evolution = None self._book = evolution.ebook.open_addressbook(self._bookId) - + @classmethod def is_supported(cls): return evolution is not None @@ -59,14 +74,14 @@ class EvolutionAddressBook(object): for bookId in evolution.ebook.list_addressbooks(): yield self, bookId[1], bookId[0] - + def open_addressbook(self, bookId): self._bookId = bookId self._book = evolution.ebook.open_addressbook(self._bookId) return self @staticmethod - def factory_short_name(): + def contact_source_short_name(contactId): return "Evo" @staticmethod @@ -81,13 +96,13 @@ class EvolutionAddressBook(object): return for contact in self._book.get_all_contacts(): - yield contact.get_uid(), contact.props.full_name - + yield str(contact.get_uid()), contact.props.full_name + def get_contact_details(self, contactId): """ @returns Iterable of (Phone Type, Phone Number) """ - contact = self._book.get_contact(contactId) + contact = self._book.get_contact(int(contactId)) if self._phoneTypes is None and contact is not None: self._phoneTypes = [pt for pt in dir(contact.props) if "phone" in pt.lower()] @@ -97,7 +112,8 @@ class EvolutionAddressBook(object): if isinstance(phoneNumber, str): yield phoneType, phoneNumber -def print_addressbooks(): + +def print_evobooks(): """ Included here for debugging.