<!-- ##### SECTION Title ##### -->
EBook

<!-- ##### SECTION Short_Description ##### -->
The primary Evolution addressbook client object.

<!-- ##### SECTION Long_Description ##### -->
<para>
Represents a complete addressbook. Event notifications and callbacks go to the
#EBookListener. Contrast with #EBookView, which represents a search of the addressbook.
</para>

<!-- ##### SECTION See_Also ##### -->
<para>
#EBookView
</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### SECTION Image ##### -->


<!-- ##### STRUCT EBook ##### -->
<para>
#EBook has no publicly available members.
</para>


<!-- ##### SIGNAL EBook::auth-required ##### -->
<para>
Authentication is required to access this source.  You should call
#e_book_authenticate_user or #e_book_async_authenticate_user.
</para>

@ebook: the object which received the signal.

<!-- ##### SIGNAL EBook::backend-died ##### -->
<para>
The backend for this address book has died.
</para>

@ebook: the object which received the signal.

<!-- ##### SIGNAL EBook::connection-status ##### -->
<para>
The connection status for this book is being reported.
</para>

@ebook: the object which received the signal.
@arg1: #TRUE if the connection is online, #FALSE otherwise.

<!-- ##### SIGNAL EBook::writable-status ##### -->
<para>
The writable status for this book is being reported.
</para>

@ebook: the object which received the signal.
@arg1: #TRUE if the book is writable, #FALSE otherwise.

<!-- ##### FUNCTION e_book_new ##### -->
<para>

</para>

@source: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_new_default_addressbook ##### -->
<para>

</para>

@error: 
@Returns: 


<!-- ##### FUNCTION e_book_new_from_uri ##### -->
<para>

</para>

@uri: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_new_system_addressbook ##### -->
<para>

</para>

@error: 
@Returns: 


<!-- ##### FUNCTION e_book_set_default_addressbook ##### -->
<para>

</para>

@book: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_set_default_source ##### -->
<para>

</para>

@source: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_remove ##### -->
<para>

</para>

@book: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_open ##### -->
<para>

</para>

@book: 
@only_if_exists: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_get_supported_fields ##### -->
<para>

</para>

@book: 
@fields: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_get_supported_auth_methods ##### -->
<para>

</para>

@book: 
@auth_methods: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_get_required_fields ##### -->
<para>

</para>

@book: 
@fields: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_get_source ##### -->
<para>

</para>

@book: 
@Returns: 


<!-- ##### FUNCTION e_book_is_online ##### -->
<para>

</para>

@book: 
@Returns: 


<!-- ##### FUNCTION e_book_is_opened ##### -->
<para>

</para>

@book: 
@Returns: 


<!-- ##### FUNCTION e_book_authenticate_user ##### -->
<para>

</para>

@book: 
@user: 
@passwd: 
@auth_method: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_get_contact ##### -->
<para>

</para>

@book: 
@id: 
@contact: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_remove_contact ##### -->
<para>

</para>

@book: 
@id: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_remove_contacts ##### -->
<para>

</para>

@book: 
@ids: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_add_contact ##### -->
<para>

</para>

@book: 
@contact: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_commit_contact ##### -->
<para>

</para>

@book: 
@contact: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_get_book_view ##### -->
<para>

</para>

@book: 
@query: 
@requested_fields: 
@max_results: 
@book_view: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_get_contacts ##### -->
<para>

</para>

@book: 
@query: 
@contacts: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_get_changes ##### -->
<para>

</para>

@book: 
@changeid: 
@changes: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_free_change_list ##### -->
<para>

</para>

@change_list: 


<!-- ##### FUNCTION e_book_get_uri ##### -->
<para>

</para>

@book: 
@Returns: 


<!-- ##### FUNCTION e_book_get_static_capabilities ##### -->
<para>

</para>

@book: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_check_static_capability ##### -->
<para>

</para>

@book: 
@cap: 
@Returns: 


<!-- ##### FUNCTION e_book_is_writable ##### -->
<para>

</para>

@book: 
@Returns: 


<!-- ##### FUNCTION e_book_cancel ##### -->
<para>

</para>

@book: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_cancel_async_op ##### -->
<para>

</para>

@book: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_get_self ##### -->
<para>

</para>

@contact: 
@book: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_set_self ##### -->
<para>

</para>

@book: 
@contact: 
@error: 
@Returns: 


<!-- ##### FUNCTION e_book_is_self ##### -->
<para>

</para>

@contact: 
@Returns: 


<!-- ##### FUNCTION e_book_get_addressbooks ##### -->
<para>

</para>

@addressbook_sources: 
@error: 
@Returns: 


<!-- ##### MACRO e_return_error_if_fail ##### -->
<para>

</para>

@expr: 
@error_code: 


<!-- ##### MACRO e_return_async_error_if_fail ##### -->
<para>

</para>

@expr: 
@error: 


<!-- ##### MACRO e_return_async_error_val_if_fail ##### -->
<para>

</para>

@expr: 
@error: 


