From 5d56cdb0b37b4b8919df92ff35daf06934666061 Mon Sep 17 00:00:00 2001 From: Federico Mena Quintero Date: Fri, 4 Feb 2000 04:42:34 +0000 Subject: New function to create the base VObject for a calendar. 2000-02-04 Federico Mena Quintero * cal-backend.c (get_calendar_base_vobject): New function to create the base VObject for a calendar. (cal_backend_get_object): Create the base calendar and add the sought object to it, then stringify it. * evolution-calendar.idl (Listener::obj_added Listener::obj_changed): Now these pass in just the UIDs, not the complete objects. * cal-listener.c (Listener_obj_added): Changed to pass in the uid, not the object. (Listener_obj_changed): Likewise. * cal-client.h (CalClientClass): Made the obj_added and obj_changed signals take in the UIDs, not the full objects. * cal-client.c (obj_added_cb): Likewise. (obj_changed_cb): Likewise. svn path=/trunk/; revision=1666 --- calendar/pcs/cal-backend.c | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) (limited to 'calendar/pcs') diff --git a/calendar/pcs/cal-backend.c b/calendar/pcs/cal-backend.c index ffbbdab472..72315e3882 100644 --- a/calendar/pcs/cal-backend.c +++ b/calendar/pcs/cal-backend.c @@ -26,6 +26,11 @@ +/* VCalendar product ID */ +#define PRODID "-//Helix Code//NONSGML Tlacuache//EN" + + + /* Private part of the CalBackend structure */ typedef struct { /* URI where the calendar data is stored */ @@ -265,6 +270,35 @@ load_from_vobject (CalBackend *backend, VObject *vobject) } } +/* Creates a VObject with the base information of a calendar */ +static VObject * +get_calendar_base_vobject (CalBackend *backend) +{ + VObject *vobj; + time_t now; + struct tm tm; + + /* We call localtime for the side effect of setting tzname */ + + now = time (NULL); + tm = *localtime (&now); + + vobj = newVObject (VCCalProp); + + addPropValue (vobj, VCProdIdProp, PRODID); + +#if defined (HAVE_TM_ZONE) + addPropValue (vobj, VCTimeZoneProp, tm.tm_zone); +#elif defined (HAVE_TZNAME) + addPropValue (vobj, VCTimeZoneProp, tzname[0]); +#endif + + /* Per the vCalendar spec, this must be "1.0" */ + addPropValue (vobj, VCVersionProp, "1.0"); + + return vobj; +} + /** @@ -433,6 +467,7 @@ cal_backend_get_object (CalBackend *backend, const char *uid) { CalBackendPrivate *priv; iCalObject *ico; + VObject *vcalobj, *vobj; char *buf; g_return_val_if_fail (backend != NULL, NULL); @@ -450,5 +485,14 @@ cal_backend_get_object (CalBackend *backend, const char *uid) if (!ico) return NULL; - /* FIXME */ + vcalobj = get_calendar_base_vobject (backend); + vobj = ical_object_to_vobject (ico); + addVObjectProp (vcalobj, vobj); + + buf = writeMemVObject (NULL, NULL, vcalobj); + + cleanVObject (vcalobj); + cleanStrTbl (); + + return buf; } -- cgit