X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fevo_backend.py;h=4487b660c09b1a5fa12cc90c87c4377bb8a0fca0;hb=707902d017f8e437983c23f876d4c803f7c24737;hp=85452ae52178c5be82520fd2cd91f71bfc41f067;hpb=97958f9f40a578befa452f4d1769d752693a72e6;p=gc-dialer diff --git a/src/evo_backend.py b/src/evo_backend.py index 85452ae..4487b66 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 @@ -39,9 +39,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 @@ -53,16 +63,20 @@ class EvolutionAddressBook(object): if not self.is_supported(): return + if len(evolution.ebook.list_addressbooks()) == 0 and evolution.ebook.open_addressbook('default') is not None: + # It appears that Maemo's e-d-s does not always list the default addressbook, so we're faking it being listed + yield self, "default", "Maemo" + 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 @@ -77,13 +91,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()] @@ -93,7 +107,8 @@ class EvolutionAddressBook(object): if isinstance(phoneNumber, str): yield phoneType, phoneNumber -def print_addressbooks(): + +def print_evobooks(): """ Included here for debugging.