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.c143
1 files changed, 69 insertions, 74 deletions
diff --git a/addressbook/backend/ebook/e-book-listener.c b/addressbook/backend/ebook/e-book-listener.c
index 4f2e278911..d58242dd30 100644
--- a/addressbook/backend/ebook/e-book-listener.c
+++ b/addressbook/backend/ebook/e-book-listener.c
@@ -25,7 +25,6 @@ static BonoboObjectClass *e_book_listener_parent_class;
POA_Evolution_BookListener__vepv e_book_listener_vepv;
struct _EBookListenerPrivate {
- EBook *book;
GList *response_queue;
gint idle_id;
};
@@ -142,31 +141,31 @@ e_book_listener_queue_get_cursor_response (EBookListener *listener,
}
static void
-e_book_listener_queue_link_status (EBookListener *listener,
- gboolean connected)
+e_book_listener_queue_get_view_response (EBookListener *listener,
+ EBookStatus status,
+ Evolution_BookView book_view)
{
EBookListenerResponse *resp;
-
+
resp = g_new0 (EBookListenerResponse, 1);
- resp->op = LinkStatusEvent;
- resp->connected = connected;
-
+ resp->op = GetBookViewResponse;
+ resp->status = status;
+ resp->book_view = book_view;
+
e_book_listener_queue_response (listener, resp);
}
static void
-e_book_listener_queue_generic_event (EBookListener *listener,
- EBookStatus status,
- const char *id)
+e_book_listener_queue_link_status (EBookListener *listener,
+ gboolean connected)
{
EBookListenerResponse *resp;
resp = g_new0 (EBookListenerResponse, 1);
resp->op = LinkStatusEvent;
- resp->status = status;
- resp->id = g_strdup (id);
+ resp->connected = connected;
e_book_listener_queue_response (listener, resp);
}
@@ -232,6 +231,28 @@ impl_BookListener_respond_get_cursor (PortableServer_Servant servant,
}
static void
+impl_BookListener_respond_get_view (PortableServer_Servant servant,
+ const Evolution_BookListener_CallStatus status,
+ const Evolution_BookView book_view,
+ CORBA_Environment *ev)
+{
+ EBookListener *listener = E_BOOK_LISTENER (bonobo_object_from_servant (servant));
+ Evolution_BookView book_view_copy;
+
+ book_view_copy = CORBA_Object_duplicate (book_view, ev);
+
+ if (ev->_major != CORBA_NO_EXCEPTION) {
+ g_warning ("EBookListener: Exception while duplicating BookView.\n");
+ return;
+ }
+
+ e_book_listener_queue_get_view_response (
+ listener,
+ e_book_listener_convert_status (status),
+ book_view_copy);
+}
+
+static void
impl_BookListener_respond_open_book (PortableServer_Servant servant,
const Evolution_BookListener_CallStatus status,
const Evolution_Book book,
@@ -276,54 +297,6 @@ impl_BookListener_report_connection_status (PortableServer_Servant servant,
listener, connected);
}
-static void
-impl_BookListener_signal_card_added (PortableServer_Servant servant,
- const Evolution_CardId id,
- CORBA_Environment *ev)
-{
- EBookListener *listener = E_BOOK_LISTENER (bonobo_object_from_servant (servant));
-
- e_book_listener_queue_generic_event (
- listener, CardAddedEvent, (const char *) id);
-}
-
-static void
-impl_BookListener_signal_card_removed (PortableServer_Servant servant,
- const Evolution_CardId id,
- CORBA_Environment *ev)
-{
- EBookListener *listener = E_BOOK_LISTENER (bonobo_object_from_servant (servant));
-
- e_book_listener_queue_generic_event (
- listener, CardRemovedEvent, (const char *) id);
-}
-
-static void
-impl_BookListener_signal_card_changed (PortableServer_Servant servant,
- const Evolution_CardId id,
- CORBA_Environment *ev)
-{
- EBookListener *listener = E_BOOK_LISTENER (bonobo_object_from_servant (servant));
-
- e_book_listener_queue_generic_event (
- listener, CardModifiedEvent, (const char *) id);
-}
-
-/**
- * e_book_listener_get_book:
- * @listener: the #EBookListener
- *
- * Returns: the #EBook associated with the @listener.
- */
-EBook *
-e_book_listener_get_book (EBookListener *listener)
-{
- g_return_val_if_fail (listener != NULL, NULL);
- g_return_val_if_fail (E_IS_BOOK_LISTENER (listener), NULL);
-
- return listener->priv->book;
-}
-
/**
* e_book_listener_check_pending:
* @listener: the #EBookListener
@@ -392,7 +365,7 @@ e_book_listener_convert_status (const Evolution_BookListener_CallStatus status)
}
static EBookListener *
-e_book_listener_construct (EBookListener *listener, EBook *book)
+e_book_listener_construct (EBookListener *listener)
{
POA_Evolution_BookListener *servant;
CORBA_Environment ev;
@@ -400,10 +373,6 @@ e_book_listener_construct (EBookListener *listener, EBook *book)
g_assert (listener != NULL);
g_assert (E_IS_BOOK_LISTENER (listener));
- g_assert (book != NULL);
- g_assert (E_IS_BOOK (book));
-
- listener->priv->book = book;
servant = (POA_Evolution_BookListener *) g_new0 (BonoboObjectServant, 1);
servant->vepv = &e_book_listener_vepv;
@@ -441,17 +410,14 @@ e_book_listener_construct (EBookListener *listener, EBook *book)
* Returns: a new #EBookListener
*/
EBookListener *
-e_book_listener_new (EBook *book)
+e_book_listener_new ()
{
EBookListener *listener;
EBookListener *retval;
- g_return_val_if_fail (book != NULL, NULL);
- g_return_val_if_fail (E_IS_BOOK (book), NULL);
-
listener = gtk_type_new (E_BOOK_LISTENER_TYPE);
- retval = e_book_listener_construct (listener, book);
+ retval = e_book_listener_construct (listener);
if (retval == NULL) {
g_warning ("e_book_listener_new: Error constructing "
@@ -497,6 +463,38 @@ e_book_listener_destroy (GtkObject *object)
CORBA_exception_free (&ev);
}
+ if (resp->cursor != CORBA_OBJECT_NIL) {
+ CORBA_Environment ev;
+
+ CORBA_exception_init (&ev);
+
+ CORBA_Object_release (resp->cursor, &ev);
+
+ if (ev._major != CORBA_NO_EXCEPTION) {
+ g_warning ("e_book_listener_destroy: "
+ "Exception destroying cursor "
+ "in response queue!\n");
+ }
+
+ CORBA_exception_free (&ev);
+ }
+
+ if (resp->book_view != CORBA_OBJECT_NIL) {
+ CORBA_Environment ev;
+
+ CORBA_exception_init (&ev);
+
+ CORBA_Object_release (resp->book_view, &ev);
+
+ if (ev._major != CORBA_NO_EXCEPTION) {
+ g_warning ("e_book_listener_destroy: "
+ "Exception destroying book_view "
+ "in response queue!\n");
+ }
+
+ CORBA_exception_free (&ev);
+ }
+
g_free (resp);
}
g_list_free (listener->priv->response_queue);
@@ -521,13 +519,10 @@ e_book_listener_get_epv (void)
epv->respond_modify_card = impl_BookListener_respond_modify_card;
epv->respond_get_cursor = impl_BookListener_respond_get_cursor;
+ epv->respond_get_view = impl_BookListener_respond_get_view;
epv->report_connection_status = impl_BookListener_report_connection_status;
- epv->signal_card_changed = impl_BookListener_signal_card_changed;
- epv->signal_card_removed = impl_BookListener_signal_card_removed;
- epv->signal_card_added = impl_BookListener_signal_card_added;
-
return epv;
}