diff options
Diffstat (limited to 'addressbook/backend')
-rw-r--r-- | addressbook/backend/ebook/e-book.c | 31 | ||||
-rw-r--r-- | addressbook/backend/ebook/e-book.h | 92 | ||||
-rw-r--r-- | addressbook/backend/idl/addressbook.idl | 2 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-backend-file.c | 15 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-backend-ldap.c | 15 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-backend.c | 16 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-backend.h | 24 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-book.c | 33 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-book.h | 61 |
9 files changed, 185 insertions, 104 deletions
diff --git a/addressbook/backend/ebook/e-book.c b/addressbook/backend/ebook/e-book.c index 2023f1bf83..bb0226eb5a 100644 --- a/addressbook/backend/ebook/e-book.c +++ b/addressbook/backend/ebook/e-book.c @@ -435,6 +435,37 @@ e_book_unload_uri (EBook *book) book->priv->load_state = URINotLoaded; } +char * +e_book_get_static_capabilities (EBook *book) +{ + CORBA_Environment ev; + char *temp; + char *ret_val; + + CORBA_exception_init (&ev); + + if (book->priv->load_state != URILoaded) { + g_warning ("e_book_unload_uri: No URI is loaded!\n"); + return g_strdup(""); + } + + temp = Evolution_Book_get_static_capabilities(book->priv->corba_book, &ev); + + if (ev._major != CORBA_NO_EXCEPTION) { + g_warning ("e_book_get_static_capabilities: Exception " + "during get_static_capabilities!\n"); + CORBA_exception_free (&ev); + return NULL; + } + + ret_val = g_strdup(temp); + CORBA_free(temp); + + CORBA_exception_free (&ev); + + return ret_val; +} + static gboolean e_book_construct (EBook *book) { diff --git a/addressbook/backend/ebook/e-book.h b/addressbook/backend/ebook/e-book.h index a57c7263b3..29f3787f66 100644 --- a/addressbook/backend/ebook/e-book.h +++ b/addressbook/backend/ebook/e-book.h @@ -51,66 +51,66 @@ typedef void (*EBookBookViewCallback) (EBook *book, EBookStatus status, EBookVie /* Creating a new addressbook. */ -EBook *e_book_new (void); -gboolean e_book_load_uri (EBook *book, - const char *uri, - EBookCallback open_response, - gpointer closure); -void e_book_unload_uri (EBook *book); +EBook *e_book_new (void); +gboolean e_book_load_uri (EBook *book, + const char *uri, + EBookCallback open_response, + gpointer closure); +void e_book_unload_uri (EBook *book); +char *e_book_get_static_capabilities (EBook *book); /* Fetching cards. */ -ECard *e_book_get_card (EBook *book, - const char *id); -char *e_book_get_vcard (EBook *book, - const char *id); +ECard *e_book_get_card (EBook *book, + const char *id); +char *e_book_get_vcard (EBook *book, + const char *id); /* Deleting cards. */ -gboolean e_book_remove_card (EBook *book, - ECard *card, - EBookCallback cb, - gpointer closure); -gboolean e_book_remove_card_by_id (EBook *book, - const char *id, - EBookCallback cb, - gpointer closure); +gboolean e_book_remove_card (EBook *book, + ECard *card, + EBookCallback cb, + gpointer closure); +gboolean e_book_remove_card_by_id (EBook *book, + const char *id, + EBookCallback cb, + gpointer closure); /* Adding cards. */ -gboolean e_book_add_card (EBook *book, - ECard *card, - EBookIdCallback cb, - gpointer closure); -gboolean e_book_add_vcard (EBook *book, - const char *vcard, - EBookIdCallback cb, - gpointer closure); +gboolean e_book_add_card (EBook *book, + ECard *card, + EBookIdCallback cb, + gpointer closure); +gboolean e_book_add_vcard (EBook *book, + const char *vcard, + EBookIdCallback cb, + gpointer closure); /* Modifying cards. */ -gboolean e_book_commit_card (EBook *book, - ECard *card, - EBookCallback cb, - gpointer closure); -gboolean e_book_commit_vcard (EBook *book, - const char *vcard, - EBookCallback cb, - gpointer closure); +gboolean e_book_commit_card (EBook *book, + ECard *card, + EBookCallback cb, + gpointer closure); +gboolean e_book_commit_vcard (EBook *book, + const char *vcard, + EBookCallback cb, + gpointer closure); /* Checking to see if we're connected to the card repository. */ -gboolean e_book_check_connection (EBook *book); +gboolean e_book_check_connection (EBook *book); +gboolean e_book_get_cursor (EBook *book, + char *query, + EBookCursorCallback cb, + gpointer closure); -gboolean e_book_get_cursor (EBook *book, - char *query, - EBookCursorCallback cb, - gpointer closure); - -gboolean e_book_get_book_view (EBook *book, - char *query, - EBookBookViewCallback cb, - gpointer closure); +gboolean e_book_get_book_view (EBook *book, + char *query, + EBookBookViewCallback cb, + gpointer closure); /* Getting the name of the repository. */ -char *e_book_get_name (EBook *book); +char *e_book_get_name (EBook *book); -GtkType e_book_get_type (void); +GtkType e_book_get_type (void); #define E_BOOK_TYPE (e_book_get_type ()) #define E_BOOK(o) (GTK_CHECK_CAST ((o), E_BOOK_TYPE, EBook)) diff --git a/addressbook/backend/idl/addressbook.idl b/addressbook/backend/idl/addressbook.idl index b8cf15c4ff..bbdabd713d 100644 --- a/addressbook/backend/idl/addressbook.idl +++ b/addressbook/backend/idl/addressbook.idl @@ -84,6 +84,8 @@ module Evolution { void check_connection (); + string get_static_capabilities (); + string get_name (); }; diff --git a/addressbook/backend/pas/pas-backend-file.c b/addressbook/backend/pas/pas-backend-file.c index b7eb57e81a..a54d32d424 100644 --- a/addressbook/backend/pas/pas-backend-file.c +++ b/addressbook/backend/pas/pas-backend-file.c @@ -1175,6 +1175,12 @@ pas_backend_file_remove_client (PASBackend *backend, pas_backend_last_client_gone (backend); } +static char * +pas_backend_file_get_static_capabilities (PASBackend *backend) +{ + return g_strdup("local"); +} + static gboolean pas_backend_file_construct (PASBackendFile *backend) { @@ -1230,10 +1236,11 @@ pas_backend_file_class_init (PASBackendFileClass *klass) parent_class = PAS_BACKEND_CLASS (klass); /* Set the virtual methods. */ - parent_class->load_uri = pas_backend_file_load_uri; - parent_class->get_uri = pas_backend_file_get_uri; - parent_class->add_client = pas_backend_file_add_client; - parent_class->remove_client = pas_backend_file_remove_client; + parent_class->load_uri = pas_backend_file_load_uri; + parent_class->get_uri = pas_backend_file_get_uri; + parent_class->add_client = pas_backend_file_add_client; + parent_class->remove_client = pas_backend_file_remove_client; + parent_class->get_static_capabilities = pas_backend_file_get_static_capabilities; object_class->destroy = pas_backend_file_destroy; } diff --git a/addressbook/backend/pas/pas-backend-ldap.c b/addressbook/backend/pas/pas-backend-ldap.c index 08fe3ef773..59c721415f 100644 --- a/addressbook/backend/pas/pas-backend-ldap.c +++ b/addressbook/backend/pas/pas-backend-ldap.c @@ -1352,6 +1352,12 @@ pas_backend_ldap_remove_client (PASBackend *backend, pas_backend_last_client_gone (backend); } +static char * +pas_backend_ldap_get_static_capabilites (PASBackend *backend) +{ + return g_strdup("net"); +} + static gboolean pas_backend_ldap_construct (PASBackendLDAP *backend) { @@ -1415,10 +1421,11 @@ pas_backend_ldap_class_init (PASBackendLDAPClass *klass) parent_class = PAS_BACKEND_CLASS (klass); /* Set the virtual methods. */ - parent_class->load_uri = pas_backend_ldap_load_uri; - parent_class->get_uri = pas_backend_ldap_get_uri; - parent_class->add_client = pas_backend_ldap_add_client; - parent_class->remove_client = pas_backend_ldap_remove_client; + parent_class->load_uri = pas_backend_ldap_load_uri; + parent_class->get_uri = pas_backend_ldap_get_uri; + parent_class->add_client = pas_backend_ldap_add_client; + parent_class->remove_client = pas_backend_ldap_remove_client; + parent_class->get_static_capabilities = pas_backend_ldap_get_static_capabilites; object_class->destroy = pas_backend_ldap_destroy; } diff --git a/addressbook/backend/pas/pas-backend.c b/addressbook/backend/pas/pas-backend.c index 3d315c2faf..1568918560 100644 --- a/addressbook/backend/pas/pas-backend.c +++ b/addressbook/backend/pas/pas-backend.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * Author: * Nat Friedman (nat@helixcode.com) @@ -95,6 +96,17 @@ pas_backend_remove_client (PASBackend *backend, CLASS (backend)->remove_client (backend, book); } +char * +pas_backend_get_static_capabilities (PASBackend *backend) +{ + g_return_val_if_fail (backend != NULL, NULL); + g_return_val_if_fail (PAS_IS_BACKEND (backend), NULL); + + g_assert (CLASS (backend)->get_static_capabilities != NULL); + + return CLASS (backend)->get_static_capabilities (backend); +} + /** * pas_backend_last_client_gone: * @backend: An addressbook backend. @@ -133,6 +145,10 @@ pas_backend_class_init (PASBackendClass *klass) GTK_TYPE_NONE, 0); gtk_object_class_add_signals (object_class, pas_backend_signals, LAST_SIGNAL); + + klass->add_client = NULL; + klass->remove_client = NULL; + klass->get_static_capabilities = NULL; } /** diff --git a/addressbook/backend/pas/pas-backend.h b/addressbook/backend/pas/pas-backend.h index a1d1a291fd..4045074284 100644 --- a/addressbook/backend/pas/pas-backend.h +++ b/addressbook/backend/pas/pas-backend.h @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * An abstract class which defines the API to a given backend. * There will be one PASBackend object for every URI which is loaded. @@ -43,6 +44,7 @@ typedef struct { const char *(* get_uri) (PASBackend *backend); gboolean (*add_client) (PASBackend *backend, Evolution_BookListener listener); void (*remove_client) (PASBackend *backend, PASBook *book); + char *(*get_static_capabilities) (PASBackend *backend); /* Notification signals */ void (* last_client_gone) (PASBackend *backend); @@ -50,18 +52,20 @@ typedef struct { typedef PASBackend * (*PASBackendFactoryFn) (void); -gboolean pas_backend_construct (PASBackend *backend); -gboolean pas_backend_load_uri (PASBackend *backend, - const char *uri); -const char *pas_backend_get_uri (PASBackend *backend); -gboolean pas_backend_add_client (PASBackend *backend, - Evolution_BookListener listener); -void pas_backend_remove_client (PASBackend *backend, - PASBook *book); +gboolean pas_backend_construct (PASBackend *backend); +gboolean pas_backend_load_uri (PASBackend *backend, + const char *uri); +const char *pas_backend_get_uri (PASBackend *backend); -void pas_backend_last_client_gone (PASBackend *backend); +gboolean pas_backend_add_client (PASBackend *backend, + Evolution_BookListener listener); +void pas_backend_remove_client (PASBackend *backend, + PASBook *book); +char *pas_backend_get_static_capabilities (PASBackend *backend); -GtkType pas_backend_get_type (void); +void pas_backend_last_client_gone (PASBackend *backend); + +GtkType pas_backend_get_type (void); #define PAS_BACKEND_TYPE (pas_backend_get_type ()) #define PAS_BACKEND(o) (GTK_CHECK_CAST ((o), PAS_BACKEND_TYPE, PASBackend)) diff --git a/addressbook/backend/pas/pas-book.c b/addressbook/backend/pas/pas-book.c index 55caf1dce7..4cd51237a1 100644 --- a/addressbook/backend/pas/pas-book.c +++ b/addressbook/backend/pas/pas-book.c @@ -241,6 +241,20 @@ impl_Evolution_Book_check_connection (PortableServer_Servant servant, pas_book_queue_check_connection (book); } +static char * +impl_Evolution_Book_get_static_capabilities (PortableServer_Servant servant, + CORBA_Environment *ev) +{ + PASBook *book = PAS_BOOK (bonobo_object_from_servant (servant)); + char *temp; + char *ret_val; + + temp = pas_backend_get_static_capabilities (book->priv->backend); + ret_val = CORBA_string_dup(temp); + g_free(temp); + return ret_val; +} + /** * pas_book_get_backend: */ @@ -598,15 +612,16 @@ pas_book_get_epv (void) epv = g_new0 (POA_Evolution_Book__epv, 1); - epv->get_vcard = impl_Evolution_Book_get_vcard; - epv->can_write = impl_Evolution_Book_can_write; - epv->can_write_card = impl_Evolution_Book_can_write_card; - epv->create_card = impl_Evolution_Book_create_card; - epv->remove_card = impl_Evolution_Book_remove_card; - epv->modify_card = impl_Evolution_Book_modify_card; - epv->check_connection = impl_Evolution_Book_check_connection; - epv->get_cursor = impl_Evolution_Book_get_cursor; - epv->get_book_view = impl_Evolution_Book_get_book_view; + epv->get_vcard = impl_Evolution_Book_get_vcard; + epv->can_write = impl_Evolution_Book_can_write; + epv->can_write_card = impl_Evolution_Book_can_write_card; + epv->create_card = impl_Evolution_Book_create_card; + epv->remove_card = impl_Evolution_Book_remove_card; + epv->modify_card = impl_Evolution_Book_modify_card; + epv->check_connection = impl_Evolution_Book_check_connection; + epv->get_static_capabilities = impl_Evolution_Book_get_static_capabilities; + epv->get_cursor = impl_Evolution_Book_get_cursor; + epv->get_book_view = impl_Evolution_Book_get_book_view; return epv; diff --git a/addressbook/backend/pas/pas-book.h b/addressbook/backend/pas/pas-book.h index 43a94b6600..9ca81eb25d 100644 --- a/addressbook/backend/pas/pas-book.h +++ b/addressbook/backend/pas/pas-book.h @@ -56,38 +56,37 @@ typedef char * (*PASBookGetVCardFn) (PASBook *book, const char *id); typedef gboolean (*PASBookCanWriteFn) (PASBook *book); typedef gboolean (*PASBookCanWriteCardFn) (PASBook *book, const char *id); -PASBook *pas_book_new (PASBackend *backend, - Evolution_BookListener listener, - PASBookGetVCardFn get_vcard, - PASBookCanWriteFn can_write, - PASBookCanWriteCardFn can_write_card); -PASBackend *pas_book_get_backend (PASBook *book); -Evolution_BookListener pas_book_get_listener (PASBook *book); -int pas_book_check_pending (PASBook *book); -PASRequest *pas_book_pop_request (PASBook *book); +PASBook *pas_book_new (PASBackend *backend, + Evolution_BookListener listener, + PASBookGetVCardFn get_vcard, + PASBookCanWriteFn can_write, + PASBookCanWriteCardFn can_write_card); +PASBackend *pas_book_get_backend (PASBook *book); +Evolution_BookListener pas_book_get_listener (PASBook *book); +int pas_book_check_pending (PASBook *book); +PASRequest *pas_book_pop_request (PASBook *book); +void pas_book_respond_open (PASBook *book, + Evolution_BookListener_CallStatus status); +void pas_book_respond_create (PASBook *book, + Evolution_BookListener_CallStatus status, + const char *id); +void pas_book_respond_remove (PASBook *book, + Evolution_BookListener_CallStatus status); +void pas_book_respond_modify (PASBook *book, + Evolution_BookListener_CallStatus status); +void pas_book_respond_get_cursor (PASBook *book, + Evolution_BookListener_CallStatus status, + PASCardCursor *cursor); +void pas_book_respond_get_book_view (PASBook *book, + Evolution_BookListener_CallStatus status, + PASBookView *book_view); +void pas_book_report_connection (PASBook *book, + gboolean connected); -void pas_book_respond_open (PASBook *book, - Evolution_BookListener_CallStatus status); -void pas_book_respond_create (PASBook *book, - Evolution_BookListener_CallStatus status, - const char *id); -void pas_book_respond_remove (PASBook *book, - Evolution_BookListener_CallStatus status); -void pas_book_respond_modify (PASBook *book, - Evolution_BookListener_CallStatus status); -void pas_book_respond_get_cursor (PASBook *book, - Evolution_BookListener_CallStatus status, - PASCardCursor *cursor); -void pas_book_respond_get_book_view (PASBook *book, - Evolution_BookListener_CallStatus status, - PASBookView *book_view); -void pas_book_report_connection (PASBook *book, - gboolean connected); - -gboolean pas_book_can_write (PASBook *book); -gboolean pas_book_can_write_card (PASBook *book, - const char *id); -GtkType pas_book_get_type (void); +gboolean pas_book_can_write (PASBook *book); +gboolean pas_book_can_write_card (PASBook *book, + const char *id); +GtkType pas_book_get_type (void); #define PAS_BOOK_TYPE (pas_book_get_type ()) #define PAS_BOOK(o) (GTK_CHECK_CAST ((o), PAS_BOOK_TYPE, PASBook)) |