/* * Internal representation of a Calendar object. This is modeled after the * iCalendar/vCalendar specificiation * * Authors: Miguel de Icaza (miguel@gnu.org), Federico Mena (federico@gimp.org). */ #ifndef CALOBJ_H #define CALOBJ_H #include #include "versit/vcc.h" BEGIN_GNOME_DECLS enum AlarmType { ALARM_MAIL, ALARM_PROGRAM, ALARM_DISPLAY, ALARM_AUDIO }; enum AlarmUnit { ALARM_MINUTES, ALARM_HOURS, ALARM_DAYS }; typedef struct { enum AlarmType type; int enabled; int count; enum AlarmUnit units; char *data; /* Widgets */ void *w_count; /* A GtkEntry */ void *w_enabled; /* A GtkChecButton */ void *w_timesel; /* A GtkMenu */ void *w_entry; /* A GnomeEntryFile/GtkEntry for PROGRAM/MAIL */ void *w_label; } CalendarAlarm; /* Calendar object type */ typedef enum { ICAL_EVENT, ICAL_TODO, ICAL_JOURNAL, ICAL_FBREQUEST, ICAL_FBREPLY, ICAL_BUSYTIME, ICAL_TIMEZONE } iCalType; /* For keys that might contain binary or text/binary */ typedef struct { char *data; int len; } iCalValue; typedef struct { int valid; /* true if the Geography was specified */ double latitude; double longitude; } iCalGeo; typedef enum { ICAL_OPAQUE, ICAL_TRANSPARENT } iCalTransp; typedef char NotYet; /* * This describes an iCalendar object, note that we never store durations, instead we * always compute the end time computed from the start + duration. */ typedef struct { iCalType type; GList *attach; /* type: one or more URIs or binary data */ GList *attendee; /* type: CAL-ADDRESS */ GList *categories; /* type: one or more TEXT */ char *class; char *comment; /* we collapse one or more TEXTs into one */ time_t completed; time_t created; GList *contact; /* type: one or more TEXT */ time_t dtstamp; time_t dtstart; time_t dtend; GList *exdate; /* type: one or more time_t's */ GList *exrule; /* type: one or more RECUR */ iCalGeo geo; time_t last_mod; char *location; char *organizer; int percent; int priority; char *rstatus; /* request status for freebusy */ GList *related; /* type: one or more TEXT */ GList *resources; /* type: one or more TEXT */ GList *rdate; /* type: one or more recurrence date */ GList *rrule; /* type: one or more recurrence rules */ int seq; char *status; char *summary; iCalTransp transp; char *uid; char *url; time_t recurid; CalendarAlarm dalarm; CalendarAlarm aalarm; CalendarAlarm palarm; CalendarAlarm malarm; } iCalObject; iCalObject *ical_new (char *comment, char *organizer, char *summary); iCalObject *ical_object_new (void); void ical_object_destroy (iCalObject *ico); iCalObject *ical_object_create_from_vobject (VObject *obj, const char *object_name); END_GNOME_DECLS #endif