gint main (gint argc, gchar **argv) { EBookClient *book_client; const gchar *query_string; EBookQuery *query; gchar *sexp; GSList *c, *contacts; GError *error = NULL; main_initialize (); if (argc != 2) { query_string = "contains \"full_name\" \"a\""; printf ("usage: test-search <query>\n"); printf (" using default query \"%s\"\n", query_string); } else { query_string = argv[1]; } query = e_book_query_from_string (query_string); if (!query) { fprintf (stderr, " * Failed to parse query string '%s'\n", query_string); return 1; } sexp = e_book_query_to_string (query); e_book_query_unref (query); book_client = open_system_book (FALSE); if (!book_client) { g_free (sexp); return 1; } if (!e_book_client_get_contacts_sync (book_client, sexp, &contacts, NULL, &error)) { report_error ("get contacts sync", &error); g_free (sexp); g_object_unref (book_client); return 1; } for (c = contacts; c; c = c->next) { EContact *contact = E_CONTACT (c->data); gchar *vcard = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30); printf ("%s\n\n", vcard); g_free (vcard); } g_slist_foreach (contacts, (GFunc) g_object_unref, NULL); g_slist_free (contacts); g_free (sexp); g_object_unref (book_client); return 0; }
static void test_get_view_sync (ETestServerFixture *fixture, gconstpointer user_data) { EBookClient *book_client; EBookQuery *query; EBookClientView *view; gchar *sexp; GError *error = NULL; UIDOnlyClosure *closure = (UIDOnlyClosure *) user_data; uids_only = closure->uids_only; book_client = E_TEST_SERVER_UTILS_SERVICE (fixture, EBookClient); setup_book (book_client); query = e_book_query_any_field_contains (""); sexp = e_book_query_to_string (query); e_book_query_unref (query); if (!e_book_client_get_view_sync (book_client, sexp, &view, NULL, &error)) { g_error ("get book view sync: %s", error->message); g_free (sexp); g_object_unref (book_client); } g_free (sexp); setup_and_start_view (view, fixture->loop); g_main_loop_run (fixture->loop); }
static void test_photo_is_uri (ETestServerFixture *fixture, gconstpointer user_data) { EBookClient *book_client; EBookClientView *view; EBookQuery *query; GError *error = NULL; gchar *sexp; book_client = E_TEST_SERVER_UTILS_SERVICE (fixture, EBookClient); add_contact_inline (book_client); add_contact_uri (book_client); query = e_book_query_any_field_contains (""); sexp = e_book_query_to_string (query); e_book_query_unref (query); if (!e_book_client_get_view_sync (book_client, sexp, &view, NULL, &error)) g_error ("get book view sync: %s", error->message); g_free (sexp); setup_and_start_view (view); loop = fixture->loop; g_main_loop_run (loop); }
static gboolean test_bulk_add_remove (EBookClient *client, const gchar *vcard_str, gint batch_size) { gint i; GSList *contacts = NULL; GSList *added_uids = NULL; GSList *book_uids = NULL; EBookQuery *query = NULL; gchar *sexp = NULL; const GSList *l; query = e_book_query_any_field_contains (""); sexp = e_book_query_to_string (query); e_book_query_unref (query); for (i = 0; i < batch_size; ++i) { EContact *contact = e_contact_new_from_vcard (vcard_str); contacts = g_slist_append (contacts, contact); } g_print (" * Bulk addition of %d contacts...\n", batch_size); /* Bulk addition */ g_return_val_if_fail (e_book_client_add_contacts_sync (client, contacts, &added_uids, NULL, NULL), FALSE); g_return_val_if_fail (added_uids != NULL, FALSE); g_return_val_if_fail (added_uids->data != NULL, FALSE); g_return_val_if_fail (g_slist_length (added_uids) == batch_size, FALSE); /* Make sure the uids are in the address book */ g_return_val_if_fail (e_book_client_get_contacts_uids_sync (client, sexp, &book_uids, NULL, NULL), FALSE); for (l = added_uids; l != NULL; l = l->next) { g_return_val_if_fail (check_string_in_slist (book_uids, (const gchar *) l->data), FALSE); } g_slist_free_full (book_uids, g_free); g_print (" * Bulk removal of %d contacts...\n", batch_size); /* Bulk removal */ g_return_val_if_fail (e_book_client_remove_contacts_sync (client, added_uids, NULL, NULL), FALSE); /* Make sure the uids are no longer in the address book */ book_uids = NULL; g_return_val_if_fail (e_book_client_get_contacts_uids_sync (client, sexp, &book_uids, NULL, NULL), FALSE); for (l = added_uids; l != NULL; l = l->next) { g_return_val_if_fail (!check_string_in_slist (book_uids, (const gchar *) l->data), FALSE); } g_slist_free_full (book_uids, g_free); g_free (sexp); g_slist_free_full (added_uids, g_free); g_slist_free_full (contacts, g_object_unref); return TRUE; }
void e_contact_print (EBookClient *book_client, EBookQuery *query, const GSList *contact_list, GtkPrintOperationAction action) { GtkPrintOperation *operation; EContactPrintContext *ctxt; ctxt = g_new0 (EContactPrintContext, 1); ctxt->action = action; ctxt->contact_list = e_client_util_copy_object_slist (NULL, contact_list); ctxt->style = g_new0 (EContactPrintStyle, 1); ctxt->page_nr = 0; ctxt->pages = 0; operation = e_print_operation_new (); gtk_print_operation_set_n_pages (operation, 1); g_object_set_data_full ( G_OBJECT (operation), "contact-print-ctx", ctxt, g_free); g_signal_connect ( operation, "begin-print", G_CALLBACK (contact_begin_print), ctxt); g_signal_connect ( operation, "draw_page", G_CALLBACK (contact_draw_page), ctxt); g_signal_connect ( operation, "end-print", G_CALLBACK (contact_end_print), ctxt); if (book_client) { gchar *query_str = e_book_query_to_string (query); e_book_client_get_view ( book_client, query_str, NULL, get_view_ready_cb, operation); g_free (query_str); } else { gtk_print_operation_run (operation, action, NULL, NULL); g_object_unref (operation); } }
gint main (gint argc, gchar **argv) { EBookClient *book; EBookClientView *view; EBookQuery *query; GError *error = NULL; gchar *sexp; g_type_init (); setup_book (&book); query = e_book_query_any_field_contains (""); sexp = e_book_query_to_string (query); e_book_query_unref (query); if (!e_book_client_get_view_sync (book, sexp, &view, NULL, &error)) { report_error ("get book view sync", &error); g_free (sexp); g_object_unref (book); return 1; } g_free (sexp); setup_and_start_view (view); loop = g_main_loop_new (NULL, TRUE); g_main_loop_run (loop); if (!e_client_remove_sync (E_CLIENT (book), NULL, &error)) { report_error ("client remove sync", &error); g_object_unref (book); return 1; } g_object_unref (book); return 0; }
static gpointer call_get_view (gpointer user_data) { EBookQuery *query; EBookClient *book_client = user_data; gchar *sexp; g_return_val_if_fail (book_client != NULL, NULL); g_return_val_if_fail (E_IS_BOOK_CLIENT (book_client), NULL); query = e_book_query_any_field_contains (""); sexp = e_book_query_to_string (query); e_book_query_unref (query); e_book_client_get_view (book_client, sexp, NULL, get_view_cb, NULL); g_free (sexp); return NULL; }
static void test_get_view_async (ETestServerFixture *fixture, gconstpointer user_data) { EBookClient *book_client; EBookQuery *query; gchar *sexp; book_client = E_TEST_SERVER_UTILS_SERVICE (fixture, EBookClient); setup_book (book_client); query = e_book_query_any_field_contains (""); sexp = e_book_query_to_string (query); e_book_query_unref (query); e_book_client_get_view (book_client, sexp, NULL, get_view_cb, fixture->loop); g_free (sexp); g_main_loop_run (fixture->loop); }
int main (int argc, char **argv) { int i; gboolean failure = FALSE; for (i = 0; i < G_N_ELEMENTS (queries); i ++) { EBookQuery *query = e_book_query_from_string (queries[i]); char *str; str = e_book_query_to_string (query); if (strcmp (str, queries[i])) { g_warning ("failed on query: %s", queries[i]); failure = TRUE; } } if (!failure) g_message ("all tests passed"); return 0; }
gint main (gint argc, gchar **argv) { EBookClient *book_client; EBookQuery *query; EBookClientView *view; gchar *sexp; GError *error = NULL; main_initialize (); /* * Sync version */ if (!setup_book (&book_client)) return 1; query = e_book_query_any_field_contains (""); sexp = e_book_query_to_string (query); e_book_query_unref (query); if (!e_book_client_get_view_sync (book_client, sexp, &view, NULL, &error)) { report_error ("get book view sync", &error); g_free (sexp); g_object_unref (book_client); return 1; } g_free (sexp); setup_and_start_view (view); start_main_loop (NULL, NULL); if (!e_client_remove_sync (E_CLIENT (book_client), NULL, &error)) { report_error ("client remove sync", &error); g_object_unref (book_client); return 1; } g_object_unref (book_client); /* * Async version uids only */ if (!setup_book (&book_client)) return 1; start_in_idle_with_main_loop (call_get_view, book_client); if (!e_client_remove_sync (E_CLIENT (book_client), NULL, &error)) { report_error ("client remove sync", &error); g_object_unref (book_client); return 1; } g_object_unref (book_client); return get_main_loop_stop_result (); }
static void action_address_book_save_as_cb (GtkAction *action, EBookShellView *book_shell_view) { EShell *shell; EShellView *shell_view; EShellWindow *shell_window; EShellBackend *shell_backend; EBookShellContent *book_shell_content; EAddressbookModel *model; EAddressbookView *view; EActivity *activity; EBookQuery *query; EBookClient *book; GSList *list = NULL; GFile *file; gchar *string; shell_view = E_SHELL_VIEW (book_shell_view); shell_window = e_shell_view_get_shell_window (shell_view); shell_backend = e_shell_view_get_shell_backend (shell_view); shell = e_shell_window_get_shell (shell_window); book_shell_content = book_shell_view->priv->book_shell_content; view = e_book_shell_content_get_current_view (book_shell_content); g_return_if_fail (view != NULL); model = e_addressbook_view_get_model (view); book = e_addressbook_model_get_client (model); query = e_book_query_any_field_contains (""); string = e_book_query_to_string (query); e_book_query_unref (query); e_book_client_get_contacts_sync (book, string, &list, NULL, NULL); g_free (string); if (list == NULL) goto exit; string = eab_suggest_filename (list); file = e_shell_run_save_dialog ( /* Translators: This is a save dialog title */ shell, _("Save as vCard"), string, "*.vcf:text/x-vcard,text/directory", NULL, NULL); g_free (string); if (file == NULL) goto exit; string = eab_contact_list_to_string (list); if (string == NULL) { g_warning ("Could not convert contact list to a string"); g_object_unref (file); goto exit; } /* XXX No callback means errors are discarded. * * There's an EAlert for this which I'm not using * until I figure out a better way to display errors: * * "addressbook:save-error" */ activity = e_file_replace_contents_async ( file, string, strlen (string), NULL, FALSE, G_FILE_CREATE_NONE, (GAsyncReadyCallback) NULL, NULL); e_shell_backend_add_activity (shell_backend, activity); /* Free the string when the activity is finalized. */ g_object_set_data_full ( G_OBJECT (activity), "file-content", string, (GDestroyNotify) g_free); g_object_unref (file); exit: e_client_util_free_object_slist (list); }
static void use_common_book_client (EBookClient *book_client, MatchSearchInfo *info) { EContact *contact = info->contact; EContactName *contact_name; GList *contact_email; gchar *query_parts[MAX_QUERY_PARTS + 1]; gint p = 0; gchar *contact_file_as, *qj; EBookQuery *query = NULL; gint i; if (book_client == NULL) { info->cb (info->contact, NULL, EAB_CONTACT_MATCH_NONE, info->closure); match_search_info_free (info); return; } contact_file_as = e_contact_get (contact, E_CONTACT_FILE_AS); if (contact_file_as) { query_parts[p++] = g_strdup_printf ("(contains \"file_as\" \"%s\")", contact_file_as); g_free (contact_file_as); } if (!e_contact_get (contact, E_CONTACT_IS_LIST)) { contact_name = e_contact_get (contact, E_CONTACT_NAME); if (contact_name) { if (contact_name->given && *contact_name->given) query_parts[p++] = g_strdup_printf ("(contains \"full_name\" \"%s\")", contact_name->given); if (contact_name->additional && *contact_name->additional) query_parts[p++] = g_strdup_printf ("(contains \"full_name\" \"%s\")", contact_name->additional); if (contact_name->family && *contact_name->family) query_parts[p++] = g_strdup_printf ("(contains \"full_name\" \"%s\")", contact_name->family); e_contact_name_free (contact_name); } contact_email = e_contact_get (contact, E_CONTACT_EMAIL); if (contact_email) { GList *iter; for (iter = contact_email; iter && p < MAX_QUERY_PARTS; iter = iter->next) { gchar *addr = g_strdup (iter->data); if (addr && *addr) { gchar *s = addr; while (*s) { if (*s == '@') { *s = '\0'; break; } ++s; } query_parts[p++] = g_strdup_printf ("(beginswith \"email\" \"%s\")", addr); g_free (addr); } } } g_list_foreach (contact_email, (GFunc) g_free, NULL); g_list_free (contact_email); } /* Build up our full query from the parts. */ query_parts[p] = NULL; qj = g_strjoinv (" ", query_parts); for (i = 0; query_parts[i] != NULL; i++) g_free (query_parts[i]); if (p > 1) { gchar *s; s = g_strdup_printf ("(or %s)", qj); query = e_book_query_from_string (s); g_free (s); } else if (p == 1) { query = e_book_query_from_string (qj); } else { query = NULL; } if (query) { gchar *query_str = e_book_query_to_string (query); e_book_client_get_contacts (book_client, query_str, NULL, query_cb, info); g_free (query_str); } else query_cb (G_OBJECT (book_client), NULL, info); g_free (qj); if (query) e_book_query_unref (query); }
static gboolean start_tests (gpointer data) { EwsBookBackendSqliteDB *ebsdb; gboolean populated = FALSE; gchar *vcard_str = NULL, *sexp; EBookQuery *q; GSList *uids = NULL; gboolean store_vcard = FALSE; g_print ("Creating the sqlitedb \n"); op = "create sqlitedb"; ebsdb = ews_book_backend_sqlitedb_new (cache_path, email, folderid, folder_name, store_vcard, &error); if (error) goto exit; add_contacts (ebsdb); if (error) goto exit; g_print ("Getting is_populated \n"); op = "set is_populated"; ews_book_backend_sqlitedb_set_is_populated (ebsdb, folderid, TRUE, &error); if (error) goto exit; g_print ("Setting is_populated \n"); op = "set is_populated"; populated = ews_book_backend_sqlitedb_get_is_populated (ebsdb, folderid, &error); if (error) goto exit; g_print ("Populated: %d \n", populated); g_print ("Setting key value \n"); op = "set key/value"; ews_book_backend_sqlitedb_set_key_value (ebsdb, folderid, "customkey", "stored", &error); if (error) goto exit; g_print ("Get Vcard string \n"); op = "get vcard string"; vcard_str = ews_book_backend_sqlitedb_get_vcard_string (ebsdb, folderid, uid, NULL, NULL, &error); if (error) goto exit; g_print ("VCard: %s \n", vcard_str); g_free (vcard_str); q = e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_CONTAINS, "test"); sexp = e_book_query_to_string (q); search_db (ebsdb, "summary query", sexp); e_book_query_unref (q); g_free (sexp); if (error) goto exit; if (store_vcard) { q = e_book_query_any_field_contains ("word"); sexp = e_book_query_to_string (q); search_db (ebsdb, "full_search query", sexp); e_book_query_unref (q); g_free (sexp); if (error) goto exit; } g_print ("Delete contact \n"); op = "delete contact"; uids = g_slist_append (uids, (gchar *) uid); ews_book_backend_sqlitedb_remove_contacts (ebsdb, folderid, uids, &error); g_slist_free (uids); if (error) goto exit; g_print ("Delete addressbook \n"); op = "delete addressbook"; ews_book_backend_sqlitedb_delete_addressbook (ebsdb, folderid, &error); exit: g_object_unref (ebsdb); quit_tests (); return FALSE; }