[evolution-data-server/account-mgmt: 8/28] Adapt libebook to the new ESource API.
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/account-mgmt: 8/28] Adapt libebook to the new ESource API.
- Date: Wed, 2 Mar 2011 03:45:42 +0000 (UTC)
commit a3401d3353e5ada7a14f7561cb9de4a62bd42a39
Author: Matthew Barnes <mbarnes redhat com>
Date: Fri Nov 12 15:46:18 2010 -0500
Adapt libebook to the new ESource API.
addressbook/libebook/e-book.c | 468 ++------------------
addressbook/libebook/e-book.h | 16 -
addressbook/libebook/e-destination.c | 7 +-
addressbook/tests/ebook/ebook-test-utils.c | 228 ++++------
addressbook/tests/ebook/ebook-test-utils.h | 7 -
addressbook/tests/ebook/test-changes.c | 1 -
addressbook/tests/ebook/test-ebook-add-contact.c | 3 -
.../tests/ebook/test-ebook-commit-contact.c | 3 -
addressbook/tests/ebook/test-ebook-get-book-view.c | 6 +-
addressbook/tests/ebook/test-ebook-get-contact.c | 2 -
.../tests/ebook/test-ebook-get-required-fields.c | 2 -
.../ebook/test-ebook-get-static-capabilities.c | 2 -
.../ebook/test-ebook-get-supported-auth-methods.c | 2 -
.../tests/ebook/test-ebook-get-supported-fields.c | 2 -
.../tests/ebook/test-ebook-remove-contact-by-id.c | 1 -
.../tests/ebook/test-ebook-remove-contact.c | 4 +-
.../tests/ebook/test-ebook-remove-contacts.c | 10 +-
addressbook/tests/ebook/test-ebook-remove.c | 1 -
.../tests/ebook/test-ebook-stress-factory--fifo.c | 4 -
.../ebook/test-ebook-stress-factory--serial.c | 1 -
.../ebook/test-ebook-stress-factory--single-book.c | 3 -
addressbook/tests/ebook/test-nonexistent-id.c | 1 +
.../addressbook/libebook/libebook-sections.txt | 6 -
.../addressbook/libebook/tmpl/e-book.sgml | 51 ---
.../addressbook/libebook/tmpl/libebook-unused.sgml | 46 ++
25 files changed, 199 insertions(+), 678 deletions(-)
---
diff --git a/addressbook/libebook/e-book.c b/addressbook/libebook/e-book.c
index 60eaf36..d2dc820 100644
--- a/addressbook/libebook/e-book.c
+++ b/addressbook/libebook/e-book.c
@@ -35,6 +35,8 @@
#include <string.h>
#include <glib-object.h>
#include <glib/gi18n-lib.h>
+#include <gconf/gconf-client.h>
+#include <libedataserver/e-source-registry.h>
#include <libedataserver/e-data-server-util.h>
#include "e-book.h"
#include "e-error.h"
@@ -71,7 +73,6 @@ struct _EBookPrivate {
guint gone_signal_id;
ESource *source;
- gchar *uri;
gboolean loaded;
gboolean writable;
gboolean connected;
@@ -184,9 +185,6 @@ e_book_finalize (GObject *object)
{
EBook *book = E_BOOK (object);
- if (book->priv->uri)
- g_free (book->priv->uri);
-
if (book->priv->cap)
g_free (book->priv->cap);
@@ -261,7 +259,6 @@ e_book_init (EBook *book)
priv->gdbus_book = NULL;
priv->source = NULL;
- priv->uri = NULL;
priv->loaded = FALSE;
priv->writable = FALSE;
priv->connected = FALSE;
@@ -2590,142 +2587,6 @@ e_book_open_async (EBook *book,
}
/**
- * e_book_remove:
- * @book: an #EBook
- * @error: a #GError to set on failure
- *
- * Removes the backing data for this #EBook. For example, with the file backend this
- * deletes the database file. You cannot get it back!
- *
- * Returns: %TRUE on success, %FALSE on failure.
- */
-gboolean
-e_book_remove (EBook *book,
- GError **error)
-{
- GError *err = NULL;
-
- e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
-
- e_gdbus_book_call_remove_sync (book->priv->gdbus_book, NULL, &err);
-
- return unwrap_gerror (err, error);
-}
-
-static void
-remove_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
-{
- GError *err = NULL, *error = NULL;
- AsyncData *data = user_data;
- EBookAsyncCallback excb = data->excallback;
- #ifndef E_BOOK_DISABLE_DEPRECATED
- EBookCallback cb = data->callback;
- #endif
-
- e_gdbus_book_call_remove_finish (E_GDBUS_BOOK (gdbus_book), res, &error);
-
- unwrap_gerror (error, &err);
-
- #ifndef E_BOOK_DISABLE_DEPRECATED
- if (cb)
- cb (data->book, err ? err->code : E_BOOK_ERROR_OK, data->closure);
- #endif
- if (excb)
- excb (data->book, err, data->closure);
-
- if (err)
- g_error_free (err);
-
- g_object_unref (data->book);
- g_slice_free (AsyncData, data);
-}
-
-#ifndef E_BOOK_DISABLE_DEPRECATED
-/**
- * e_book_async_remove:
- * @book: an #EBook
- * @cb: a function to call when the operation finishes
- * @closure: data to pass to callback function
- *
- * Remove the backing data for this #EBook. For example, with the file backend this
- * deletes the database file. You cannot get it back!
- *
- * Returns: %FALSE if successful, %TRUE otherwise.
- *
- * Deprecated: 3.0: Use e_book_remove_async() instead.
- **/
-guint
-e_book_async_remove (EBook *book,
- EBookCallback cb,
- gpointer closure)
-{
- AsyncData *data;
-
- e_return_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
-
- data = g_slice_new0 (AsyncData);
- data->book = g_object_ref (book);
- data->callback = cb;
- data->closure = closure;
-
- e_gdbus_book_call_remove (book->priv->gdbus_book, NULL, remove_reply, data);
-
- return 0;
-}
-#endif
-
-/**
- * e_book_remove_async:
- * @book: an #EBook
- * @cb: a function to call when the operation finishes
- * @closure: data to pass to callback function
- *
- * Remove the backing data for this #EBook. For example, with the file backend this
- * deletes the database file. You cannot get it back!
- *
- * Returns: %FALSE if successful, %TRUE otherwise.
- *
- * Since: 2.32
- **/
-gboolean
-e_book_remove_async (EBook *book,
- EBookAsyncCallback cb,
- gpointer closure)
-{
- AsyncData *data;
-
- e_return_ex_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
-
- data = g_slice_new0 (AsyncData);
- data->book = g_object_ref (book);
- data->excallback = cb;
- data->closure = closure;
-
- e_gdbus_book_call_remove (book->priv->gdbus_book, NULL, remove_reply, data);
-
- return TRUE;
-}
-
-/**
- * e_book_get_uri:
- * @book: an #EBook
- *
- * Get the URI that this book has loaded. This string should not be freed.
- *
- * Returns: The URI.
- */
-const gchar *
-e_book_get_uri (EBook *book)
-{
- g_return_val_if_fail (E_IS_BOOK (book), NULL);
-
- return book->priv->uri;
-}
-
-/**
* e_book_get_source:
* @book: an #EBook
*
@@ -3034,110 +2895,48 @@ e_book_set_default_addressbook (EBook *book, GError **error)
/**
* e_book_set_default_source:
- * @source: An #ESource pointer
- * @error: A #GError pointer
+ * @source: an #ESource
+ * @error: return location for a #GError, or %NULL
*
- * sets @source as the "default" addressbook. This is the source that
- * will be loaded in the e_book_get_default_addressbook call.
+ * Sets @source as the default address book.
*
- * Returns: %TRUE if the setting was stored in libebook's ESourceList, otherwise %FALSE.
- */
-gboolean
-e_book_set_default_source (ESource *source, GError **error)
-{
- ESourceList *sources;
- const gchar *uid;
- GError *err = NULL;
- GSList *g;
-
- e_return_error_if_fail (source && E_IS_SOURCE (source), E_BOOK_ERROR_INVALID_ARG);
-
- uid = e_source_peek_uid (source);
-
- if (!e_book_get_addressbooks (&sources, &err)) {
- if (error)
- g_propagate_error (error, err);
- return FALSE;
- }
-
- /* make sure the source is actually in the ESourceList. if
- it's not we don't bother adding it, just return an error */
- source = e_source_list_peek_source_by_uid (sources, uid);
- if (!source) {
- g_set_error (error, E_BOOK_ERROR, E_BOOK_ERROR_NO_SUCH_SOURCE,
- _("%s: there was no source for UID '%s' stored in GConf."), "e_book_set_default_source", uid);
- g_object_unref (sources);
- return FALSE;
- }
-
- /* loop over all the sources clearing out any "default"
- properties we find */
- for (g = e_source_list_peek_groups (sources); g; g = g->next) {
- GSList *s;
- for (s = e_source_group_peek_sources (E_SOURCE_GROUP (g->data));
- s; s = s->next) {
- e_source_set_property (E_SOURCE (s->data), "default", NULL);
- }
- }
-
- /* set the "default" property on the source */
- e_source_set_property (source, "default", "true");
-
- if (!e_source_list_sync (sources, &err)) {
- if (error)
- g_propagate_error (error, err);
-
- g_object_unref (sources);
-
- return FALSE;
- }
-
- g_object_unref (sources);
-
- return TRUE;
-}
-
-/**
- * e_book_get_addressbooks:
- * @addressbook_sources: (out): A pointer to a #ESourceList* to set
- * @error: A pointer to a GError* to set on error
- *
- * Populate *addressbook_sources with the list of all sources which have been
- * added to Evolution.
+ * The @error parameter is only for backward-compatibility.
+ * This function never fails, so you can safely pass %NULL.
*
- * Returns: %TRUE if @addressbook_sources was set, otherwise %FALSE.
+ * Returns: %TRUE always
*/
gboolean
-e_book_get_addressbooks (ESourceList **addressbook_sources, GError **error)
+e_book_set_default_source (ESource *source,
+ GError **error)
{
- GConfClient *gconf;
+ ESourceRegistry *registry;
- e_return_error_if_fail (addressbook_sources, E_BOOK_ERROR_INVALID_ARG);
+ g_return_val_if_fail (E_IS_SOURCE (source), FALSE);
- gconf = gconf_client_get_default ();
- *addressbook_sources = e_source_list_new_for_gconf (gconf, "/apps/evolution/addressbook/sources");
- g_object_unref (gconf);
+ registry = e_source_registry_get_default ();
+ e_source_registry_set_default_address_book (registry, source);
return TRUE;
}
/**
* e_book_new:
- * @source: An #ESource pointer
- * @error: A #GError pointer
+ * @source: an #ESource
+ * @error: return location for a #GError, or %NULL
*
- * Creates a new #EBook corresponding to the given source. There are
- * only two operations that are valid on this book at this point:
- * e_book_open(), and e_book_remove().
+ * Creates a new #EBook corresponding to the given @source.
+ * You must call e_book_open() before the #EBook can be used.
*
* Returns: a new but unopened #EBook.
*/
EBook*
-e_book_new (ESource *source, GError **error)
+e_book_new (ESource *source,
+ GError **error)
{
GError *err = NULL;
EBook *book;
- gchar *path = NULL, *xml, *gdbus_xml = NULL;
+ gchar *path;
+ const gchar *uid;
GDBusConnection *connection;
e_return_error_if_fail (E_IS_SOURCE (source), E_BOOK_ERROR_INVALID_ARG);
@@ -3153,14 +2952,12 @@ e_book_new (ESource *source, GError **error)
book = g_object_new (E_TYPE_BOOK, NULL);
book->priv->source = g_object_ref (source);
- book->priv->uri = e_source_get_uri (source);
- xml = e_source_to_standalone_xml (source);
+ uid = e_source_get_uid (source);
- if (!e_gdbus_book_factory_call_get_book_sync (book_factory_proxy, e_util_ensure_gdbus_string (xml, &gdbus_xml), &path, NULL, &err)) {
+ if (!e_gdbus_book_factory_call_get_book_sync (
+ book_factory_proxy, uid, &path, NULL, &err)) {
unwrap_gerror (err, &err);
- g_free (xml);
- g_free (gdbus_xml);
g_warning (G_STRLOC ": cannot get book from factory: %s", err ? err->message : "[no error]");
if (err)
g_propagate_error (error, err);
@@ -3168,8 +2965,6 @@ e_book_new (ESource *source, GError **error)
return NULL;
}
- g_free (xml);
- g_free (gdbus_xml);
book->priv->gdbus_book = e_gdbus_book_proxy_new_sync (g_dbus_proxy_get_connection (G_DBUS_PROXY (book_factory_proxy)),
G_DBUS_PROXY_FLAGS_NONE,
@@ -3208,229 +3003,54 @@ e_book_new (ESource *source, GError **error)
return book;
}
-/* for each known source calls check_func, which should return TRUE if the required
- source have been found. Function returns NULL or the source on which was returned
- TRUE by the check_func. Non-NULL pointer should be unreffed by g_object_unref. */
-static ESource *
-search_known_sources (gboolean (*check_func)(ESource *source, gpointer user_data), gpointer user_data, ESourceList **sources, GError **error)
-{
- ESource *res = NULL;
- GSList *g;
- GError *err = NULL;
-
- g_return_val_if_fail (check_func != NULL, NULL);
- g_return_val_if_fail (sources != NULL, NULL);
-
- if (!e_book_get_addressbooks (sources, &err)) {
- g_propagate_error (error, err);
- return NULL;
- }
-
- for (g = e_source_list_peek_groups (*sources); g; g = g->next) {
- ESourceGroup *group = E_SOURCE_GROUP (g->data);
- GSList *s;
-
- for (s = e_source_group_peek_sources (group); s; s = s->next) {
- ESource *source = E_SOURCE (s->data);
-
- if (check_func (source, user_data)) {
- res = g_object_ref (source);
- break;
- }
- }
-
- if (res)
- break;
- }
-
- return res;
-}
-
-static gboolean
-check_uri (ESource *source, gpointer uri)
-{
- const gchar *suri;
-
- g_return_val_if_fail (source != NULL, FALSE);
- g_return_val_if_fail (uri != NULL, FALSE);
-
- suri = e_source_peek_absolute_uri (source);
-
- if (suri && g_ascii_strcasecmp (suri, uri) == 0)
- return TRUE;
-
- if (!suri && e_source_peek_group (source)) {
- gboolean res = FALSE;
- gchar *my_uri = g_strconcat (
- e_source_group_peek_base_uri (e_source_peek_group (source)),
- e_source_peek_relative_uri (source),
- NULL);
-
- res = my_uri && g_ascii_strcasecmp (my_uri, uri) == 0;
-
- g_free (my_uri);
-
- return res;
- }
-
- return FALSE;
-}
-
-/**
- * e_book_new_from_uri:
- * @uri: the URI to load
- * @error: A #GError pointer
- *
- * Creates a new #EBook corresponding to the given uri. See the
- * documentation for e_book_new for further information.
- *
- * Returns: a new but unopened #EBook.
- */
-EBook*
-e_book_new_from_uri (const gchar *uri, GError **error)
-{
- ESourceList *sources = NULL;
- ESource *source;
- EBook *book;
- GError *err = NULL;
-
- e_return_error_if_fail (uri, E_BOOK_ERROR_INVALID_ARG);
-
- source = search_known_sources (check_uri, (gpointer) uri, &sources, &err);
- if (err) {
- g_propagate_error (error, err);
- if (sources)
- g_object_unref (sources);
- return NULL;
- }
-
- if (!source)
- source = e_source_new_with_absolute_uri ("", uri);
-
- book = e_book_new (source, &err);
- if (err)
- g_propagate_error (error, err);
-
- g_object_unref (source);
- if (sources)
- g_object_unref (sources);
-
- return book;
-}
-
-struct check_system_data
-{
- const gchar *uri;
- ESource *uri_source;
-};
-
-static gboolean
-check_system (ESource *source, gpointer data)
-{
- struct check_system_data *csd = data;
-
- g_return_val_if_fail (source != NULL, FALSE);
- g_return_val_if_fail (data != NULL, FALSE);
-
- if (e_source_get_property (source, "system")) {
- return TRUE;
- }
-
- if (check_uri (source, (gpointer) csd->uri)) {
- if (csd->uri_source)
- g_object_unref (csd->uri_source);
- csd->uri_source = g_object_ref (source);
- }
-
- return FALSE;
-}
-
/**
* e_book_new_system_addressbook:
* @error: A #GError pointer
*
- * Creates a new #EBook corresponding to the user's system
- * addressbook. See the documentation for e_book_new for further
- * information.
+ * Creates a new #EBook corresponding to the user's system address book.
+ * See the documentation for e_book_new() for further information.
*
* Returns: a new but unopened #EBook.
*/
-EBook*
+EBook *
e_book_new_system_addressbook (GError **error)
{
- GError *err = NULL;
- ESourceList *sources = NULL;
- ESource *system_source = NULL;
- EBook *book;
- struct check_system_data csd;
+ ESourceRegistry *registry;
+ ESource *source;
- csd.uri = "local:system";
- csd.uri_source = NULL;
+ registry = e_source_registry_get_default ();
+ source = e_source_registry_lookup_by_uid (registry, "system");
- system_source = search_known_sources (check_system, &csd, &sources, &err);
- if (err) {
- g_propagate_error (error, err);
- if (sources)
- g_object_unref (sources);
+ if (!E_IS_SOURCE (source)) {
+ g_set_error_literal (
+ error, E_BOOK_ERROR,
+ E_BOOK_ERROR_NO_SUCH_BOOK,
+ _("No system source found"));
return NULL;
}
- if (!system_source) {
- system_source = csd.uri_source;
- csd.uri_source = NULL;
- }
-
- if (system_source) {
- book = e_book_new (system_source, &err);
- g_object_unref (system_source);
- } else {
- book = e_book_new_from_uri (csd.uri, &err);
- }
-
- if (csd.uri_source)
- g_object_unref (csd.uri_source);
- if (sources)
- g_object_unref (sources);
-
- if (err)
- g_propagate_error (error, err);
-
- return book;
+ return e_book_new (source, error);
}
/**
* e_book_new_default_addressbook:
* @error: return location for a #GError, or %NULL
*
- * Creates a new #EBook corresponding to the user's default
- * address book. See the documentation for e_book_new() for
- * further information.
+ * Creates a new #EBook corresponding to the user's default address book.
+ * See the documentation for e_book_new() for further information.
*
* Returns: a new but unopened #EBook
*/
EBook *
e_book_new_default_addressbook (GError **error)
{
- ESourceList *source_list;
+ ESourceRegistry *registry;
ESource *source;
- EBook *book;
- if (!e_book_get_addressbooks (&source_list, error))
- return NULL;
-
- source = e_source_list_peek_default_source (source_list);
- if (!source) {
- g_set_error_literal (error, E_BOOK_ERROR, E_BOOK_ERROR_NO_SUCH_BOOK,
- _("Address book does not exist"));
- g_object_unref (source_list);
- return NULL;
- }
+ registry = e_source_registry_get_default ();
+ source = e_source_registry_get_default_address_book (registry);
- book = e_book_new (source, error);
-
- g_object_unref (source_list);
-
- return book;
+ return e_book_new (source, error);
}
/**
diff --git a/addressbook/libebook/e-book.h b/addressbook/libebook/e-book.h
index 46e4971..3ba083c 100644
--- a/addressbook/libebook/e-book.h
+++ b/addressbook/libebook/e-book.h
@@ -16,7 +16,6 @@
#include "libedataserver/e-list.h"
#include "libedataserver/e-source.h"
-#include "libedataserver/e-source-list.h"
#include <libebook/e-contact.h>
#include <libebook/e-book-query.h>
#include <libebook/e-book-view.h>
@@ -125,7 +124,6 @@ struct _EBookClass {
/* Creating a new addressbook. */
EBook *e_book_new (ESource *source, GError **error);
-EBook *e_book_new_from_uri (const gchar *uri, GError **error);
EBook *e_book_new_system_addressbook (GError **error);
EBook *e_book_new_default_addressbook (GError **error);
@@ -146,18 +144,6 @@ gboolean e_book_open_async (EBook *book,
EBookAsyncCallback open_response,
gpointer closure);
-gboolean e_book_remove (EBook *book,
- GError **error);
-#ifndef E_BOOK_DISABLE_DEPRECATED
-guint e_book_async_remove (EBook *book,
- EBookCallback cb,
- gpointer closure);
-#endif
-
-gboolean e_book_remove_async (EBook *book,
- EBookAsyncCallback cb,
- gpointer closure);
-
gboolean e_book_get_required_fields (EBook *book,
GList **fields,
GError **error);
@@ -378,7 +364,6 @@ gboolean e_book_get_changes_async (EBook *book,
void e_book_free_change_list (GList *change_list);
-const gchar *e_book_get_uri (EBook *book);
ESource *e_book_get_source (EBook *book);
const gchar *e_book_get_static_capabilities (EBook *book,
@@ -405,7 +390,6 @@ gboolean e_book_is_self (EContact *contact);
/* Addressbook Discovery */
gboolean e_book_set_default_addressbook (EBook *book, GError **error);
gboolean e_book_set_default_source (ESource *source, GError **error);
-gboolean e_book_get_addressbooks (ESourceList** addressbook_sources, GError **error);
GType e_book_get_type (void);
diff --git a/addressbook/libebook/e-destination.c b/addressbook/libebook/e-destination.c
index e5aebca..55f6a2f 100644
--- a/addressbook/libebook/e-destination.c
+++ b/addressbook/libebook/e-destination.c
@@ -456,15 +456,18 @@ void
e_destination_set_book (EDestination *dest, EBook *book)
{
ESource *source;
+ const gchar *uid;
g_return_if_fail (dest && E_IS_DESTINATION (dest));
g_return_if_fail (book && E_IS_BOOK (book));
source = e_book_get_source (book);
+ uid = e_source_get_uid (source);
+ g_return_if_fail (uid != NULL);
- if (!dest->priv->source_uid || strcmp (e_source_peek_uid (source), dest->priv->source_uid)) {
+ if (!dest->priv->source_uid || strcmp (uid, dest->priv->source_uid)) {
e_destination_clear (dest);
- dest->priv->source_uid = g_strdup (e_source_peek_uid (source));
+ dest->priv->source_uid = g_strdup (uid);
g_signal_emit (dest, signals[CHANGED], 0);
}
diff --git a/addressbook/tests/ebook/ebook-test-utils.c b/addressbook/tests/ebook/ebook-test-utils.c
index 8e67bea..8fdc066 100644
--- a/addressbook/tests/ebook/ebook-test-utils.c
+++ b/addressbook/tests/ebook/ebook-test-utils.c
@@ -117,14 +117,16 @@ ebook_test_utils_book_add_contact (EBook *book,
{
GError *error = NULL;
- if (!e_book_add_contact (book, contact, &error)) {
- const gchar *uri;
+ if (!e_book_add_contact (book, contact, &error)) {
+ ESource *source;
+ const gchar *name;
- uri = e_book_get_uri (book);
+ source = e_book_get_source (book);
+ name = e_source_get_display_name (source);
g_warning ("failed to add contact to addressbook: `%s': %s",
- uri, error->message);
- exit (1);
- }
+ name, error->message);
+ exit (1);
+ }
return e_contact_get_const (contact, E_CONTACT_UID);
}
@@ -173,16 +175,19 @@ ebook_test_utils_book_commit_contact (EBook *book,
{
GError *error = NULL;
- if (!e_book_commit_contact (book, contact, &error)) {
- const gchar *uid;
- const gchar *uri;
+ if (!e_book_commit_contact (book, contact, &error)) {
+ ESource *source;
+ const gchar *name;
+ const gchar *uid;
+
+ uid = (const gchar *) e_contact_get_const (contact, E_CONTACT_UID);
- uid = (const gchar *) e_contact_get_const (contact, E_CONTACT_UID);
- uri = e_book_get_uri (book);
+ source = e_book_get_source (book);
+ name = e_source_get_display_name (source);
g_warning ("failed to commit changes to contact '%s' to addressbook: `%s': %s",
- uid, uri, error->message);
- exit (1);
- }
+ uid, name, error->message);
+ exit (1);
+ }
}
static void
@@ -229,14 +234,16 @@ ebook_test_utils_book_get_contact (EBook *book,
EContact *contact = NULL;
GError *error = NULL;
- if (!e_book_get_contact (book, uid, &contact, &error)) {
- const gchar *uri;
+ if (!e_book_get_contact (book, uid, &contact, &error)) {
+ ESource *source;
+ const gchar *name;
- uri = e_book_get_uri (book);
+ source = e_book_get_source (book);
+ name = e_source_get_display_name (source);
g_warning ("failed to get contact '%s' in addressbook: `%s': "
- "%s", uid, uri, error->message);
- exit (1);
- }
+ "%s", uid, name, error->message);
+ exit (1);
+ }
return contact;
}
@@ -290,14 +297,16 @@ ebook_test_utils_book_get_required_fields (EBook *book)
GList *fields = NULL;
GError *error = NULL;
- if (!e_book_get_required_fields (book, &fields, &error)) {
- const gchar *uri;
+ if (!e_book_get_required_fields (book, &fields, &error)) {
+ ESource *source;
+ const gchar *name;
- uri = e_book_get_uri (book);
+ source = e_book_get_source (book);
+ name = e_source_get_display_name (source);
g_warning ("failed to get required fields for addressbook "
- "`%s': %s", uri, error->message);
- exit (1);
- }
+ "`%s': %s", name, error->message);
+ exit (1);
+ }
return fields;
}
@@ -348,14 +357,16 @@ ebook_test_utils_book_get_static_capabilities (EBook *book)
GError *error = NULL;
const gchar *caps;
- if (!(caps = e_book_get_static_capabilities (book, &error))) {
- const gchar *uri;
+ if (!(caps = e_book_get_static_capabilities (book, &error))) {
+ ESource *source;
+ const gchar *name;
- uri = e_book_get_uri (book);
+ source = e_book_get_source (book);
+ name = e_source_get_display_name (source);
g_warning ("failed to get capabilities for addressbook: `%s': "
- "%s", uri, error->message);
- exit (1);
- }
+ "%s", name, error->message);
+ exit (1);
+ }
return caps;
}
@@ -366,14 +377,16 @@ ebook_test_utils_book_get_supported_auth_methods (EBook *book)
GList *fields = NULL;
GError *error = NULL;
- if (!e_book_get_supported_auth_methods (book, &fields, &error)) {
- const gchar *uri;
+ if (!e_book_get_supported_auth_methods (book, &fields, &error)) {
+ ESource *source;
+ const gchar *name;
- uri = e_book_get_uri (book);
+ source = e_book_get_source (book);
+ name = e_source_get_display_name (source);
g_warning ("failed to get supported auth methods for "
- "addressbook `%s': %s", uri, error->message);
- exit (1);
- }
+ "addressbook `%s': %s", name, error->message);
+ exit (1);
+ }
return fields;
}
@@ -425,14 +438,16 @@ ebook_test_utils_book_get_supported_fields (EBook *book)
GList *fields = NULL;
GError *error = NULL;
- if (!e_book_get_supported_fields (book, &fields, &error)) {
- const gchar *uri;
+ if (!e_book_get_supported_fields (book, &fields, &error)) {
+ ESource *source;
+ const gchar *name;
- uri = e_book_get_uri (book);
+ source = e_book_get_source (book);
+ name = e_source_get_display_name (source);
g_warning ("failed to get supported fields for addressbook "
- "`%s': %s", uri, error->message);
- exit (1);
- }
+ "`%s': %s", name, error->message);
+ exit (1);
+ }
return fields;
}
@@ -483,14 +498,16 @@ ebook_test_utils_book_remove_contact (EBook *book,
{
GError *error = NULL;
- if (!e_book_remove_contact (book, uid, &error)) {
- const gchar *uri;
+ if (!e_book_remove_contact (book, uid, &error)) {
+ ESource *source;
+ const gchar *name;
- uri = e_book_get_uri (book);
+ source = e_book_get_source (book);
+ name = e_source_get_display_name (source);
g_warning ("failed to remove contact '%s' from addressbook: `%s': %s",
- uid, uri, error->message);
- exit (1);
- }
+ uid, name, error->message);
+ exit (1);
+ }
}
static void
@@ -575,14 +592,16 @@ ebook_test_utils_book_remove_contacts (EBook *book,
{
GError *error = NULL;
- if (!e_book_remove_contacts (book, ids, &error)) {
- const gchar *uri;
+ if (!e_book_remove_contacts (book, ids, &error)) {
+ ESource *source;
+ const gchar *name;
- uri = e_book_get_uri (book);
+ source = e_book_get_source (book);
+ name = e_source_get_display_name (source);
g_warning ("failed to remove contacts from addressbook: `%s': %s",
- uri, error->message);
- exit (1);
- }
+ name, error->message);
+ exit (1);
+ }
}
static void
@@ -624,22 +643,6 @@ ebook_test_utils_book_async_remove_contacts (EBook *book,
}
EBook*
-ebook_test_utils_book_new_from_uri (const gchar *uri)
-{
- EBook *book;
- GError *error = NULL;
-
- test_print ("loading addressbook\n");
- book = e_book_new_from_uri (uri, &error);
- if (!book) {
- g_error ("failed to create addressbook: `%s': %s", uri,
- error->message);
- }
-
- return book;
-}
-
-EBook*
ebook_test_utils_book_new_temp (gchar **uri)
{
EBook *book;
@@ -657,7 +660,9 @@ ebook_test_utils_book_new_temp (gchar **uri)
}
g_free (file_template);
- book = ebook_test_utils_book_new_from_uri (uri_result);
+ /* FIXME We don't build EBooks from URIs anymore. */
+ /* book = ebook_test_utils_book_new_from_uri (uri_result); */
+ book = NULL;
if (uri)
*uri = g_strdup (uri_result);
@@ -673,60 +678,17 @@ ebook_test_utils_book_open (EBook *book,
{
GError *error = NULL;
- if (!e_book_open (book, only_if_exists, &error)) {
- const gchar *uri;
+ if (!e_book_open (book, only_if_exists, &error)) {
+ ESource *source;
+ const gchar *name;
- uri = e_book_get_uri (book);
+ source = e_book_get_source (book);
+ name = e_source_get_display_name (source);
- g_warning ("failed to open addressbook: `%s': %s", uri,
- error->message);
- exit (1);
- }
-}
-
-void
-ebook_test_utils_book_remove (EBook *book)
-{
- GError *error = NULL;
-
- if (!e_book_remove (book, &error)) {
- g_warning ("failed to remove book; %s\n", error->message);
- exit (1);
- }
- test_print ("successfully removed the temporary addressbook\n");
-
- g_object_unref (book);
-}
-
-static void
-remove_cb (EBook *book, const GError *error, EBookTestClosure *closure)
-{
- if (error) {
- g_warning ("failed to asynchronously remove the book: "
- "status %d (%s)", error->code, error->message);
- exit (1);
- }
-
- test_print ("successfully asynchronously removed the temporary "
- "addressbook\n");
- if (closure)
- (*closure->cb) (closure);
-}
-
-void
-ebook_test_utils_book_async_remove (EBook *book,
- GSourceFunc callback,
- gpointer user_data)
-{
- EBookTestClosure *closure;
-
- closure = g_new0 (EBookTestClosure, 1);
- closure->cb = callback;
- closure->user_data = user_data;
- if (!e_book_remove_async (book, (EBookAsyncCallback) remove_cb, closure)) {
- g_warning ("failed to set up book removal");
- exit (1);
- }
+ g_warning ("failed to open addressbook: `%s': %s", name,
+ error->message);
+ exit (1);
+ }
}
void
@@ -736,15 +698,17 @@ ebook_test_utils_book_get_book_view (EBook *book,
{
GError *error = NULL;
- if (!e_book_get_book_view (book, query, NULL, -1, view, &error)) {
- const gchar *uri;
+ if (!e_book_get_book_view (book, query, NULL, -1, view, &error)) {
+ ESource *source;
+ const gchar *name;
- uri = e_book_get_uri (book);
+ source = e_book_get_source (book);
+ name = e_source_get_display_name (source);
- g_warning ("failed to get view for addressbook: `%s': %s", uri,
- error->message);
- exit (1);
- }
+ g_warning ("failed to get view for addressbook: `%s': %s",
+ name, error->message);
+ exit (1);
+ }
}
static void
diff --git a/addressbook/tests/ebook/ebook-test-utils.h b/addressbook/tests/ebook/ebook-test-utils.h
index 789e21d..326eea1 100644
--- a/addressbook/tests/ebook/ebook-test-utils.h
+++ b/addressbook/tests/ebook/ebook-test-utils.h
@@ -139,13 +139,6 @@ ebook_test_utils_book_open (EBook *book,
gboolean only_if_exists);
void
-ebook_test_utils_book_remove (EBook *book);
-void
-ebook_test_utils_book_async_remove (EBook *book,
- GSourceFunc callback,
- gpointer user_data);
-
-void
ebook_test_utils_book_get_book_view (EBook *book,
EBookQuery *query,
EBookView **view);
diff --git a/addressbook/tests/ebook/test-changes.c b/addressbook/tests/ebook/test-changes.c
index a8bc4cf..20d03d8 100644
--- a/addressbook/tests/ebook/test-changes.c
+++ b/addressbook/tests/ebook/test-changes.c
@@ -60,7 +60,6 @@ main (gint argc, gchar **argv)
e_book_free_change_list (changes);
g_object_unref (contact);
- ebook_test_utils_book_remove (book);
return 0;
}
diff --git a/addressbook/tests/ebook/test-ebook-add-contact.c b/addressbook/tests/ebook/test-ebook-add-contact.c
index 7fb19ab..541e671 100644
--- a/addressbook/tests/ebook/test-ebook-add-contact.c
+++ b/addressbook/tests/ebook/test-ebook-add-contact.c
@@ -31,8 +31,6 @@ main (gint argc, gchar **argv)
test_print ("successfully added and retrieved contact '%s'\n", uid);
g_object_unref (contact_final);
- ebook_test_utils_book_remove (book);
-
/*
* Async version
*/
@@ -48,7 +46,6 @@ main (gint argc, gchar **argv)
g_free (uid);
g_main_loop_run (loop);
- ebook_test_utils_book_remove (book);
g_free (vcard);
return 0;
diff --git a/addressbook/tests/ebook/test-ebook-commit-contact.c b/addressbook/tests/ebook/test-ebook-commit-contact.c
index 4f93fe7..cb01a28 100644
--- a/addressbook/tests/ebook/test-ebook-commit-contact.c
+++ b/addressbook/tests/ebook/test-ebook-commit-contact.c
@@ -73,8 +73,6 @@ main (gint argc, gchar **argv)
g_object_unref (contact);
g_free (uid);
- ebook_test_utils_book_remove (book);
-
/*
* Async version
*/
@@ -91,7 +89,6 @@ main (gint argc, gchar **argv)
g_main_loop_run (loop);
g_free (uid);
- ebook_test_utils_book_remove (book);
return 0;
}
diff --git a/addressbook/tests/ebook/test-ebook-get-book-view.c b/addressbook/tests/ebook/test-ebook-get-book-view.c
index 0065af4..dd54eb1 100644
--- a/addressbook/tests/ebook/test-ebook-get-book-view.c
+++ b/addressbook/tests/ebook/test-ebook-get-book-view.c
@@ -109,8 +109,7 @@ main (gint argc, gchar **argv)
loop = g_main_loop_new (NULL, TRUE);
g_main_loop_run (loop);
- e_book_query_unref (query);
- ebook_test_utils_book_remove (book);
+ e_book_query_unref (query);
/*
* Async version
@@ -124,8 +123,7 @@ main (gint argc, gchar **argv)
g_main_loop_run (loop);
- e_book_query_unref (query);
- ebook_test_utils_book_remove (book);
+ e_book_query_unref (query);
return 0;
}
diff --git a/addressbook/tests/ebook/test-ebook-get-contact.c b/addressbook/tests/ebook/test-ebook-get-contact.c
index 72c5961..3acd85c 100644
--- a/addressbook/tests/ebook/test-ebook-get-contact.c
+++ b/addressbook/tests/ebook/test-ebook-get-contact.c
@@ -38,7 +38,5 @@ main (gint argc, gchar **argv)
g_main_loop_run (loop);
- ebook_test_utils_book_remove (book);
-
return 0;
}
diff --git a/addressbook/tests/ebook/test-ebook-get-required-fields.c b/addressbook/tests/ebook/test-ebook-get-required-fields.c
index 0739f73..2de3b25 100644
--- a/addressbook/tests/ebook/test-ebook-get-required-fields.c
+++ b/addressbook/tests/ebook/test-ebook-get-required-fields.c
@@ -70,7 +70,5 @@ main (gint argc, gchar **argv)
g_main_loop_run (loop);
- ebook_test_utils_book_remove (book);
-
return 0;
}
diff --git a/addressbook/tests/ebook/test-ebook-get-static-capabilities.c b/addressbook/tests/ebook/test-ebook-get-static-capabilities.c
index d225e04..6dab878 100644
--- a/addressbook/tests/ebook/test-ebook-get-static-capabilities.c
+++ b/addressbook/tests/ebook/test-ebook-get-static-capabilities.c
@@ -26,7 +26,5 @@ main (gint argc, gchar **argv)
test_print ("successfully retrieved static capabilities: '%s'\n", caps);
- ebook_test_utils_book_remove (book);
-
return 0;
}
diff --git a/addressbook/tests/ebook/test-ebook-get-supported-auth-methods.c b/addressbook/tests/ebook/test-ebook-get-supported-auth-methods.c
index 5f4e6f1..16fd947 100644
--- a/addressbook/tests/ebook/test-ebook-get-supported-auth-methods.c
+++ b/addressbook/tests/ebook/test-ebook-get-supported-auth-methods.c
@@ -70,7 +70,5 @@ main (gint argc, gchar **argv)
g_main_loop_run (loop);
- ebook_test_utils_book_remove (book);
-
return 0;
}
diff --git a/addressbook/tests/ebook/test-ebook-get-supported-fields.c b/addressbook/tests/ebook/test-ebook-get-supported-fields.c
index 9df99dc..3c2c5df 100644
--- a/addressbook/tests/ebook/test-ebook-get-supported-fields.c
+++ b/addressbook/tests/ebook/test-ebook-get-supported-fields.c
@@ -70,7 +70,5 @@ main (gint argc, gchar **argv)
g_main_loop_run (loop);
- ebook_test_utils_book_remove (book);
-
return 0;
}
diff --git a/addressbook/tests/ebook/test-ebook-remove-contact-by-id.c b/addressbook/tests/ebook/test-ebook-remove-contact-by-id.c
index d1d73ae..7fef528 100644
--- a/addressbook/tests/ebook/test-ebook-remove-contact-by-id.c
+++ b/addressbook/tests/ebook/test-ebook-remove-contact-by-id.c
@@ -27,7 +27,6 @@ main (gint argc, gchar **argv)
g_main_loop_run (loop);
- ebook_test_utils_book_remove (book);
g_free (uid);
return 0;
diff --git a/addressbook/tests/ebook/test-ebook-remove-contact.c b/addressbook/tests/ebook/test-ebook-remove-contact.c
index bdb8985..38ec15d 100644
--- a/addressbook/tests/ebook/test-ebook-remove-contact.c
+++ b/addressbook/tests/ebook/test-ebook-remove-contact.c
@@ -31,8 +31,7 @@ main (gint argc, gchar **argv)
g_assert (contact_final == NULL);
test_print ("successfully added and removed contact '%s'\n", uid);
- ebook_test_utils_book_remove (book);
- g_free (uid);
+ g_free (uid);
/*
* Async version
@@ -51,7 +50,6 @@ main (gint argc, gchar **argv)
g_main_loop_run (loop);
- ebook_test_utils_book_remove (book);
g_object_unref (contact_final);
g_free (uid);
diff --git a/addressbook/tests/ebook/test-ebook-remove-contacts.c b/addressbook/tests/ebook/test-ebook-remove-contacts.c
index 7caacb5..afee840 100644
--- a/addressbook/tests/ebook/test-ebook-remove-contacts.c
+++ b/addressbook/tests/ebook/test-ebook-remove-contacts.c
@@ -39,9 +39,8 @@ main (gint argc, gchar **argv)
test_print ("successfully added and removed contacts\n");
- ebook_test_utils_book_remove (book);
- g_free (uid_1);
- g_free (uid_2);
+ g_free (uid_1);
+ g_free (uid_2);
g_list_free (uids);
/*
@@ -62,9 +61,8 @@ main (gint argc, gchar **argv)
g_main_loop_run (loop);
- ebook_test_utils_book_remove (book);
- g_free (uid_1);
- g_free (uid_2);
+ g_free (uid_1);
+ g_free (uid_2);
g_list_free (uids);
return 0;
diff --git a/addressbook/tests/ebook/test-ebook-remove.c b/addressbook/tests/ebook/test-ebook-remove.c
index c3d4671..ce270db 100644
--- a/addressbook/tests/ebook/test-ebook-remove.c
+++ b/addressbook/tests/ebook/test-ebook-remove.c
@@ -17,7 +17,6 @@ main (gint argc, gchar **argv)
/* Sync version */
book = ebook_test_utils_book_new_temp (&uri);
ebook_test_utils_book_open (book, FALSE);
- ebook_test_utils_book_remove (book);
/* Async version */
book = ebook_test_utils_book_new_temp (&uri);
diff --git a/addressbook/tests/ebook/test-ebook-stress-factory--fifo.c b/addressbook/tests/ebook/test-ebook-stress-factory--fifo.c
index 6483fdb..d8f1872 100644
--- a/addressbook/tests/ebook/test-ebook-stress-factory--fifo.c
+++ b/addressbook/tests/ebook/test-ebook-stress-factory--fifo.c
@@ -25,9 +25,5 @@ main (gint argc, gchar **argv)
g_free (uri);
}
- for (i = 0; i < NUM_BOOKS; i++) {
- ebook_test_utils_book_remove (books[i]);
- }
-
return 0;
}
diff --git a/addressbook/tests/ebook/test-ebook-stress-factory--serial.c b/addressbook/tests/ebook/test-ebook-stress-factory--serial.c
index 8c19bb7..fafd552 100644
--- a/addressbook/tests/ebook/test-ebook-stress-factory--serial.c
+++ b/addressbook/tests/ebook/test-ebook-stress-factory--serial.c
@@ -20,7 +20,6 @@ main (gint argc, gchar **argv)
book = ebook_test_utils_book_new_temp (&uri);
ebook_test_utils_book_open (book, FALSE);
- ebook_test_utils_book_remove (book);
g_free (uri);
}
diff --git a/addressbook/tests/ebook/test-ebook-stress-factory--single-book.c b/addressbook/tests/ebook/test-ebook-stress-factory--single-book.c
index 53848b3..69a4a2d 100644
--- a/addressbook/tests/ebook/test-ebook-stress-factory--single-book.c
+++ b/addressbook/tests/ebook/test-ebook-stress-factory--single-book.c
@@ -26,9 +26,6 @@ main (gint argc, gchar **argv)
g_object_unref (book);
}
- book = ebook_test_utils_book_new_from_uri (uri);
- ebook_test_utils_book_remove (book);
-
g_free (uri);
return 0;
diff --git a/addressbook/tests/ebook/test-nonexistent-id.c b/addressbook/tests/ebook/test-nonexistent-id.c
index 821fb5c..24fbab4 100644
--- a/addressbook/tests/ebook/test-nonexistent-id.c
+++ b/addressbook/tests/ebook/test-nonexistent-id.c
@@ -1,3 +1,4 @@
+#include <stdlib.h>
#include <libebook/e-book.h>
gint main (gint argc, gchar **argv)
diff --git a/docs/reference/addressbook/libebook/libebook-sections.txt b/docs/reference/addressbook/libebook/libebook-sections.txt
index 7352302..078e19f 100644
--- a/docs/reference/addressbook/libebook/libebook-sections.txt
+++ b/docs/reference/addressbook/libebook/libebook-sections.txt
@@ -24,11 +24,9 @@ EBookViewPrivate
EBook
e_book_new
e_book_new_default_addressbook
-e_book_new_from_uri
e_book_new_system_addressbook
e_book_set_default_addressbook
e_book_set_default_source
-e_book_remove
e_book_open
e_book_get_supported_fields
e_book_get_supported_auth_methods
@@ -46,7 +44,6 @@ e_book_get_book_view
e_book_get_contacts
e_book_get_changes
e_book_free_change_list
-e_book_get_uri
e_book_get_static_capabilities
e_book_check_static_capability
e_book_is_writable
@@ -55,7 +52,6 @@ e_book_cancel_async_op
e_book_get_self
e_book_set_self
e_book_is_self
-e_book_get_addressbooks
e_return_error_if_fail
e_return_async_error_if_fail
e_return_ex_async_error_val_if_fail
@@ -74,7 +70,6 @@ EBookListCallback
EBookContactCallback
EBookBookViewCallback
e_book_open_async
-e_book_remove_async
e_book_get_supported_fields_async
e_book_get_supported_auth_methods_async
e_book_authenticate_user_async
@@ -89,7 +84,6 @@ e_book_get_book_view_async
e_book_get_changes_async
e_book_get_required_fields_async
e_book_async_open
-e_book_async_remove
e_book_async_get_supported_fields
e_book_async_get_supported_auth_methods
e_book_async_authenticate_user
diff --git a/docs/reference/addressbook/libebook/tmpl/e-book.sgml b/docs/reference/addressbook/libebook/tmpl/e-book.sgml
index 7b34c99..efd97de 100644
--- a/docs/reference/addressbook/libebook/tmpl/e-book.sgml
+++ b/docs/reference/addressbook/libebook/tmpl/e-book.sgml
@@ -77,16 +77,6 @@ The writable status for this book is being reported.
@Returns:
-<!-- ##### FUNCTION e_book_new_from_uri ##### -->
-<para>
-
-</para>
-
- uri:
- error:
- Returns:
-
-
<!-- ##### FUNCTION e_book_new_system_addressbook ##### -->
<para>
@@ -116,16 +106,6 @@ The writable status for this book is being reported.
@Returns:
-<!-- ##### FUNCTION e_book_remove ##### -->
-<para>
-
-</para>
-
- book:
- error:
- Returns:
-
-
<!-- ##### FUNCTION e_book_open ##### -->
<para>
@@ -312,15 +292,6 @@ The writable status for this book is being reported.
@change_list:
-<!-- ##### FUNCTION e_book_get_uri ##### -->
-<para>
-
-</para>
-
- book:
- Returns:
-
-
<!-- ##### FUNCTION e_book_get_static_capabilities ##### -->
<para>
@@ -592,17 +563,6 @@ The writable status for this book is being reported.
@Returns:
-<!-- ##### FUNCTION e_book_remove_async ##### -->
-<para>
-
-</para>
-
- book:
- cb:
- closure:
- Returns:
-
-
<!-- ##### FUNCTION e_book_get_supported_fields_async ##### -->
<para>
@@ -772,17 +732,6 @@ The writable status for this book is being reported.
@Returns:
-<!-- ##### FUNCTION e_book_async_remove ##### -->
-<para>
-
-</para>
-
- book:
- cb:
- closure:
- Returns:
-
-
<!-- ##### FUNCTION e_book_async_get_supported_fields ##### -->
<para>
diff --git a/docs/reference/addressbook/libebook/tmpl/libebook-unused.sgml b/docs/reference/addressbook/libebook/tmpl/libebook-unused.sgml
index e8fe0b8..cdc265c 100644
--- a/docs/reference/addressbook/libebook/tmpl/libebook-unused.sgml
+++ b/docs/reference/addressbook/libebook/tmpl/libebook-unused.sgml
@@ -443,6 +443,16 @@ Data sent back to the e-book object.
@closure:
@Returns:
+<!-- ##### FUNCTION e_book_async_remove ##### -->
+<para>
+
+</para>
+
+ book:
+ cb:
+ closure:
+ Returns:
+
<!-- ##### FUNCTION e_book_async_remove_contact_by_id_ex ##### -->
<para>
@@ -511,6 +521,14 @@ Data sent back to the e-book object.
@error:
@Returns:
+<!-- ##### FUNCTION e_book_get_uri ##### -->
+<para>
+
+</para>
+
+ book:
+ Returns:
+
<!-- ##### FUNCTION e_book_listener_new ##### -->
<para>
@@ -616,6 +634,34 @@ Data sent back to the e-book object.
</para>
+<!-- ##### FUNCTION e_book_new_from_uri ##### -->
+<para>
+
+</para>
+
+ uri:
+ error:
+ Returns:
+
+<!-- ##### FUNCTION e_book_remove ##### -->
+<para>
+
+</para>
+
+ book:
+ error:
+ Returns:
+
+<!-- ##### FUNCTION e_book_remove_async ##### -->
+<para>
+
+</para>
+
+ book:
+ cb:
+ closure:
+ Returns:
+
<!-- ##### FUNCTION e_book_unload_uri ##### -->
<para>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]