aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/pcs
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/pcs')
-rw-r--r--calendar/pcs/cal-factory.c317
-rw-r--r--calendar/pcs/cal-factory.h34
-rw-r--r--calendar/pcs/cal.c350
-rw-r--r--calendar/pcs/cal.h12
4 files changed, 218 insertions, 495 deletions
diff --git a/calendar/pcs/cal-factory.c b/calendar/pcs/cal-factory.c
index d0bbd278d1..2abbd0b6d1 100644
--- a/calendar/pcs/cal-factory.c
+++ b/calendar/pcs/cal-factory.c
@@ -30,11 +30,11 @@
#include "cal-factory.h"
#include "job.h"
-
-
-/* OAF ID for registration */
+#define PARENT_TYPE BONOBO_X_OBJECT_TYPE
#define CAL_FACTORY_OAF_ID "OAFIID:GNOME_Evolution_Wombat_CalendarFactory"
+static BonoboXObjectClass *parent_class;
+
/* Private part of the CalFactory structure */
struct _CalFactoryPrivate {
/* Hash table from URI method strings to GtkType * for backend class types */
@@ -47,104 +47,13 @@ struct _CalFactoryPrivate {
guint registered : 1;
};
-
-
/* Signal IDs */
-enum {
+enum SIGNALS {
LAST_CALENDAR_GONE,
LAST_SIGNAL
};
-static void cal_factory_class_init (CalFactoryClass *class);
-static void cal_factory_init (CalFactory *factory);
-static void cal_factory_destroy (GtkObject *object);
-
-static POA_GNOME_Evolution_Calendar_CalFactory__vepv cal_factory_vepv;
-
-static BonoboObjectClass *parent_class;
-
-static guint cal_factory_signals[LAST_SIGNAL];
-
-
-
-/**
- * cal_factory_get_type:
- * @void:
- *
- * Registers the #CalFactory class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #CalFactory class.
- **/
-GtkType
-cal_factory_get_type (void)
-{
- static GtkType cal_factory_type = 0;
-
- if (!cal_factory_type) {
- static const GtkTypeInfo cal_factory_info = {
- "CalFactory",
- sizeof (CalFactory),
- sizeof (CalFactoryClass),
- (GtkClassInitFunc) cal_factory_class_init,
- (GtkObjectInitFunc) cal_factory_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- cal_factory_type = gtk_type_unique (bonobo_object_get_type (), &cal_factory_info);
- }
-
- return cal_factory_type;
-}
-
-/* CORBA class initialization function for the calendar factory */
-static void
-init_cal_factory_corba_class (void)
-{
- cal_factory_vepv.Bonobo_Unknown_epv = bonobo_object_get_epv ();
- cal_factory_vepv.GNOME_Evolution_Calendar_CalFactory_epv = cal_factory_get_epv ();
-}
-
-/* Class initialization function for the calendar factory */
-static void
-cal_factory_class_init (CalFactoryClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (bonobo_object_get_type ());
-
- cal_factory_signals[LAST_CALENDAR_GONE] =
- gtk_signal_new ("last_calendar_gone",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalFactoryClass, last_calendar_gone),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, cal_factory_signals, LAST_SIGNAL);
-
- object_class->destroy = cal_factory_destroy;
-
- init_cal_factory_corba_class ();
-}
-
-/* Object initialization function for the calendar factory */
-static void
-cal_factory_init (CalFactory *factory)
-{
- CalFactoryPrivate *priv;
-
- priv = g_new0 (CalFactoryPrivate, 1);
- factory->priv = priv;
-
- priv->methods = g_hash_table_new (g_str_hash, g_str_equal);
- priv->backends = g_hash_table_new (gnome_vfs_uri_hash, gnome_vfs_uri_hequal);
- priv->registered = FALSE;
-}
+static guint signals[LAST_SIGNAL];
/* Frees a method/GtkType * pair from the methods hash table */
static void
@@ -174,46 +83,6 @@ free_backend (gpointer key, gpointer value, gpointer data)
gtk_object_unref (GTK_OBJECT (backend));
}
-/* Destroy handler for the calendar */
-static void
-cal_factory_destroy (GtkObject *object)
-{
- CalFactory *factory;
- CalFactoryPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_CAL_FACTORY (object));
-
- factory = CAL_FACTORY (object);
- priv = factory->priv;
-
- g_hash_table_foreach (priv->methods, free_method, NULL);
- g_hash_table_destroy (priv->methods);
- priv->methods = NULL;
-
- /* Should we assert that there are no more backends? */
-
- g_hash_table_foreach (priv->backends, free_backend, NULL);
- g_hash_table_destroy (priv->backends);
- priv->backends = NULL;
-
- if (priv->registered) {
- CORBA_Object obj;
-
- obj = bonobo_object_corba_objref (BONOBO_OBJECT (factory));
- oaf_active_server_unregister (CAL_FACTORY_OAF_ID, obj);
- priv->registered = FALSE;
- }
-
- g_free (priv);
- factory->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
/* Opening calendars */
/* Looks up a calendar backend in a factory's hash table of uri->cal */
@@ -263,7 +132,7 @@ backend_last_client_gone_cb (CalBackend *backend, gpointer data)
/* Notify upstream if there are no more backends */
if (g_hash_table_size (priv->backends) == 0)
- gtk_signal_emit (GTK_OBJECT (factory), cal_factory_signals[LAST_CALENDAR_GONE]);
+ gtk_signal_emit (GTK_OBJECT (factory), signals[LAST_CALENDAR_GONE]);
}
/* Adds a backend to the calendar factory's hash table */
@@ -418,7 +287,7 @@ add_calendar_client (CalFactory *factory, CalBackend *backend, GNOME_Evolution_C
GNOME_Evolution_Calendar_Listener_notifyCalOpened (
listener,
GNOME_Evolution_Calendar_Listener_SUCCESS,
- bonobo_object_corba_objref (BONOBO_OBJECT (cal)),
+ BONOBO_OBJREF (cal),
&ev);
if (ev._major != CORBA_NO_EXCEPTION) {
@@ -502,15 +371,12 @@ open_fn (gpointer data)
-/* CORBA servant implementation */
-
-/* CalFactory::open method */
static void
-CalFactory_open (PortableServer_Servant servant,
- const CORBA_char *uri,
- CORBA_boolean only_if_exists,
- GNOME_Evolution_Calendar_Listener listener,
- CORBA_Environment *ev)
+impl_CalFactory_open (PortableServer_Servant servant,
+ const CORBA_char *uri,
+ CORBA_boolean only_if_exists,
+ GNOME_Evolution_Calendar_Listener listener,
+ CORBA_Environment *ev)
{
CalFactory *factory;
CalFactoryPrivate *priv;
@@ -558,118 +424,107 @@ CalFactory_open (PortableServer_Servant servant,
job_add (open_fn, jd);
}
-/**
- * cal_factory_get_epv:
- * @void:
- *
- * Creates an EPV for the CalFactory CORBA class.
- *
- * Return value: A newly-allocated EPV.
- **/
-POA_GNOME_Evolution_Calendar_CalFactory__epv *
-cal_factory_get_epv (void)
-{
- POA_GNOME_Evolution_Calendar_CalFactory__epv *epv;
-
- epv = g_new0 (POA_GNOME_Evolution_Calendar_CalFactory__epv, 1);
- epv->open = CalFactory_open;
-
- return epv;
-}
-
/**
- * cal_factory_construct:
- * @factory: A calendar factory.
- * @corba_factory: CORBA object for the calendar factory.
+ * cal_factory_new:
+ * @void:
*
- * Constructs a calendar factory by binding the corresponding CORBA object to
- * it.
+ * Creates a new #CalFactory object.
*
- * Return value: The same object as the @factory argument.
+ * Return value: A newly-created #CalFactory, or NULL if its corresponding CORBA
+ * object could not be created.
**/
CalFactory *
-cal_factory_construct (CalFactory *factory, GNOME_Evolution_Calendar_CalFactory corba_factory)
+cal_factory_new (void)
{
- g_return_val_if_fail (factory != NULL, NULL);
- g_return_val_if_fail (IS_CAL_FACTORY (factory), NULL);
+ CalFactory *factory;
+
+ factory = gtk_type_new (CAL_FACTORY_TYPE);
- bonobo_object_construct (BONOBO_OBJECT (factory), corba_factory);
return factory;
}
-/**
- * cal_factory_corba_object_create:
- * @object: #BonoboObject that will wrap the CORBA object.
- *
- * Creates and activates the CORBA object that is wrapped by the specified
- * calendar factory @object.
- *
- * Return value: An activated object reference or #CORBA_OBJECT_NIL in case of
- * failure.
- **/
-GNOME_Evolution_Calendar_CalFactory
-cal_factory_corba_object_create (BonoboObject *object)
+/* Destroy handler for the calendar */
+static void
+cal_factory_destroy (GtkObject *object)
{
- POA_GNOME_Evolution_Calendar_CalFactory *servant;
- CORBA_Environment ev;
+ CalFactory *factory;
+ CalFactoryPrivate *priv;
- g_return_val_if_fail (object != NULL, CORBA_OBJECT_NIL);
- g_return_val_if_fail (IS_CAL_FACTORY (object), CORBA_OBJECT_NIL);
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (IS_CAL_FACTORY (object));
- servant = (POA_GNOME_Evolution_Calendar_CalFactory *) g_new0 (BonoboObjectServant, 1);
- servant->vepv = &cal_factory_vepv;
+ factory = CAL_FACTORY (object);
+ priv = factory->priv;
- CORBA_exception_init (&ev);
- POA_GNOME_Evolution_Calendar_CalFactory__init ((PortableServer_Servant) servant, &ev);
+ g_hash_table_foreach (priv->methods, free_method, NULL);
+ g_hash_table_destroy (priv->methods);
+ priv->methods = NULL;
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_factory_corba_object_create(): could not init the servant");
- g_free (servant);
- CORBA_exception_free (&ev);
- return CORBA_OBJECT_NIL;
+ /* Should we assert that there are no more backends? */
+
+ g_hash_table_foreach (priv->backends, free_backend, NULL);
+ g_hash_table_destroy (priv->backends);
+ priv->backends = NULL;
+
+ if (priv->registered) {
+ oaf_active_server_unregister (CAL_FACTORY_OAF_ID, BONOBO_OBJREF (factory));
+ priv->registered = FALSE;
}
- CORBA_exception_free (&ev);
- return (GNOME_Evolution_Calendar_CalFactory) bonobo_object_activate_servant (object, servant);
+ g_free (priv);
+ factory->priv = NULL;
+
+ if (GTK_OBJECT_CLASS (parent_class)->destroy)
+ (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
}
-/**
- * cal_factory_new:
- * @void:
- *
- * Creates a new #CalFactory object.
- *
- * Return value: A newly-created #CalFactory, or NULL if its corresponding CORBA
- * object could not be created.
- **/
-CalFactory *
-cal_factory_new (void)
+/* Class initialization function for the calendar factory */
+static void
+cal_factory_class_init (CalFactoryClass *klass)
{
- CalFactory *factory;
- CORBA_Environment ev;
- GNOME_Evolution_Calendar_CalFactory corba_factory;
- gboolean retval;
+ GtkObjectClass *object_class = (GtkObjectClass *) klass;
+ POA_GNOME_Evolution_Calendar_CalFactory__epv *epv = &klass->epv;
- factory = gtk_type_new (CAL_FACTORY_TYPE);
+ parent_class = gtk_type_class (bonobo_object_get_type ());
+
+ signals[LAST_CALENDAR_GONE] =
+ gtk_signal_new ("last_calendar_gone",
+ GTK_RUN_FIRST,
+ object_class->type,
+ GTK_SIGNAL_OFFSET (CalFactoryClass, last_calendar_gone),
+ gtk_marshal_NONE__NONE,
+ GTK_TYPE_NONE, 0);
- corba_factory = cal_factory_corba_object_create (BONOBO_OBJECT (factory));
+ gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);
- CORBA_exception_init (&ev);
- retval = CORBA_Object_is_nil (corba_factory, &ev);
+ /* Class method overrides */
+ object_class->destroy = cal_factory_destroy;
- if (ev._major != CORBA_NO_EXCEPTION || retval) {
- g_message ("cal_factory_new(): could not create the CORBA factory");
- bonobo_object_unref (BONOBO_OBJECT (factory));
- CORBA_exception_free (&ev);
- return NULL;
- }
- CORBA_exception_free (&ev);
+ /* Epv methods */
+ epv->open = impl_CalFactory_open;
+}
+
+/* Object initialization function for the calendar factory */
+static void
+cal_factory_init (CalFactory *factory)
+{
+ CalFactoryPrivate *priv;
+
+ priv = g_new0 (CalFactoryPrivate, 1);
+ factory->priv = priv;
- return cal_factory_construct (factory, corba_factory);
+ priv->methods = g_hash_table_new (g_str_hash, g_str_equal);
+ priv->backends = g_hash_table_new (gnome_vfs_uri_hash, gnome_vfs_uri_hequal);
+ priv->registered = FALSE;
}
+BONOBO_X_TYPE_FUNC_FULL (CalFactory,
+ GNOME_Evolution_Calendar_CalFactory,
+ PARENT_TYPE,
+ cal_factory);
+
/* Returns the lowercase version of a string */
static char *
str_tolower (const char *s)
@@ -699,7 +554,6 @@ cal_factory_oaf_register (CalFactory *factory)
{
CalFactoryPrivate *priv;
OAF_RegistrationResult result;
- CORBA_Object obj;
g_return_val_if_fail (factory != NULL, FALSE);
g_return_val_if_fail (IS_CAL_FACTORY (factory), FALSE);
@@ -708,8 +562,7 @@ cal_factory_oaf_register (CalFactory *factory)
g_return_val_if_fail (!priv->registered, FALSE);
- obj = bonobo_object_corba_objref (BONOBO_OBJECT (factory));
- result = oaf_active_server_register (CAL_FACTORY_OAF_ID, obj);
+ result = oaf_active_server_register (CAL_FACTORY_OAF_ID, BONOBO_OBJREF (factory));
switch (result) {
case OAF_REG_SUCCESS:
diff --git a/calendar/pcs/cal-factory.h b/calendar/pcs/cal-factory.h
index ac28a5935b..008fc2c36d 100644
--- a/calendar/pcs/cal-factory.h
+++ b/calendar/pcs/cal-factory.h
@@ -1,6 +1,5 @@
/* Evolution calendar factory
*
- * Copyright (C) 2000 Helix Code, Inc.
* Copyright (C) 2000 Ximian, Inc.
*
* Author: Federico Mena-Quintero <federico@ximian.com>
@@ -24,9 +23,9 @@
#define CAL_FACTORY_H
#include <libgnome/gnome-defs.h>
-#include <bonobo/bonobo-object.h>
+#include <bonobo/bonobo-xobject.h>
-#include "calendar/pcs/evolution-calendar.h"
+#include "evolution-calendar.h"
BEGIN_GNOME_DECLS
@@ -45,36 +44,29 @@ typedef struct _CalFactoryClass CalFactoryClass;
typedef struct _CalFactoryPrivate CalFactoryPrivate;
struct _CalFactory {
- BonoboObject object;
+ BonoboXObject object;
/* Private data */
CalFactoryPrivate *priv;
};
struct _CalFactoryClass {
- BonoboObjectClass parent_class;
+ BonoboXObjectClass parent_class;
+
+ POA_GNOME_Evolution_Calendar_CalFactory__epv epv;
/* Notification signals */
void (* last_calendar_gone) (CalFactory *factory);
};
-GtkType cal_factory_get_type (void);
+GtkType cal_factory_get_type (void);
+CalFactory *cal_factory_new (void);
-CalFactory *cal_factory_construct (CalFactory *factory,
- GNOME_Evolution_Calendar_CalFactory corba_factory);
-GNOME_Evolution_Calendar_CalFactory cal_factory_corba_object_create (BonoboObject *object);
-
-CalFactory *cal_factory_new (void);
-
-gboolean cal_factory_oaf_register (CalFactory *factory);
-
-void cal_factory_register_method (CalFactory *factory, const char *method, GtkType backend_type);
-
-int cal_factory_get_n_backends (CalFactory *factory);
-
-POA_GNOME_Evolution_Calendar_CalFactory__epv *cal_factory_get_epv (void);
-
-
+gboolean cal_factory_oaf_register (CalFactory *factory);
+void cal_factory_register_method (CalFactory *factory,
+ const char *method,
+ GtkType backend_type);
+int cal_factory_get_n_backends (CalFactory *factory);
END_GNOME_DECLS
diff --git a/calendar/pcs/cal.c b/calendar/pcs/cal.c
index e723c077cb..6eb951133b 100644
--- a/calendar/pcs/cal.c
+++ b/calendar/pcs/cal.c
@@ -24,7 +24,9 @@
#include "cal.h"
#include "query.h"
-
+#define PARENT_TYPE BONOBO_X_OBJECT_TYPE
+
+static BonoboXObjectClass *parent_class;
/* Private part of the Cal structure */
struct _CalPrivate {
@@ -35,121 +37,10 @@ struct _CalPrivate {
GNOME_Evolution_Calendar_Listener listener;
};
-
-
-static void cal_class_init (CalClass *class);
-static void cal_init (Cal *cal);
-static void cal_destroy (GtkObject *object);
-
-static POA_GNOME_Evolution_Calendar_Cal__vepv cal_vepv;
-
-static BonoboObjectClass *parent_class;
-
-
-
-/**
- * cal_get_type:
- * @void:
- *
- * Registers the #Cal class if necessary, and returns the type ID associated to
- * it.
- *
- * Return value: The type ID of the #Cal class.
- **/
-GtkType
-cal_get_type (void)
-{
- static GtkType cal_type = 0;
-
- if (!cal_type) {
- static const GtkTypeInfo cal_info = {
- "Cal",
- sizeof (Cal),
- sizeof (CalClass),
- (GtkClassInitFunc) cal_class_init,
- (GtkObjectInitFunc) cal_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- cal_type = gtk_type_unique (BONOBO_OBJECT_TYPE, &cal_info);
- }
-
- return cal_type;
-}
-
-/* CORBA class initialzation function for the calendar */
-static void
-init_cal_corba_class (void)
-{
- cal_vepv.Bonobo_Unknown_epv = bonobo_object_get_epv ();
- cal_vepv.GNOME_Evolution_Calendar_Cal_epv = cal_get_epv ();
-}
-
-/* Class initialization function for the calendar */
-static void
-cal_class_init (CalClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (BONOBO_OBJECT_TYPE);
-
- object_class->destroy = cal_destroy;
-
- init_cal_corba_class ();
-}
-
-/* Object initialization function for the calendar */
-static void
-cal_init (Cal *cal)
-{
- CalPrivate *priv;
-
- priv = g_new0 (CalPrivate, 1);
- cal->priv = priv;
-
- priv->listener = CORBA_OBJECT_NIL;
-}
-
-/* Destroy handler for the calendar */
-static void
-cal_destroy (GtkObject *object)
-{
- Cal *cal;
- CalPrivate *priv;
- CORBA_Environment ev;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_CAL (object));
-
- cal = CAL (object);
- priv = cal->priv;
-
- priv->backend = NULL;
-
- CORBA_exception_init (&ev);
- CORBA_Object_release (priv->listener, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("cal_destroy(): could not release the listener");
-
- CORBA_exception_free (&ev);
-
- g_free (priv);
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/* CORBA servant implementation */
/* Cal::get_uri method */
static CORBA_char *
-Cal_get_uri (PortableServer_Servant servant,
+impl_Cal_get_uri (PortableServer_Servant servant,
CORBA_Environment *ev)
{
Cal *cal;
@@ -182,9 +73,9 @@ uncorba_obj_type (GNOME_Evolution_Calendar_CalObjType type)
/* Cal::get_n_objects method */
static CORBA_long
-Cal_get_n_objects (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjType type,
- CORBA_Environment *ev)
+impl_Cal_get_n_objects (PortableServer_Servant servant,
+ GNOME_Evolution_Calendar_CalObjType type,
+ CORBA_Environment *ev)
{
Cal *cal;
CalPrivate *priv;
@@ -201,9 +92,9 @@ Cal_get_n_objects (PortableServer_Servant servant,
/* Cal::get_object method */
static GNOME_Evolution_Calendar_CalObj
-Cal_get_object (PortableServer_Servant servant,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- CORBA_Environment *ev)
+impl_Cal_get_object (PortableServer_Servant servant,
+ const GNOME_Evolution_Calendar_CalObjUID uid,
+ CORBA_Environment *ev)
{
Cal *cal;
CalPrivate *priv;
@@ -256,9 +147,9 @@ build_uid_seq (GList *uids)
/* Cal::get_uids method */
static GNOME_Evolution_Calendar_CalObjUIDSeq *
-Cal_get_uids (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjType type,
- CORBA_Environment *ev)
+impl_Cal_get_uids (PortableServer_Servant servant,
+ GNOME_Evolution_Calendar_CalObjType type,
+ CORBA_Environment *ev)
{
Cal *cal;
CalPrivate *priv;
@@ -281,10 +172,10 @@ Cal_get_uids (PortableServer_Servant servant,
/* Cal::get_changes method */
static GNOME_Evolution_Calendar_CalObjChangeSeq *
-Cal_get_changes (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjType type,
- const CORBA_char *change_id,
- CORBA_Environment *ev)
+impl_Cal_get_changes (PortableServer_Servant servant,
+ GNOME_Evolution_Calendar_CalObjType type,
+ const CORBA_char *change_id,
+ CORBA_Environment *ev)
{
Cal *cal;
CalPrivate *priv;
@@ -300,11 +191,11 @@ Cal_get_changes (PortableServer_Servant servant,
/* Cal::get_objects_in_range method */
static GNOME_Evolution_Calendar_CalObjUIDSeq *
-Cal_get_objects_in_range (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjType type,
- GNOME_Evolution_Calendar_Time_t start,
- GNOME_Evolution_Calendar_Time_t end,
- CORBA_Environment *ev)
+impl_Cal_get_objects_in_range (PortableServer_Servant servant,
+ GNOME_Evolution_Calendar_CalObjType type,
+ GNOME_Evolution_Calendar_Time_t start,
+ GNOME_Evolution_Calendar_Time_t end,
+ CORBA_Environment *ev)
{
Cal *cal;
CalPrivate *priv;
@@ -337,10 +228,10 @@ Cal_get_objects_in_range (PortableServer_Servant servant,
/* Cal::get_alarms_in_range method */
static GNOME_Evolution_Calendar_CalComponentAlarmsSeq *
-Cal_get_alarms_in_range (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_Time_t start,
- GNOME_Evolution_Calendar_Time_t end,
- CORBA_Environment *ev)
+impl_Cal_get_alarms_in_range (PortableServer_Servant servant,
+ GNOME_Evolution_Calendar_Time_t start,
+ GNOME_Evolution_Calendar_Time_t end,
+ CORBA_Environment *ev)
{
Cal *cal;
CalPrivate *priv;
@@ -367,11 +258,11 @@ Cal_get_alarms_in_range (PortableServer_Servant servant,
/* Cal::get_alarms_for_object method */
static GNOME_Evolution_Calendar_CalComponentAlarms *
-Cal_get_alarms_for_object (PortableServer_Servant servant,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- GNOME_Evolution_Calendar_Time_t start,
- GNOME_Evolution_Calendar_Time_t end,
- CORBA_Environment * ev)
+impl_Cal_get_alarms_for_object (PortableServer_Servant servant,
+ const GNOME_Evolution_Calendar_CalObjUID uid,
+ GNOME_Evolution_Calendar_Time_t start,
+ GNOME_Evolution_Calendar_Time_t end,
+ CORBA_Environment * ev)
{
Cal *cal;
CalPrivate *priv;
@@ -411,10 +302,10 @@ Cal_get_alarms_for_object (PortableServer_Servant servant,
/* Cal::update_object method */
static void
-Cal_update_object (PortableServer_Servant servant,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- const GNOME_Evolution_Calendar_CalObj calobj,
- CORBA_Environment *ev)
+impl_Cal_update_object (PortableServer_Servant servant,
+ const GNOME_Evolution_Calendar_CalObjUID uid,
+ const GNOME_Evolution_Calendar_CalObj calobj,
+ CORBA_Environment *ev)
{
Cal *cal;
CalPrivate *priv;
@@ -430,9 +321,9 @@ Cal_update_object (PortableServer_Servant servant,
/* Cal::remove_object method */
static void
-Cal_remove_object (PortableServer_Servant servant,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- CORBA_Environment *ev)
+impl_Cal_remove_object (PortableServer_Servant servant,
+ const GNOME_Evolution_Calendar_CalObjUID uid,
+ CORBA_Environment *ev)
{
Cal *cal;
CalPrivate *priv;
@@ -448,10 +339,10 @@ Cal_remove_object (PortableServer_Servant servant,
/* Cal::getQuery implementation */
static GNOME_Evolution_Calendar_Query
-Cal_get_query (PortableServer_Servant servant,
- const CORBA_char *sexp,
- GNOME_Evolution_Calendar_QueryListener ql,
- CORBA_Environment *ev)
+impl_Cal_get_query (PortableServer_Servant servant,
+ const CORBA_char *sexp,
+ GNOME_Evolution_Calendar_QueryListener ql,
+ CORBA_Environment *ev)
{
Cal *cal;
CalPrivate *priv;
@@ -487,37 +378,6 @@ Cal_get_query (PortableServer_Servant servant,
}
/**
- * cal_get_epv:
- * @void:
- *
- * Creates an EPV for the Cal CORBA class.
- *
- * Return value: A newly-allocated EPV.
- **/
-POA_GNOME_Evolution_Calendar_Cal__epv *
-cal_get_epv (void)
-{
- POA_GNOME_Evolution_Calendar_Cal__epv *epv;
-
- epv = g_new0 (POA_GNOME_Evolution_Calendar_Cal__epv, 1);
- epv->_get_uri = Cal_get_uri;
- epv->countObjects = Cal_get_n_objects;
- epv->getObject = Cal_get_object;
- epv->getUIDs = Cal_get_uids;
- epv->getChanges = Cal_get_changes;
- epv->getObjectsInRange = Cal_get_objects_in_range;
- epv->getAlarmsInRange = Cal_get_alarms_in_range;
- epv->getAlarmsForObject = Cal_get_alarms_for_object;
- epv->updateObject = Cal_update_object;
- epv->removeObject = Cal_remove_object;
- epv->getQuery = Cal_get_query;
-
- return epv;
-}
-
-
-
-/**
* cal_construct:
* @cal: A calendar client interface.
* @corba_cal: CORBA object for the calendar.
@@ -532,7 +392,6 @@ cal_get_epv (void)
**/
Cal *
cal_construct (Cal *cal,
- GNOME_Evolution_Calendar_Cal corba_cal,
CalBackend *backend,
GNOME_Evolution_Calendar_Listener listener)
{
@@ -559,46 +418,10 @@ cal_construct (Cal *cal,
priv->backend = backend;
- bonobo_object_construct (BONOBO_OBJECT (cal), corba_cal);
return cal;
}
/**
- * cal_corba_object_create:
- * @object: #BonoboObject that will wrap the CORBA object.
- *
- * Creates and activates the CORBA object that is wrapped by the specified
- * calendar client interface @object.
- *
- * Return value: An activated object reference or #CORBA_OBJECT_NIL in case of
- * failure.
- **/
-GNOME_Evolution_Calendar_Cal
-cal_corba_object_create (BonoboObject *object)
-{
- POA_GNOME_Evolution_Calendar_Cal *servant;
- CORBA_Environment ev;
-
- g_return_val_if_fail (object != NULL, CORBA_OBJECT_NIL);
- g_return_val_if_fail (IS_CAL (object), CORBA_OBJECT_NIL);
-
- servant = (POA_GNOME_Evolution_Calendar_Cal *) g_new0 (BonoboObjectServant, 1);
- servant->vepv = &cal_vepv;
-
- CORBA_exception_init (&ev);
- POA_GNOME_Evolution_Calendar_Cal__init ((PortableServer_Servant) servant, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_corba_object_create(): could not init the servant");
- g_free (servant);
- CORBA_exception_free (&ev);
- return CORBA_OBJECT_NIL;
- }
-
- CORBA_exception_free (&ev);
- return (GNOME_Evolution_Calendar_Cal) bonobo_object_activate_servant (object, servant);
-}
-
-/**
* cal_new:
* @backend: A calendar backend.
* @listener: A calendar listener.
@@ -613,28 +436,13 @@ Cal *
cal_new (CalBackend *backend, GNOME_Evolution_Calendar_Listener listener)
{
Cal *cal, *retval;
- GNOME_Evolution_Calendar_Cal corba_cal;
- CORBA_Environment ev;
- gboolean ret;
g_return_val_if_fail (backend != NULL, NULL);
g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL);
cal = CAL (gtk_type_new (CAL_TYPE));
- corba_cal = cal_corba_object_create (BONOBO_OBJECT (cal));
- CORBA_exception_init (&ev);
- ret = CORBA_Object_is_nil ((CORBA_Object) corba_cal, &ev);
- if (ev._major != CORBA_NO_EXCEPTION || ret) {
- g_message ("cal_new(): could not create the CORBA object");
- bonobo_object_unref (BONOBO_OBJECT (cal));
- CORBA_exception_free (&ev);
- return NULL;
- }
-
- CORBA_exception_free (&ev);
-
- retval = cal_construct (cal, corba_cal, backend, listener);
+ retval = cal_construct (cal, backend, listener);
if (!retval) {
g_message ("cal_new(): could not construct the calendar client interface");
bonobo_object_unref (BONOBO_OBJECT (cal));
@@ -644,6 +452,78 @@ cal_new (CalBackend *backend, GNOME_Evolution_Calendar_Listener listener)
return retval;
}
+/* Destroy handler for the calendar */
+static void
+cal_destroy (GtkObject *object)
+{
+ Cal *cal;
+ CalPrivate *priv;
+ CORBA_Environment ev;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (IS_CAL (object));
+
+ cal = CAL (object);
+ priv = cal->priv;
+
+ priv->backend = NULL;
+
+ CORBA_exception_init (&ev);
+ CORBA_Object_release (priv->listener, &ev);
+ if (ev._major != CORBA_NO_EXCEPTION)
+ g_message ("cal_destroy(): could not release the listener");
+
+ CORBA_exception_free (&ev);
+
+ g_free (priv);
+
+ if (GTK_OBJECT_CLASS (parent_class)->destroy)
+ (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+}
+
+
+
+/* Class initialization function for the calendar */
+static void
+cal_class_init (CalClass *klass)
+{
+ GtkObjectClass *object_class = (GtkObjectClass *) klass;
+ POA_GNOME_Evolution_Calendar_Cal__epv *epv = &klass->epv;
+
+ parent_class = gtk_type_class (BONOBO_OBJECT_TYPE);
+
+ /* Class method overrides */
+ object_class->destroy = cal_destroy;
+
+ /* Epv methods */
+ epv->_get_uri = impl_Cal_get_uri;
+ epv->countObjects = impl_Cal_get_n_objects;
+ epv->getObject = impl_Cal_get_object;
+ epv->getUIDs = impl_Cal_get_uids;
+ epv->getChanges = impl_Cal_get_changes;
+ epv->getObjectsInRange = impl_Cal_get_objects_in_range;
+ epv->getAlarmsInRange = impl_Cal_get_alarms_in_range;
+ epv->getAlarmsForObject = impl_Cal_get_alarms_for_object;
+ epv->updateObject = impl_Cal_update_object;
+ epv->removeObject = impl_Cal_remove_object;
+ epv->getQuery = impl_Cal_get_query;
+}
+
+
+/* Object initialization function for the calendar */
+static void
+cal_init (Cal *cal)
+{
+ CalPrivate *priv;
+
+ priv = g_new0 (CalPrivate, 1);
+ cal->priv = priv;
+
+ priv->listener = CORBA_OBJECT_NIL;
+}
+
+BONOBO_X_TYPE_FUNC_FULL (Cal, GNOME_Evolution_Calendar_Cal, PARENT_TYPE, cal);
+
/**
* cal_notify_update:
* @cal: A calendar client interface.
diff --git a/calendar/pcs/cal.h b/calendar/pcs/cal.h
index 844640cd8d..f9880178b5 100644
--- a/calendar/pcs/cal.h
+++ b/calendar/pcs/cal.h
@@ -24,7 +24,7 @@
#define CAL_H
#include <libgnome/gnome-defs.h>
-#include <bonobo/bonobo-object.h>
+#include <bonobo/bonobo-xobject.h>
#include "calendar/pcs/evolution-calendar.h"
#include "cal-common.h"
@@ -41,31 +41,29 @@ BEGIN_GNOME_DECLS
typedef struct _CalPrivate CalPrivate;
struct _Cal {
- BonoboObject object;
+ BonoboXObject object;
/* Private data */
CalPrivate *priv;
};
struct _CalClass {
- BonoboObjectClass parent_class;
+ BonoboXObjectClass parent_class;
+
+ POA_GNOME_Evolution_Calendar_Cal__epv epv;
};
GtkType cal_get_type (void);
Cal *cal_construct (Cal *cal,
- GNOME_Evolution_Calendar_Cal corba_cal,
CalBackend *backend,
GNOME_Evolution_Calendar_Listener listener);
-GNOME_Evolution_Calendar_Cal cal_corba_object_create (BonoboObject *object);
Cal *cal_new (CalBackend *backend, GNOME_Evolution_Calendar_Listener listener);
void cal_notify_update (Cal *cal, const char *uid);
void cal_notify_remove (Cal *cal, const char *uid);
-POA_GNOME_Evolution_Calendar_Cal__epv *cal_get_epv (void);
-
END_GNOME_DECLS