Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- if len(sys.argv) != 2:
- print >>sys.stderr, "Usage: %s <phone_number>" % sys.argv[0]
- sys.exit(1)
- phone_number = sys.argv[1]
- import osso
- osso_ctx = osso.Context("test_abook", "0.1")
- import ctypes
- # be sure to import gtk before calling osso_abook_init()
- import gtk
- osso_abook = ctypes.CDLL('libosso-abook-1.0.so.0')
- argv_type = ctypes.c_char_p * len(sys.argv)
- argv = argv_type(*sys.argv)
- argc = ctypes.c_int(len(sys.argv))
- osso_abook.osso_abook_init(ctypes.byref(argc), ctypes.byref(argv), hash(osso_ctx))
- glib = ctypes.CDLL('libglib-2.0.so.0')
- def glist(addr):
- class _GList(ctypes.Structure):
- _fields_ = [('data', ctypes.c_void_p),
- ('next', ctypes.c_void_p)]
- while True:
- l = _GList.from_address(addr)
- yield l.data
- l = l.next
- if not l:
- break
- def aggregator_ready_cb(aggregator, error, user_data):
- contacts = osso_abook.osso_abook_aggregator_find_contacts_for_phone_number(aggregator, phone_number, 1)
- if contacts:
- print "Contacts with phone number \"%s\":\n" % phone_number
- for i in glist(contacts):
- contact_get_display_name = osso_abook.osso_abook_contact_get_display_name
- contact_get_display_name.restype = ctypes.c_char_p
- print "%s\n" % contact_get_display_name(i)
- glib.g_list_free(contacts)
- else:
- print "No contacts found with phone number %s.\n" % phone_number
- gtk.main_quit()
- aggregator = osso_abook.osso_abook_aggregator_get_default(0)
- wait_cb_type = ctypes.CFUNCTYPE(None, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p)
- # Keep prototype object reference so it is not destroyed
- cb_proto = wait_cb_type(aggregator_ready_cb)
- osso_abook.osso_abook_waitable_call_when_ready(aggregator, cb_proto, 0, 0)
- gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement