diff options
-rw-r--r-- | addressbook/ChangeLog | 24 | ||||
-rw-r--r-- | addressbook/backend/idl/addressbook.idl | 4 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-backend-file.c | 10 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-backend-ldap.c | 10 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-backend.c | 13 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-backend.h | 3 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-book.c | 27 |
7 files changed, 91 insertions, 0 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index 6aae6c32d7..7a297fcc9e 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,3 +1,27 @@ +2001-02-17 Chris Toshok <toshok@ximian.com> + + * backend/idl/addressbook.idl: add sequence<string> typedef, and + add getSupportedFields method. + + * backend/pas/pas-book.c + (impl_GNOME_Evolution_Addressbook_Book_getSupportedFields): new + function. + + * backend/pas/pas-backend.c (pas_backend_class_init): init + get_supported_fields = NULL. + (pas_backend_get_supported_fields): new function. + + * backend/pas/pas-backend.h: add prototype for + pas_backend_get_supported_fields. + + * backend/pas/pas-backend-file.c + (pas_backend_file_get_supported_fields): new function. + (pas_backend_file_class_init): fill in get_supported_fields. + + * backend/pas/pas-backend-ldap.c + (pas_backend_ldap_get_supported_fields): new function. + (pas_backend_ldap_class_init): fill in get_supported_fields. + 2001-02-14 Christopher James Lahey <clahey@ximian.com> * backend/pas/pas-backend-ldap.c: Undefine E_STRING_PROP and diff --git a/addressbook/backend/idl/addressbook.idl b/addressbook/backend/idl/addressbook.idl index 14d35dc934..87a7992f7b 100644 --- a/addressbook/backend/idl/addressbook.idl +++ b/addressbook/backend/idl/addressbook.idl @@ -15,6 +15,7 @@ module Addressbook { typedef string CardId; typedef string VCard; typedef sequence<VCard> VCardList; + typedef sequence<string> stringlist; interface CardCursor : Bonobo::Unknown { long count (); @@ -90,6 +91,8 @@ module Addressbook { void checkConnection (); + stringlist getSupportedFields (); + string getStaticCapabilities (); string getName (); @@ -105,6 +108,7 @@ module Addressbook { ProtocolNotSupported, AuthenticationFailed, AuthenticationRequired, + UnsupportedField, OtherError }; diff --git a/addressbook/backend/pas/pas-backend-file.c b/addressbook/backend/pas/pas-backend-file.c index f9e2c53a2d..94e65c9d81 100644 --- a/addressbook/backend/pas/pas-backend-file.c +++ b/addressbook/backend/pas/pas-backend-file.c @@ -1428,6 +1428,15 @@ pas_backend_file_get_static_capabilities (PASBackend *backend) return g_strdup("local"); } +static int +pas_backend_file_get_supported_fields (PASBackend *backend, + char ***fields) +{ + printf ("in pas_backend_file_get_supported_fields\n"); + *fields = NULL; + return 0; +} + static gboolean pas_backend_file_construct (PASBackendFile *backend) { @@ -1488,6 +1497,7 @@ pas_backend_file_class_init (PASBackendFileClass *klass) 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; + parent_class->get_supported_fields = pas_backend_file_get_supported_fields; 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 9ac3a9f457..60e3aa0c88 100644 --- a/addressbook/backend/pas/pas-backend-ldap.c +++ b/addressbook/backend/pas/pas-backend-ldap.c @@ -2215,6 +2215,15 @@ pas_backend_ldap_get_static_capabilites (PASBackend *backend) return g_strdup("net"); } +static int +pas_backend_ldap_get_supported_fields (PASBackend *backend, + char ***fields) +{ + printf ("in pas_backend_ldap_get_supported_fields\n"); + *fields = NULL; + return 0; +} + static gboolean pas_backend_ldap_construct (PASBackendLDAP *backend) { @@ -2283,6 +2292,7 @@ pas_backend_ldap_class_init (PASBackendLDAPClass *klass) 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; + parent_class->get_supported_fields = pas_backend_ldap_get_supported_fields; object_class->destroy = pas_backend_ldap_destroy; } diff --git a/addressbook/backend/pas/pas-backend.c b/addressbook/backend/pas/pas-backend.c index 22b7184813..30bfdf773f 100644 --- a/addressbook/backend/pas/pas-backend.c +++ b/addressbook/backend/pas/pas-backend.c @@ -107,6 +107,18 @@ pas_backend_get_static_capabilities (PASBackend *backend) return CLASS (backend)->get_static_capabilities (backend); } +int +pas_backend_get_supported_fields (PASBackend *backend, + char ***fields) +{ + g_return_val_if_fail (backend != NULL, NULL); + g_return_val_if_fail (PAS_IS_BACKEND (backend), NULL); + + g_assert (CLASS (backend)->get_supported_fields != NULL); + + return CLASS (backend)->get_supported_fields (backend, fields); +} + /** * pas_backend_last_client_gone: * @backend: An addressbook backend. @@ -149,6 +161,7 @@ pas_backend_class_init (PASBackendClass *klass) klass->add_client = NULL; klass->remove_client = NULL; klass->get_static_capabilities = NULL; + klass->get_supported_fields = NULL; } /** diff --git a/addressbook/backend/pas/pas-backend.h b/addressbook/backend/pas/pas-backend.h index be08d48950..547824ea44 100644 --- a/addressbook/backend/pas/pas-backend.h +++ b/addressbook/backend/pas/pas-backend.h @@ -45,6 +45,7 @@ typedef struct { gboolean (*add_client) (PASBackend *backend, GNOME_Evolution_Addressbook_BookListener listener); void (*remove_client) (PASBackend *backend, PASBook *book); char *(*get_static_capabilities) (PASBackend *backend); + int (*get_supported_fields) (PASBackend *backend, char ***fields); /* Notification signals */ void (* last_client_gone) (PASBackend *backend); @@ -63,6 +64,8 @@ void pas_backend_remove_client (PASBackend *backen PASBook *book); char *pas_backend_get_static_capabilities (PASBackend *backend); +int pas_backend_get_supported_fields (PASBackend *backend, + char ***fields); void pas_backend_last_client_gone (PASBackend *backend); GtkType pas_backend_get_type (void); diff --git a/addressbook/backend/pas/pas-book.c b/addressbook/backend/pas/pas-book.c index 783c699603..2cb6c2f142 100644 --- a/addressbook/backend/pas/pas-book.c +++ b/addressbook/backend/pas/pas-book.c @@ -315,6 +315,32 @@ impl_GNOME_Evolution_Addressbook_Book_getStaticCapabilities (PortableServer_Serv return ret_val; } +static GNOME_Evolution_Addressbook_stringlist * +impl_GNOME_Evolution_Addressbook_Book_getSupportedFields (PortableServer_Servant servant, + CORBA_Environment *ev) +{ + PASBook *book = PAS_BOOK (bonobo_object_from_servant (servant)); + GNOME_Evolution_Addressbook_stringlist *stringlist; + char **supported_fields; + int num_fields, i; + + stringlist = GNOME_Evolution_Addressbook_stringlist__alloc (); + num_fields = pas_backend_get_supported_fields (book->priv->backend, &supported_fields); + + stringlist->_buffer = CORBA_sequence_CORBA_string_allocbuf (num_fields); + stringlist->_maximum = num_fields; + stringlist->_length = num_fields; + + for (i = 0; num_fields; i++) { + stringlist->_buffer[i] = CORBA_string_dup (supported_fields[i]); + g_free (supported_fields[i]); + } + + g_free (supported_fields); + + return stringlist; +} + /** * pas_book_get_backend: */ @@ -729,6 +755,7 @@ pas_book_get_epv (void) epv->modifyCard = impl_GNOME_Evolution_Addressbook_Book_modifyCard; epv->checkConnection = impl_GNOME_Evolution_Addressbook_Book_checkConnection; epv->getStaticCapabilities = impl_GNOME_Evolution_Addressbook_Book_getStaticCapabilities; + epv->getSupportedFields = impl_GNOME_Evolution_Addressbook_Book_getSupportedFields; epv->getCursor = impl_GNOME_Evolution_Addressbook_Book_getCursor; epv->getBookView = impl_GNOME_Evolution_Addressbook_Book_getBookView; epv->getChanges = impl_GNOME_Evolution_Addressbook_Book_getChanges; |