aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/pcs/cal.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/pcs/cal.c')
-rw-r--r--calendar/pcs/cal.c350
1 files changed, 115 insertions, 235 deletions
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.