aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/pas/pas-book.c
diff options
context:
space:
mode:
authorChris Toshok <toshok@ximian.com>2001-02-21 17:19:15 +0800
committerChris Toshok <toshok@src.gnome.org>2001-02-21 17:19:15 +0800
commit65438eb13d8d8f82f4a9fde03ed538809fe9be1b (patch)
treeebf004f01aa2e877b9d3813da946fc8ca44d21d3 /addressbook/backend/pas/pas-book.c
parent2f099e392d0dfae27282b5d87aa3c5d2acea22de (diff)
downloadgsoc2013-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.c71
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:
*/