diff options
Diffstat (limited to 'calendar/pcs/icalendar-save.c')
-rw-r--r-- | calendar/pcs/icalendar-save.c | 361 |
1 files changed, 0 insertions, 361 deletions
diff --git a/calendar/pcs/icalendar-save.c b/calendar/pcs/icalendar-save.c deleted file mode 100644 index a639e5ef1d..0000000000 --- a/calendar/pcs/icalendar-save.c +++ /dev/null @@ -1,361 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - -#include <config.h> -#include <unistd.h> -#include <sys/stat.h> -#include "icalendar-save.h" - - -static void unparse_person (iCalPerson *person, icalproperty *person_prop); - -static struct icaltimetype timet_to_icaltime (time_t tt); - - - -icalcomponent* -icalcomponent_create_from_ical_object (iCalObject *ical) -{ - icalcomponent_kind kind; - icalcomponent *comp; - icalproperty *prop; - - switch (ical->type) { - case ICAL_EVENT: kind = ICAL_VEVENT_COMPONENT; break; - case ICAL_TODO: kind = ICAL_VTODO_COMPONENT; break; - case ICAL_JOURNAL: kind = ICAL_VJOURNAL_COMPONENT; break; - case ICAL_FBREQUEST: kind = ICAL_VFREEBUSY_COMPONENT; break; - case ICAL_TIMEZONE: kind = ICAL_VTIMEZONE_COMPONENT; break; - default: - kind = ICAL_NO_COMPONENT; break; - } - - comp = icalcomponent_new (kind); - - /*** calscale ***/ - prop = icalproperty_new_calscale ("GREGORIAN"); - icalcomponent_add_property (comp, prop); - - /*** catagories ***/ - if (ical->categories) { - /* ical->categories is a GList of (char *) */ - GList *cur; - for (cur = ical->categories; cur; cur = cur->next) { - prop = icalproperty_new_categories ((char *) cur); - icalcomponent_add_property (comp, prop); - } - } - - /*** class ***/ - if (ical->class) { - prop = icalproperty_new_class (ical->class); - icalcomponent_add_property (comp, prop); - } - - /*** comment ***/ - if (ical->comment) { - prop = icalproperty_new_comment (ical->comment); - icalcomponent_add_property (comp, prop); - } - - /*** description ***/ - if (ical->desc) { - prop = icalproperty_new_description (ical->desc); - icalcomponent_add_property (comp, prop); - } - - /*** geo ***/ - if (ical->geo.valid) { - struct icalgeotype v; - v.lat = ical->geo.latitude; - v.lon = ical->geo.longitude; - prop = icalproperty_new_geo (v); - icalcomponent_add_property (comp, prop); - } - - /*** location ***/ - if (ical->location) { - prop = icalproperty_new_location (ical->location); - icalcomponent_add_property (comp, prop); - } - - /*** percentcomplete ***/ - prop = icalproperty_new_percentcomplete (ical->percent); - icalcomponent_add_property (comp, prop); - - /*** priority ***/ - if (ical->priority) { - prop = icalproperty_new_priority (ical->priority); - icalcomponent_add_property (comp, prop); - } - - /*** resources ***/ - if (ical->resources) { - /* ical->resources is a GList of (char *) */ - GList *cur; - for (cur = ical->resources; cur; cur = cur->next) { - prop = icalproperty_new_resources ((char *) cur); - icalcomponent_add_property (comp, prop); - } - } - - /*** status ***/ - if (ical->status) { - prop = icalproperty_new_status (ical->status); - icalcomponent_add_property (comp, prop); - } - - /*** summary ***/ - if (ical->summary) { - prop = icalproperty_new_summary (ical->summary); - icalcomponent_add_property (comp, prop); - } - - /*** completed ***/ - if (ical->completed) { - struct icaltimetype ictime; - ictime = timet_to_icaltime (ical->completed); - prop = icalproperty_new_completed (ictime); - icalcomponent_add_property (comp, prop); - } - - /*** dtend ***/ /*** due ***/ - if (ical->dtend) { - /* FIXME: We should handle timezone specifiers */ - struct icaltimetype ictime; - ictime = timet_to_icaltime (ical->dtend); - if (ical->type == ICAL_TODO) - prop = icalproperty_new_due (ictime); - else - prop = icalproperty_new_dtend (ictime); - if (ical->date_only) { - icalparameter *param; - param = icalparameter_new (ICAL_VALUE_PARAMETER); - icalparameter_set_value (param, ICAL_VALUE_DATE); - icalproperty_add_parameter (prop, param); - } - icalcomponent_add_property (comp, prop); - } - - /*** dtstart ***/ - if (ical->dtstart) { - /* FIXME: We should handle timezone specifiers */ - struct icaltimetype ictime; - ictime = timet_to_icaltime (ical->dtstart); - prop = icalproperty_new_dtstart (ictime); - if (ical->date_only) { - icalparameter *param; - param = icalparameter_new (ICAL_VALUE_PARAMETER); - icalparameter_set_value (param, ICAL_VALUE_DATE); - icalproperty_add_parameter (prop, param); - } - icalcomponent_add_property (comp, prop); - } - - /*** duration ***/ - { - /* FIX ME */ - } - - /*** freebusy ***/ - { - /* FIX ME */ - } - - /*** transp ***/ - { - if (ical->transp == ICAL_TRANSP_PROPERTY) - icalproperty_set_transp (prop, "TRANSPARENT"); - else - icalproperty_set_transp (prop, "OPAQUE"); - icalcomponent_add_property (comp, prop); - } - - /* - ICAL_TZID_PROPERTY: - ICAL_TZNAME_PROPERTY: - ICAL_TZOFFSETFROM_PROPERTY: - ICAL_TZOFFSETTO_PROPERTY: - ICAL_TZURL_PROPERTY: - */ - - /*** attendee ***/ - if (ical->attendee) { - /* a list of (iCalPerson *) */ - GList *cur; - for (cur = ical->attendee; cur; cur = cur->next) { - iCalPerson *person = (iCalPerson *) cur->data; - prop = icalproperty_new_attendee ("FIX ME"); - unparse_person (person, prop); - icalcomponent_add_property (comp, prop); - } - } - - /*** contact ***/ - if (ical->contact) { - /* a list of (iCalPerson *) */ - GList *cur; - for (cur = ical->contact; cur; cur = cur->next) { - iCalPerson *person = (iCalPerson *) cur->data; - prop = icalproperty_new_contact ("FIX ME"); - unparse_person (person, prop); - icalcomponent_add_property (comp, prop); - } - } - - /*** organizer ***/ - if (ical->organizer) { - prop = icalproperty_new_organizer ("FIX ME"); - unparse_person (ical->organizer, prop); - icalcomponent_add_property (comp, prop); - } - - /*** recurrenceid ***/ - if (ical->recurid) { - struct icaltimetype ictime; - ictime = timet_to_icaltime (ical->recurid); - prop = icalproperty_new_recurrenceid (ictime); - } - - /*** relatedto ***/ - - /*** url ***/ - - /*** uid ***/ - - /*** exdate ***/ - - /*** created ***/ - - /*** dtstamp ***/ - - /*** lastmodified ***/ - - /*** sequence ***/ - - /*** requeststatus ***/ - - - /* then do subcomponents? valarms? */ - - return comp; -} - - -static -struct icaltimetype timet_to_icaltime (time_t tt) -{ - extern long timezone; - struct tm *t; - struct icaltimetype i; - - t = gmtime (&tt); - - /*return tt - (i->is_utc ? timezone : 0); */ - i.is_utc = 0; - - i.year = t->tm_year + 1900; - i.month = t->tm_mon + 1; - i.day = t->tm_mday; - - if (t->tm_hour == 0 && t->tm_min == 0 && t->tm_sec == 0) { - i.is_date = 1; - i.hour = 0; - i.minute = 0; - i.second = 0; - } else { - i.is_date = 0; - i.hour = t->tm_hour; - i.minute = t->tm_min; - i.second = t->tm_sec; - } - - return i; -} - - -/* fills in "person_prop" with information from "person" */ - -static -void unparse_person (iCalPerson *person, icalproperty *person_prop) -{ - icalparameter *param; - GList *cur; - - /* convert iCalPerson to an icalproperty */ - - param = icalparameter_new_cn (person->name); - icalproperty_add_parameter (person_prop, param); - - if (g_strcasecmp (person->role, "CHAIR") == 0) - param = icalparameter_new_role (ICAL_ROLE_CHAIR); - else if (g_strcasecmp (person->role, "REQPARTICIPANT") == 0) - param = icalparameter_new_role (ICAL_ROLE_REQPARTICIPANT); - else if (g_strcasecmp (person->role, "OPTPARTICIPANT") == 0) - param = icalparameter_new_role (ICAL_ROLE_OPTPARTICIPANT); - else if (g_strcasecmp (person->role, "NONPARTICIPANT") == 0) - param = icalparameter_new_role (ICAL_ROLE_NONPARTICIPANT); - else - param = icalparameter_new_role (ICAL_ROLE_XNAME); - icalproperty_add_parameter (person_prop, param); - - if (g_strcasecmp (person->partstat, "NEEDSACTION") == 0) - param = icalparameter_new_partstat (ICAL_PARTSTAT_NEEDSACTION); - else if (g_strcasecmp (person->partstat, "ACCEPTED") == 0) - param = icalparameter_new_partstat (ICAL_PARTSTAT_ACCEPTED); - else if (g_strcasecmp (person->partstat, "DECLINED") == 0) - param = icalparameter_new_partstat (ICAL_PARTSTAT_DECLINED); - else if (g_strcasecmp (person->partstat, "TENTATIVE") == 0) - param = icalparameter_new_partstat (ICAL_PARTSTAT_TENTATIVE); - else if (g_strcasecmp (person->partstat, "DELEGATED") == 0) - param = icalparameter_new_partstat (ICAL_PARTSTAT_DELEGATED); - else if (g_strcasecmp (person->partstat, "COMPLETED") == 0) - param = icalparameter_new_partstat (ICAL_PARTSTAT_COMPLETED); - else if (g_strcasecmp (person->partstat, "INPROCESS") == 0) - param = icalparameter_new_partstat (ICAL_PARTSTAT_INPROCESS); - else /* FIX ME, NEEDSACTION instead? */ - param = icalparameter_new_partstat (ICAL_PARTSTAT_XNAME); - icalproperty_add_parameter (person_prop, param); - - if (person->rsvp != FALSE) { - param = icalparameter_new_rsvp (TRUE); - icalproperty_add_parameter (person_prop, param); - } - - if (g_strcasecmp (person->cutype, "INDIVIDUAL") == 0) - param = icalparameter_new_cutype (ICAL_CUTYPE_INDIVIDUAL); - else if (g_strcasecmp (person->cutype, "GROUP") == 0) - param = icalparameter_new_cutype (ICAL_CUTYPE_GROUP); - else if (g_strcasecmp (person->cutype, "RESOURCE") == 0) - param = icalparameter_new_cutype (ICAL_CUTYPE_RESOURCE); - else if (g_strcasecmp (person->cutype, "ROOM") == 0) - param = icalparameter_new_cutype (ICAL_CUTYPE_ROOM); - else /* FIX ME, INDIVIDUAL instead? */ - param = icalparameter_new_cutype (ICAL_CUTYPE_UNKNOWN); - icalproperty_add_parameter (person_prop, param); - - /* person->member is a list of ICAL_MEMBER_PARAMETER */ - for (cur = person->member; cur; cur = cur->next) { - gchar *member = (gchar *) cur->data; - param = icalparameter_new_member (member); - icalproperty_add_parameter (person_prop, param); - } - - /* person->deleg_to is a list of ICAL_DELEGATEDTO_PARAMETER */ - for (cur = person->deleg_to; cur; cur = cur->next) { - gchar *deleg_to = (gchar *) cur->data; - param = icalparameter_new_delegatedto (deleg_to); - icalproperty_add_parameter (person_prop, param); - } - - /* ret->deleg_from is a list of ICAL_DELEGATEDFROM_PARAMETER */ - for (cur = person->deleg_from; cur; cur = cur->next) { - gchar *deleg_from = (gchar *) cur->data; - param = icalparameter_new_delegatedfrom (deleg_from); - icalproperty_add_parameter (person_prop, param); - } - - param = icalparameter_new_sentby (person->sent_by); - - /* ret->deleg_to is a list of ICAL_DIR_PARAMETER */ - /* FIX ME ... */ -} |