+typedef struct _OpenAddressbookSyncInfo {
+ gboolean retval;
+ GMainLoop *mainloop;
+} OpenAddressbookSyncInfo;
+
+static void
+get_book_view_sync_cb (EBook *book, EBookStatus status, EBookView *bookview, gpointer data)
+{
+ OpenAddressbookSyncInfo *info = (OpenAddressbookSyncInfo *) data;
+
+ if (status != E_BOOK_ERROR_OK) {
+ g_object_unref (book);
+ book = NULL;
+ info->retval = FALSE;
+ g_main_loop_quit (info->mainloop);
+ return;
+ }
+ book_view = bookview;
+
+ if (contact_model)
+#if MODEST_ABOOK_API < 4
+ osso_abook_tree_model_set_book_view (OSSO_ABOOK_TREE_MODEL (contact_model),
+ book_view);
+#else /* MODEST_ABOOK_API < 4 */
+ osso_abook_list_store_set_book_view (OSSO_ABOOK_LIST_STORE (contact_model),
+ book_view);
+#endif /* MODEST_ABOOK_API < 4 */
+
+ e_book_view_start (book_view);
+ info->retval = TRUE;
+ g_main_loop_quit (info->mainloop);
+}
+
+static void
+book_open_sync_cb (EBook *view, EBookStatus status, gpointer data)
+{
+ EBookQuery *query = NULL;
+ OpenAddressbookSyncInfo *info = (OpenAddressbookSyncInfo *) data;
+
+ if (status != E_BOOK_ERROR_OK) {
+ g_object_unref (book);
+ book = NULL;
+ info->retval = FALSE;
+ g_main_loop_quit (info->mainloop);
+ return;
+ }
+ query = e_book_query_any_field_contains ("");
+ e_book_async_get_book_view (book, query, NULL, -1, get_book_view_sync_cb, info);
+ e_book_query_unref (query);
+}
+