<!-- ##### MACRO e_return_ex_async_error_if_fail ##### -->
<para>

</para>

@expr: 
@error: 


<!-- ##### MACRO e_return_ex_async_error_val_if_fail ##### -->
<para>

</para>

@expr: 
@error: 


<!-- ##### USER_FUNCTION EBookAsyncCallback ##### -->
<para>

</para>

@book: 
@error: 
@closure: 


<!-- ##### USER_FUNCTION EBookOpenProgressCallback ##### -->
<para>

</para>

@book: 
@status_message: 
@percent: 
@closure: 


<!-- ##### USER_FUNCTION EBookIdAsyncCallback ##### -->
<para>

</para>

@book: 
@error: 
@id: 
@closure: 


<!-- ##### USER_FUNCTION EBookContactAsyncCallback ##### -->
<para>

</para>

@book: 
@error: 
@contact: 
@closure: 


<!-- ##### USER_FUNCTION EBookListAsyncCallback ##### -->
<para>

</para>

@book: 
@error: 
@list: 
@closure: 


<!-- ##### USER_FUNCTION EBookBookViewAsyncCallback ##### -->
<para>

</para>

@book: 
@error: 
@book_view: 
@closure: 


<!-- ##### USER_FUNCTION EBookEListAsyncCallback ##### -->
<para>

</para>

@book: 
@error: 
@list: 
@closure: 


<!-- ##### USER_FUNCTION EBookCallback ##### -->
<para>

</para>

@book: 
@status: 
@closure: 


<!-- ##### USER_FUNCTION EBookOpenProgressCallback ##### -->
<para>

</para>

@book: 
@status_message: 
@percent: 
@closure: 


<!-- ##### USER_FUNCTION EBookIdCallback ##### -->
<para>

</para>

@book: 
@status: 
@id: 
@closure: 


<!-- ##### USER_FUNCTION EBookEListCallback ##### -->
<para>

</para>

@book: 
@status: 
@list: 
@closure: 


<!-- ##### USER_FUNCTION EBookListCallback ##### -->
<para>

</para>

@book: 
@status: 
@list: 
@closure: 


<!-- ##### USER_FUNCTION EBookContactCallback ##### -->
<para>

</para>

@book: 
@status: 
@contact: 
@closure: 


<!-- ##### USER_FUNCTION EBookBookViewCallback ##### -->
<para>

</para>

@book: 
@status: 
@book_view: 
@closure: 


<!-- ##### FUNCTION e_book_open_async ##### -->
<para>

</para>

@book: 
@only_if_exists: 
@open_response: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_remove_async ##### -->
<para>

</para>

@book: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_get_supported_fields_async ##### -->
<para>

</para>

@book: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_get_supported_auth_methods_async ##### -->
<para>

</para>

@book: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_authenticate_user_async ##### -->
<para>

</para>

@book: 
@user: 
@passwd: 
@auth_method: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_get_contact_async ##### -->
<para>

</para>

@book: 
@id: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_get_contacts_async ##### -->
<para>

</para>

@book: 
@query: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_remove_contact_async ##### -->
<para>

</para>

@book: 
@contact: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_remove_contact_by_id_async ##### -->
<para>

</para>

@book: 
@id: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_remove_contacts_async ##### -->
<para>

</para>

@book: 
@ids: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_add_contact_async ##### -->
<para>

</para>

@book: 
@contact: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_commit_contact_async ##### -->
<para>

</para>

@book: 
@contact: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_get_book_view_async ##### -->
<para>

</para>

@book: 
@query: 
@requested_fields: 
@max_results: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_get_changes_async ##### -->
<para>

</para>

@book: 
@changeid: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_get_required_fields_async ##### -->
<para>

</para>

@book: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_open ##### -->
<para>

</para>

@book: 
@only_if_exists: 
@open_response: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_remove ##### -->
<para>

</para>

@book: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_get_supported_fields ##### -->
<para>

</para>

@book: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_get_supported_auth_methods ##### -->
<para>

</para>

@book: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_authenticate_user ##### -->
<para>

</para>

@book: 
@user: 
@passwd: 
@auth_method: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_get_contact ##### -->
<para>

</para>

@book: 
@id: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_get_contacts ##### -->
<para>

</para>

@book: 
@query: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_remove_contact ##### -->
<para>

</para>

@book: 
@contact: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_remove_contact_by_id ##### -->
<para>

</para>

@book: 
@id: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_remove_contacts ##### -->
<para>

</para>

@book: 
@ids: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_add_contact ##### -->
<para>

</para>

@book: 
@contact: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_commit_contact ##### -->
<para>

</para>

@book: 
@contact: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_get_book_view ##### -->
<para>

</para>

@book: 
@query: 
@requested_fields: 
@max_results: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_get_changes ##### -->
<para>

</para>

@book: 
@changeid: 
@cb: 
@closure: 
@Returns: 


<!-- ##### FUNCTION e_book_async_get_required_fields ##### -->
<para>

</para>

@book: 
@cb: 
@closure: 
@Returns: 


