aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/ebook/e-book-view-listener.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/backend/ebook/e-book-view-listener.c')
-rw-r--r--addressbook/backend/ebook/e-book-view-listener.c174
1 files changed, 104 insertions, 70 deletions
diff --git a/addressbook/backend/ebook/e-book-view-listener.c b/addressbook/backend/ebook/e-book-view-listener.c
index ce46fd1100..5e8c9300ae 100644
--- a/addressbook/backend/ebook/e-book-view-listener.c
+++ b/addressbook/backend/ebook/e-book-view-listener.c
@@ -10,10 +10,11 @@
*/
#include <config.h>
-#include <gtk/gtksignal.h>
+#include <bonobo/bonobo-main.h>
#include "e-book-view-listener.h"
#include "e-book-view.h"
#include "e-card.h"
+#include "e-book-marshal.h"
static EBookViewStatus e_book_view_listener_convert_status (GNOME_Evolution_Addressbook_BookViewListener_CallStatus status);
@@ -24,10 +25,13 @@ enum {
static guint e_book_view_listener_signals [LAST_SIGNAL];
-static BonoboObjectClass *e_book_view_listener_parent_class;
+static BonoboObjectClass *parent_class;
POA_GNOME_Evolution_Addressbook_BookViewListener__vepv e_book_view_listener_vepv;
struct _EBookViewListenerPrivate {
+ EBookViewListenerServant *servant;
+ GNOME_Evolution_Addressbook_BookViewListener corba_objref;
+
GList *response_queue;
gint timeout_id;
@@ -44,7 +48,7 @@ e_book_view_listener_check_queue (EBookViewListener *listener)
listener->priv->timeout_lock = TRUE;
if (listener->priv->response_queue != NULL && !listener->priv->stopped) {
- gtk_signal_emit (GTK_OBJECT (listener), e_book_view_listener_signals [RESPONSES_QUEUED]);
+ g_signal_emit (listener, e_book_view_listener_signals [RESPONSES_QUEUED], 0);
}
if (listener->priv->response_queue == NULL || listener->priv->stopped) {
@@ -68,7 +72,7 @@ e_book_view_listener_queue_response (EBookViewListener *listener,
if (listener->priv->stopped) {
/* Free response and return */
g_free (response->id);
- g_list_foreach (response->cards, (GFunc) gtk_object_unref, NULL);
+ g_list_foreach (response->cards, (GFunc) g_object_unref, NULL);
g_list_free (response->cards);
g_free (response->message);
g_free (response);
@@ -215,7 +219,7 @@ impl_BookViewListener_notify_card_added (PortableServer_Servant servant,
static void
impl_BookViewListener_notify_card_removed (PortableServer_Servant servant,
- const GNOME_Evolution_Addressbook_CardId id,
+ const CORBA_char* id,
CORBA_Environment *ev)
{
EBookViewListener *listener = E_BOOK_VIEW_LISTENER (bonobo_object_from_servant (servant));
@@ -327,41 +331,70 @@ e_book_view_listener_convert_status (const GNOME_Evolution_Addressbook_BookViewL
}
}
-static EBookViewListener *
-e_book_view_listener_construct (EBookViewListener *listener)
+void
+e_book_view_listener_construct (EBookViewListener *listener,
+ GNOME_Evolution_Addressbook_BookViewListener corba_objref)
{
- POA_GNOME_Evolution_Addressbook_BookViewListener *servant;
- CORBA_Environment ev;
- CORBA_Object obj;
+ EBookViewListenerPrivate *priv;
+
+ g_return_if_fail (listener != NULL);
+ g_return_if_fail (corba_objref != CORBA_OBJECT_NIL);
+
+ priv = listener->priv;
+
+ g_return_if_fail (priv->corba_objref == CORBA_OBJECT_NIL);
- g_assert (listener != NULL);
- g_assert (E_IS_BOOK_VIEW_LISTENER (listener));
+ priv->corba_objref = corba_objref;
+}
- servant = (POA_GNOME_Evolution_Addressbook_BookViewListener *) g_new0 (BonoboObjectServant, 1);
- servant->vepv = &e_book_view_listener_vepv;
+static EBookViewListenerServant *
+create_servant (EBookViewListener *listener)
+{
+ EBookViewListenerServant *servant;
+ POA_GNOME_Evolution_Addressbook_BookViewListener *corba_servant;
+ CORBA_Environment ev;
CORBA_exception_init (&ev);
- POA_GNOME_Evolution_Addressbook_BookViewListener__init ((PortableServer_Servant) servant, &ev);
+ servant = g_new0 (EBookViewListenerServant, 1);
+ corba_servant = (POA_GNOME_Evolution_Addressbook_BookViewListener *) servant;
+
+ corba_servant->vepv = &e_book_view_listener_vepv;
+ POA_GNOME_Evolution_Addressbook_BookViewListener__init ((PortableServer_Servant) corba_servant, &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
g_free (servant);
CORBA_exception_free (&ev);
-
return NULL;
}
+ servant->object = listener;
+
CORBA_exception_free (&ev);
- obj = bonobo_object_activate_servant (BONOBO_OBJECT (listener), servant);
- if (obj == CORBA_OBJECT_NIL) {
- g_free (servant);
+ return servant;
+}
- return NULL;
+static GNOME_Evolution_Addressbook_BookViewListener
+activate_servant (EBookViewListener *listener,
+ POA_GNOME_Evolution_Addressbook_BookViewListener *servant)
+{
+ GNOME_Evolution_Addressbook_BookViewListener corba_object;
+ CORBA_Environment ev;
+
+ CORBA_exception_init (&ev);
+
+ CORBA_free (PortableServer_POA_activate_object (bonobo_poa (), servant, &ev));
+
+ corba_object = PortableServer_POA_servant_to_reference (bonobo_poa(), servant, &ev);
+
+ if (ev._major == CORBA_NO_EXCEPTION && ! CORBA_Object_is_nil (corba_object, &ev)) {
+ CORBA_exception_free (&ev);
+ return corba_object;
}
- bonobo_object_construct (BONOBO_OBJECT (listener), obj);
+ CORBA_exception_free (&ev);
- return listener;
+ return CORBA_OBJECT_NIL;
}
/**
@@ -376,26 +409,25 @@ EBookViewListener *
e_book_view_listener_new ()
{
EBookViewListener *listener;
- EBookViewListener *retval;
+ EBookViewListenerPrivate *priv;
+ GNOME_Evolution_Addressbook_BookViewListener corba_objref;
- listener = gtk_type_new (E_BOOK_VIEW_LISTENER_TYPE);
+ listener = g_object_new (E_TYPE_BOOK_VIEW_LISTENER, NULL);
+ priv = listener->priv;
- retval = e_book_view_listener_construct (listener);
+ priv->servant = create_servant (listener);
+ corba_objref = activate_servant (listener, (POA_GNOME_Evolution_Addressbook_BookViewListener *) priv->servant);
- if (retval == NULL) {
- g_warning ("e_book_view_listener_new: Error constructing "
- "EBookViewListener!\n");
- bonobo_object_unref (BONOBO_OBJECT (listener));
- return NULL;
- }
+ e_book_view_listener_construct (listener, corba_objref);
- return retval;
+ return listener;
}
static void
e_book_view_listener_init (EBookViewListener *listener)
{
listener->priv = g_new0 (EBookViewListenerPrivate, 1);
+ listener->priv->corba_objref = CORBA_OBJECT_NIL;
listener->priv->response_queue = NULL;
listener->priv->timeout_id = 0;
listener->priv->timeout_lock = FALSE;
@@ -410,7 +442,7 @@ e_book_view_listener_stop (EBookViewListener *listener)
}
static void
-e_book_view_listener_destroy (GtkObject *object)
+e_book_view_listener_dispose (GObject *object)
{
EBookViewListener *listener = E_BOOK_VIEW_LISTENER (object);
GList *l;
@@ -427,7 +459,7 @@ e_book_view_listener_destroy (GtkObject *object)
g_free(resp->id);
- g_list_foreach(resp->cards, (GFunc) gtk_object_unref, NULL);
+ g_list_foreach(resp->cards, (GFunc) g_object_unref, NULL);
g_list_free(resp->cards);
resp->cards = NULL;
@@ -440,76 +472,78 @@ e_book_view_listener_destroy (GtkObject *object)
g_free (listener->priv);
listener->priv = NULL;
-
- GTK_OBJECT_CLASS (e_book_view_listener_parent_class)->destroy (object);
+
+ G_OBJECT_CLASS (parent_class)->dispose (object);
}
-POA_GNOME_Evolution_Addressbook_BookViewListener__epv *
-e_book_view_listener_get_epv (void)
+static void
+corba_class_init (void)
{
+ POA_GNOME_Evolution_Addressbook_BookViewListener__vepv *vepv;
POA_GNOME_Evolution_Addressbook_BookViewListener__epv *epv;
+ PortableServer_ServantBase__epv *base_epv;
- epv = g_new0 (POA_GNOME_Evolution_Addressbook_BookViewListener__epv, 1);
+ base_epv = g_new0 (PortableServer_ServantBase__epv, 1);
+ base_epv->_private = NULL;
+ base_epv->finalize = NULL;
+ base_epv->default_POA = NULL;
+
+ epv = g_new0 (POA_GNOME_Evolution_Addressbook_BookViewListener__epv, 1);
epv->notifyCardChanged = impl_BookViewListener_notify_card_changed;
epv->notifyCardRemoved = impl_BookViewListener_notify_card_removed;
epv->notifyCardAdded = impl_BookViewListener_notify_card_added;
epv->notifySequenceComplete = impl_BookViewListener_notify_sequence_complete;
epv->notifyStatusMessage = impl_BookViewListener_notify_status_message;
- return epv;
-}
-
-static void
-e_book_view_listener_corba_class_init (void)
-{
- e_book_view_listener_vepv.Bonobo_Unknown_epv = bonobo_object_get_epv ();
- e_book_view_listener_vepv.GNOME_Evolution_Addressbook_BookViewListener_epv = e_book_view_listener_get_epv ();
+ vepv = &e_book_view_listener_vepv;
+ vepv->_base_epv = base_epv;
+ vepv->GNOME_Evolution_Addressbook_BookViewListener_epv = epv;
}
static void
e_book_view_listener_class_init (EBookViewListenerClass *klass)
{
- GtkObjectClass *object_class = (GtkObjectClass *) klass;
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
- e_book_view_listener_parent_class = gtk_type_class (bonobo_object_get_type ());
+ parent_class = g_type_class_ref (BONOBO_TYPE_OBJECT);
e_book_view_listener_signals [RESPONSES_QUEUED] =
- gtk_signal_new ("responses_queued",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EBookViewListenerClass, responses_queued),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, e_book_view_listener_signals, LAST_SIGNAL);
+ g_signal_new ("responses_queued",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EBookViewListenerClass, responses_queued),
+ NULL, NULL,
+ e_book_marshal_NONE__NONE,
+ G_TYPE_NONE, 0);
- object_class->destroy = e_book_view_listener_destroy;
+ object_class->dispose = e_book_view_listener_dispose;
- e_book_view_listener_corba_class_init ();
+ corba_class_init ();
}
/**
* e_book_view_listener_get_type:
*/
-GtkType
+GType
e_book_view_listener_get_type (void)
{
- static GtkType type = 0;
+ static GType type = 0;
if (! type) {
- GtkTypeInfo info = {
- "EBookViewListener",
- sizeof (EBookViewListener),
+ GTypeInfo info = {
sizeof (EBookViewListenerClass),
- (GtkClassInitFunc) e_book_view_listener_class_init,
- (GtkObjectInitFunc) e_book_view_listener_init,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
+ NULL, /* base_class_init */
+ NULL, /* base_class_finalize */
+ (GClassInitFunc) e_book_view_listener_class_init,
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (EBookViewListener),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) e_book_view_listener_init
};
- type = gtk_type_unique (bonobo_object_get_type (), &info);
+ type = g_type_register_static (G_TYPE_OBJECT, "EBookViewListener", &info, 0);
}
return type;