aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/pas/pas-book.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/backend/pas/pas-book.c')
-rw-r--r--addressbook/backend/pas/pas-book.c27
1 files changed, 27 insertions, 0 deletions
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;