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.c74
1 files changed, 72 insertions, 2 deletions
diff --git a/calendar/pcs/cal.c b/calendar/pcs/cal.c
index 0d089b5096..8171af4922 100644
--- a/calendar/pcs/cal.c
+++ b/calendar/pcs/cal.c
@@ -101,6 +101,49 @@ impl_Cal_getEmailAddress (PortableServer_Servant servant,
return str_email_address_copy;
}
+
+/* Cal::get_alarm_email_address method */
+static CORBA_char *
+impl_Cal_getAlarmEmailAddress (PortableServer_Servant servant,
+ CORBA_Environment *ev)
+{
+ Cal *cal;
+ CalPrivate *priv;
+ const char *str_email_address;
+ CORBA_char *str_email_address_copy;
+
+ cal = CAL (bonobo_object_from_servant (servant));
+ priv = cal->priv;
+
+ str_email_address = cal_backend_get_alarm_email_address (priv->backend);
+ if (str_email_address == NULL) {
+ bonobo_exception_set (ev, ex_GNOME_Evolution_Calendar_Cal_NotFound);
+ return CORBA_OBJECT_NIL;
+ }
+
+ str_email_address_copy = CORBA_string_dup (str_email_address);
+
+ return str_email_address_copy;
+}
+
+/* Cal::getSchedulingInformation method */
+static CORBA_char *
+impl_Cal_getStaticCapabilities (PortableServer_Servant servant,
+ CORBA_Environment *ev)
+{
+ Cal *cal;
+ CalPrivate *priv;
+ const char *cap;
+ CORBA_char *cap_copy;
+
+ cal = CAL (bonobo_object_from_servant (servant));
+ priv = cal->priv;
+
+ cap = cal_backend_get_static_capabilities (priv->backend);
+ cap_copy = CORBA_string_dup (cap == NULL ? "" : cap);
+
+ return cap_copy;
+}
/* Converts a calendar object type from its CORBA representation to our own
* representation.
@@ -147,6 +190,27 @@ impl_Cal_countObjects (PortableServer_Servant servant,
return n;
}
+static GNOME_Evolution_Calendar_CalObj
+impl_Cal_getDefaultObject (PortableServer_Servant servant,
+ GNOME_Evolution_Calendar_CalObjType type,
+ CORBA_Environment *ev)
+{
+ Cal *cal;
+ CalPrivate *priv;
+ GNOME_Evolution_Calendar_CalObj calobj_copy;
+ char *calobj;
+
+
+ cal = CAL (bonobo_object_from_servant (servant));
+ priv = cal->priv;
+
+ calobj = cal_backend_get_default_object (priv->backend, type);
+ calobj_copy = CORBA_string_dup (calobj);
+ g_free (calobj);
+
+ return calobj_copy;
+}
+
/* Cal::getObject method */
static GNOME_Evolution_Calendar_CalObj
impl_Cal_getObject (PortableServer_Servant servant,
@@ -291,6 +355,7 @@ build_fb_seq (GList *obj_list)
seq = GNOME_Evolution_Calendar_CalObjSeq__alloc ();
CORBA_sequence_set_release (seq, TRUE);
+ seq->_maximum = n;
seq->_length = n;
seq->_buffer = CORBA_sequence_GNOME_Evolution_Calendar_CalObj_allocbuf (n);
@@ -428,6 +493,7 @@ impl_Cal_getAlarmsForObject (PortableServer_Servant servant,
static void
impl_Cal_updateObjects (PortableServer_Servant servant,
const CORBA_char *calobj,
+ const GNOME_Evolution_Calendar_CalObjModType mod,
CORBA_Environment *ev)
{
Cal *cal;
@@ -437,7 +503,7 @@ impl_Cal_updateObjects (PortableServer_Servant servant,
cal = CAL (bonobo_object_from_servant (servant));
priv = cal->priv;
- result = cal_backend_update_objects (priv->backend, calobj);
+ result = cal_backend_update_objects (priv->backend, calobj, mod);
switch (result) {
case CAL_BACKEND_RESULT_INVALID_OBJECT :
bonobo_exception_set (ev, ex_GNOME_Evolution_Calendar_Cal_InvalidObject);
@@ -457,6 +523,7 @@ impl_Cal_updateObjects (PortableServer_Servant servant,
static void
impl_Cal_removeObject (PortableServer_Servant servant,
const CORBA_char *uid,
+ const GNOME_Evolution_Calendar_CalObjModType mod,
CORBA_Environment *ev)
{
Cal *cal;
@@ -466,7 +533,7 @@ impl_Cal_removeObject (PortableServer_Servant servant,
cal = CAL (bonobo_object_from_servant (servant));
priv = cal->priv;
- result = cal_backend_remove_object (priv->backend, uid);
+ result = cal_backend_remove_object (priv->backend, uid, mod);
switch (result) {
case CAL_BACKEND_RESULT_INVALID_OBJECT :
bonobo_exception_set (ev, ex_GNOME_Evolution_Calendar_Cal_InvalidObject);
@@ -749,8 +816,11 @@ cal_class_init (CalClass *klass)
epv->_get_uri = impl_Cal_get_uri;
epv->isReadOnly = impl_Cal_isReadOnly;
epv->getEmailAddress = impl_Cal_getEmailAddress;
+ epv->getAlarmEmailAddress = impl_Cal_getAlarmEmailAddress;
+ epv->getStaticCapabilities = impl_Cal_getStaticCapabilities;
epv->setMode = impl_Cal_setMode;
epv->countObjects = impl_Cal_countObjects;
+ epv->getDefaultObject = impl_Cal_getDefaultObject;
epv->getObject = impl_Cal_getObject;
epv->setDefaultTimezone = impl_Cal_setDefaultTimezone;
epv->getTimezoneObject = impl_Cal_getTimezoneObject;