aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/ebook/e-book-listener.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/backend/ebook/e-book-listener.c')
-rw-r--r--addressbook/backend/ebook/e-book-listener.c71
1 files changed, 65 insertions, 6 deletions
diff --git a/addressbook/backend/ebook/e-book-listener.c b/addressbook/backend/ebook/e-book-listener.c
index 107f71fedc..826a070148 100644
--- a/addressbook/backend/ebook/e-book-listener.c
+++ b/addressbook/backend/ebook/e-book-listener.c
@@ -1,3 +1,4 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* Exports the BookListener interface. Maintains a queue of messages
* which come in on the interface.
@@ -109,6 +110,38 @@ e_book_listener_queue_open_progress (EBookListener *listener,
static void
+e_book_listener_queue_create_card_response (EBookListener *listener,
+ EBookStatus status,
+ const char *id)
+{
+ EBookListenerResponse *resp;
+
+ resp = g_new0 (EBookListenerResponse, 1);
+
+ resp->op = CreateCardResponse;
+ resp->status = status;
+ resp->id = g_strdup (id);
+
+ e_book_listener_queue_response (listener, resp);
+}
+
+static void
+e_book_listener_queue_get_cursor_response (EBookListener *listener,
+ EBookStatus status,
+ Evolution_CardCursor cursor)
+{
+ EBookListenerResponse *resp;
+
+ resp = g_new0 (EBookListenerResponse, 1);
+
+ resp->op = GetCursorResponse;
+ resp->status = status;
+ resp->cursor = cursor;
+
+ e_book_listener_queue_response (listener, resp);
+}
+
+static void
e_book_listener_queue_link_status (EBookListener *listener,
gboolean connected)
{
@@ -139,15 +172,17 @@ e_book_listener_queue_generic_event (EBookListener *listener,
}
static void
-impl_BookListener_respond_create_card (PortableServer_Servant servant,
- const Evolution_BookListener_CallStatus status,
- CORBA_Environment *ev)
+impl_BookListener_respond_create_card (PortableServer_Servant servant,
+ const Evolution_BookListener_CallStatus status,
+ const Evolution_CardId id,
+ CORBA_Environment *ev)
{
EBookListener *listener = E_BOOK_LISTENER (bonobo_object_from_servant (servant));
- e_book_listener_queue_generic_response (
- listener, CreateCardResponse,
- e_book_listener_convert_status (status));
+ e_book_listener_queue_create_card_response (
+ listener,
+ e_book_listener_convert_status (status),
+ id);
}
static void
@@ -175,6 +210,28 @@ impl_BookListener_respond_modify_card (PortableServer_Servant servant,
}
static void
+impl_BookListener_respond_get_cursor (PortableServer_Servant servant,
+ const Evolution_BookListener_CallStatus status,
+ const Evolution_CardCursor cursor,
+ CORBA_Environment *ev)
+{
+ EBookListener *listener = E_BOOK_LISTENER (bonobo_object_from_servant (servant));
+ Evolution_CardCursor cursor_copy;
+
+ cursor_copy = CORBA_Object_duplicate (cursor, ev);
+
+ if (ev->_major != CORBA_NO_EXCEPTION) {
+ g_warning ("EBookListener: Exception while duplicating CardCursor!\n");
+ return;
+ }
+
+ e_book_listener_queue_get_cursor_response (
+ listener,
+ e_book_listener_convert_status (status),
+ cursor_copy);
+}
+
+static void
impl_BookListener_respond_open_book (PortableServer_Servant servant,
const Evolution_BookListener_CallStatus status,
const Evolution_Book book,
@@ -446,6 +503,8 @@ e_book_listener_get_epv (void)
epv->respond_remove_card = impl_BookListener_respond_remove_card;
epv->respond_modify_card = impl_BookListener_respond_modify_card;
+ epv->respond_get_cursor = impl_BookListener_respond_get_cursor;
+
epv->report_connection_status = impl_BookListener_report_connection_status;
epv->signal_card_changed = impl_BookListener_signal_card_changed;