#!/usr/bin/python
-# GC Dialer - 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
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"""
+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
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-"""
Evolution Contact Support
+
+@bug 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
"""
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
+ return
self._book = evolution.ebook.open_addressbook(self._bookId)
-
+
@classmethod
def is_supported(cls):
return evolution is not None
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
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()]
if isinstance(phoneNumber, str):
yield phoneType, phoneNumber
-def print_addressbooks():
+
+def print_evobooks():
"""
Included here for debugging.