diff options
Diffstat (limited to 'addressbook/backend/ebook/e-book.c')
-rw-r--r-- | addressbook/backend/ebook/e-book.c | 65 |
1 files changed, 63 insertions, 2 deletions
diff --git a/addressbook/backend/ebook/e-book.c b/addressbook/backend/ebook/e-book.c index 2ec99c1a37..195418d29b 100644 --- a/addressbook/backend/ebook/e-book.c +++ b/addressbook/backend/ebook/e-book.c @@ -481,12 +481,38 @@ e_book_do_response_get_supported_fields (EBook *book, if (op->cb) { if (op->active) - ((EBookFieldsCallback) op->cb) (book, resp->status, resp->fields, op->closure); + ((EBookFieldsCallback) op->cb) (book, resp->status, resp->list, op->closure); else ((EBookFieldsCallback) op->cb) (book, E_BOOK_STATUS_CANCELLED, NULL, op->closure); } - g_object_unref(resp->fields); + g_object_unref(resp->list); + + e_book_op_free (op); +} + +static void +e_book_do_response_get_supported_auth_methods (EBook *book, + EBookListenerResponse *resp) +{ + EBookOp *op; + + op = e_book_pop_op (book); + + if (op == NULL) { + g_warning ("e_book_do_response_get_supported_auth_methods: Cannot find operation " + "in local op queue!\n"); + return; + } + + if (op->cb) { + if (op->active) + ((EBookAuthMethodsCallback) op->cb) (book, resp->status, resp->list, op->closure); + else + ((EBookAuthMethodsCallback) op->cb) (book, E_BOOK_STATUS_CANCELLED, NULL, op->closure); + } + + g_object_unref(resp->list); e_book_op_free (op); } @@ -531,6 +557,9 @@ e_book_check_listener_queue (EBookListener *listener, EBook *book) case GetSupportedFieldsResponse: e_book_do_response_get_supported_fields (book, resp); break; + case GetSupportedAuthMethodsResponse: + e_book_do_response_get_supported_auth_methods (book, resp); + break; case OpenProgressEvent: e_book_do_progress_event (book, resp); @@ -870,6 +899,38 @@ e_book_get_supported_fields (EBook *book, return tag; } +guint +e_book_get_supported_auth_methods (EBook *book, + EBookAuthMethodsCallback cb, + gpointer closure) +{ + CORBA_Environment ev; + guint tag; + + CORBA_exception_init (&ev); + + if (book->priv->load_state != URILoaded) { + g_warning ("e_book_unload_uri: No URI is loaded!\n"); + return 0; + } + + tag = e_book_queue_op (book, cb, closure, NULL); + + GNOME_Evolution_Addressbook_Book_getSupportedAuthMethods(book->priv->corba_book, &ev); + + if (ev._major != CORBA_NO_EXCEPTION) { + g_warning ("e_book_get_supported_auth_methods: Exception " + "during get_supported_auth_methods!\n"); + CORBA_exception_free (&ev); + e_book_unqueue_op (book); + return 0; + } + + CORBA_exception_free (&ev); + + return tag; +} + static gboolean e_book_construct (EBook *book) { |