diff options
Diffstat (limited to 'calendar/pcs/cal.c')
-rw-r--r-- | calendar/pcs/cal.c | 74 |
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; |