diff options
author | Chris Toshok <toshok@ximian.com> | 2001-02-21 17:19:15 +0800 |
---|---|---|
committer | Chris Toshok <toshok@src.gnome.org> | 2001-02-21 17:19:15 +0800 |
commit | 65438eb13d8d8f82f4a9fde03ed538809fe9be1b (patch) | |
tree | ebf004f01aa2e877b9d3813da946fc8ca44d21d3 /addressbook/backend/pas/pas-book.c | |
parent | 2f099e392d0dfae27282b5d87aa3c5d2acea22de (diff) | |
download | gsoc2013-evolution-65438eb13d8d8f82f4a9fde03ed538809fe9be1b.tar gsoc2013-evolution-65438eb13d8d8f82f4a9fde03ed538809fe9be1b.tar.gz gsoc2013-evolution-65438eb13d8d8f82f4a9fde03ed538809fe9be1b.tar.bz2 gsoc2013-evolution-65438eb13d8d8f82f4a9fde03ed538809fe9be1b.tar.lz gsoc2013-evolution-65438eb13d8d8f82f4a9fde03ed538809fe9be1b.tar.xz gsoc2013-evolution-65438eb13d8d8f82f4a9fde03ed538809fe9be1b.tar.zst gsoc2013-evolution-65438eb13d8d8f82f4a9fde03ed538809fe9be1b.zip |
new function. (impl_GNOME_Evolution_Addressbook_Book_getSupportedFields):
2001-02-21 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-book.c (pas_book_queue_get_supported_fields):
new function.
(impl_GNOME_Evolution_Addressbook_Book_getSupportedFields): track
change to idl.
(pas_book_respond_get_supported_fields): new function.
* backend/pas/pas-book.h: add GetSupportedFields to the
PASOperation enum. Also, add a stringlist field to the PASRequest
struct. lastly, add a prototype for
pas_book_respond_get_supported_fields.
* backend/pas/pas-backend.h: remove prototype for
pas_backend_get_supported_fields, and remove it from the vtable.
* backend/pas/pas-backend.c (pas_backend_get_supported_fields):
remove.
(pas_backend_class_init): no vtable entry for get_supported_fields
anymore.
* backend/pas/pas-backend-ldap.c
(pas_backend_ldap_process_get_supported_fields): new function.
(pas_backend_ldap_process_client_requests): add case for
GetSupportedFields.
(pas_backend_ldap_class_init): get_supported_fields isn't in
vtable anymore.
* backend/pas/pas-backend-file.c
(pas_backend_file_process_get_supported_fields): new function.
(pas_backend_file_process_client_requests): add case for
GetSupportedFields.
(pas_backend_file_class_init): get_supported_fields isn't in
vtable anymore.
* backend/idl/addressbook.idl: Book::getSupportedFields now
returns void and add BookListener::notifySupportedFields.
* backend/ebook/test-client.c (get_fields_cb): new function.
(auth_user_cb): track change to e_book_get_supported_fields.
* backend/ebook/e-book.c
(e_book_do_response_get_supported_fields): new function.
(e_book_check_listener_queue): add case
GetSupportedFieldsResponse.
(e_book_get_supported_fields): switch to async model.
* backend/ebook/e-book.h: switch e_book_get_supported_fields to an
async model.
* backend/ebook/e-book-listener.c
(e_book_listener_queue_get_supported_fields_response): new
function.
(impl_BookListener_response_get_supported_fields): new function.
(e_book_listener_get_epv): fill in epv's "notifySupportedFields"
* backend/ebook/e-book-listener.h: add an async response for
GetSupportedFields and add a stringlist member to the
EBookListenerResponse struct.
svn path=/trunk/; revision=8316
Diffstat (limited to 'addressbook/backend/pas/pas-book.c')
-rw-r--r-- | addressbook/backend/pas/pas-book.c | 71 |
1 files changed, 52 insertions, 19 deletions
diff --git a/addressbook/backend/pas/pas-book.c b/addressbook/backend/pas/pas-book.c index 2cb6c2f142..6add0987fc 100644 --- a/addressbook/backend/pas/pas-book.c +++ b/addressbook/backend/pas/pas-book.c @@ -7,6 +7,7 @@ #include <config.h> #include <gtk/gtksignal.h> +#include "e-util/e-list.h" #include "pas-book.h" static BonoboObjectClass *pas_book_parent_class; @@ -120,6 +121,18 @@ pas_book_queue_authenticate_user (PASBook *book, } static void +pas_book_queue_get_supported_fields (PASBook *book) +{ + PASRequest *req; + + req = g_new0 (PASRequest, 1); + req->op = GetSupportedFields; + + pas_book_queue_request (book, req); +} + + +static void pas_book_queue_get_book_view (PASBook *book, const GNOME_Evolution_Addressbook_BookViewListener listener, const char *search) { PASRequest *req; @@ -315,30 +328,13 @@ impl_GNOME_Evolution_Addressbook_Book_getStaticCapabilities (PortableServer_Serv return ret_val; } -static GNOME_Evolution_Addressbook_stringlist * +static void 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_queue_get_supported_fields (book); } /** @@ -523,6 +519,43 @@ pas_book_respond_authenticate_user (PASBook *book, CORBA_exception_free (&ev); } +void +pas_book_respond_get_supported_fields (PASBook *book, + GNOME_Evolution_Addressbook_BookListener_CallStatus status, + EList *fields) +{ + CORBA_Environment ev; + GNOME_Evolution_Addressbook_stringlist stringlist; + int num_fields; + EIterator *iter; + int i; + + CORBA_exception_init (&ev); + + num_fields = e_list_length (fields); + + stringlist._buffer = CORBA_sequence_CORBA_string_allocbuf (num_fields); + stringlist._maximum = num_fields; + stringlist._length = num_fields; + + iter = e_list_get_iterator (fields); + + for (i = 0; e_iterator_is_valid (iter); e_iterator_next (iter), i ++) { + stringlist._buffer[i] = CORBA_string_dup (e_iterator_get(iter)); + } + + gtk_object_unref (GTK_OBJECT (fields)); + + GNOME_Evolution_Addressbook_BookListener_notifySupportedFields ( + book->priv->listener, status, + &stringlist, + &ev); + + CORBA_exception_free (&ev); + + CORBA_free(stringlist._buffer); +} + /** * pas_book_respond_get_cursor: */ |