Advertisement
Guest User

Anderson Lizardo

a guest
Apr 12th, 2010
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.82 KB | None | 0 0
  1. import sys
  2.  
  3. if len(sys.argv) != 2:
  4.     print >>sys.stderr, "Usage: %s <phone_number>" % sys.argv[0]
  5.     sys.exit(1)
  6.  
  7. phone_number = sys.argv[1]
  8.  
  9. import osso
  10.  
  11. osso_ctx = osso.Context("test_abook", "0.1")
  12.  
  13. import ctypes
  14. # be sure to import gtk before calling osso_abook_init()
  15. import gtk
  16.  
  17. osso_abook = ctypes.CDLL('libosso-abook-1.0.so.0')
  18. argv_type = ctypes.c_char_p * len(sys.argv)
  19. argv = argv_type(*sys.argv)
  20. argc = ctypes.c_int(len(sys.argv))
  21. osso_abook.osso_abook_init(ctypes.byref(argc), ctypes.byref(argv), hash(osso_ctx))
  22.  
  23. glib = ctypes.CDLL('libglib-2.0.so.0')
  24. def glist(addr):
  25.     class _GList(ctypes.Structure):
  26.         _fields_ = [('data', ctypes.c_void_p),
  27.                     ('next', ctypes.c_void_p)]
  28.     while True:
  29.         l = _GList.from_address(addr)
  30.         yield l.data
  31.         l = l.next
  32.         if not l:
  33.             break
  34.  
  35. def aggregator_ready_cb(aggregator, error, user_data):
  36.     contacts = osso_abook.osso_abook_aggregator_find_contacts_for_phone_number(aggregator, phone_number, 1)
  37.     if contacts:
  38.         print "Contacts with phone number \"%s\":\n" % phone_number
  39.         for i in glist(contacts):
  40.             contact_get_display_name = osso_abook.osso_abook_contact_get_display_name
  41.             contact_get_display_name.restype = ctypes.c_char_p
  42.             print "%s\n" % contact_get_display_name(i)
  43.         glib.g_list_free(contacts)
  44.     else:
  45.         print "No contacts found with phone number %s.\n" % phone_number
  46.  
  47.     gtk.main_quit()
  48.  
  49. aggregator = osso_abook.osso_abook_aggregator_get_default(0)
  50. wait_cb_type = ctypes.CFUNCTYPE(None, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p)
  51. # Keep prototype object reference so it is not destroyed
  52. cb_proto = wait_cb_type(aggregator_ready_cb)
  53. osso_abook.osso_abook_waitable_call_when_ready(aggregator, cb_proto, 0, 0)
  54.  
  55. gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement