diff options
Diffstat (limited to 'calendar')
-rw-r--r-- | calendar/cal-util/calobj.c | 35 | ||||
-rw-r--r-- | calendar/calendar.c | 26 | ||||
-rw-r--r-- | calendar/calendar.h | 1 | ||||
-rw-r--r-- | calendar/calobj.c | 35 | ||||
-rw-r--r-- | calendar/gui/calendar.c | 26 | ||||
-rw-r--r-- | calendar/gui/calendar.h | 1 | ||||
-rw-r--r-- | calendar/pcs/calobj.c | 35 |
7 files changed, 153 insertions, 6 deletions
diff --git a/calendar/cal-util/calobj.c b/calendar/cal-util/calobj.c index 004ba7636d..6dd7fa98db 100644 --- a/calendar/cal-util/calobj.c +++ b/calendar/cal-util/calobj.c @@ -250,8 +250,17 @@ ical_object_create_from_vobject (VObject *o, const char *object_name) return ical; } -void -ical_object_save (iCalObject *ical) +static char * +to_str (int num) +{ + static char buf [40]; + + sprintf (buf, "%d", num); + return buf; +} + +VObject * +ical_object_to_vobject (iCalObject *ical) { VObject *o; @@ -259,5 +268,27 @@ ical_object_save (iCalObject *ical) o = newVObject (VCEventProp); else o = newVObject (VCTodoProp); + + /* uid */ + if (ical->uid) + addPropValue (o, VCUniqueStringProp, ical->uid); + + /* seq */ + addPropValue (o, VCSequenceProp, to_str (ical->seq)); + + /* dtstart */ + addPropValue (o, VCDTstartProp, isodate_from_time_t (ical->dtstart)); + + /* dtend */ + addPropValue (o, VCDTendProp, isodate_from_time_t (ical->dtend)); + + /* dcreated */ + addPropValue (o, VCDTendProp, isodate_from_time_t (ical->created)); + + /* completed */ + if (ical->completed) + addPropValue (o, VCDTendProp, isodate_from_time_t (ical->completed)); + + return o; } diff --git a/calendar/calendar.c b/calendar/calendar.c index 482543b84b..efcb157e8b 100644 --- a/calendar/calendar.c +++ b/calendar/calendar.c @@ -200,3 +200,29 @@ calendar_load (Calendar *cal, char *fname) calendar_load_from_vobject (cal, vcal); cleanVObject (vcal); } + +void +calendar_save (Calendar *cal, char *fname) +{ + VObject *vcal; + GList *l; + + if (fname == NULL) + fname = cal->filename; + + vcal = newVObject (VCCalProp); + addPropValue (vcal, VCProdIdProp, "-//GNOME//NONSGML GnomeCalendar//EN"); + addPropValue (vcal, VCTimeZoneProp, "NONE"); + addPropValue (vcal, VCVersionProp, VERSION); + cal->temp = vcal; + + for (l = cal->events; l; l = l->next){ + VObject *obj; + + obj = ical_object_to_vobject ((iCalObject *) l->data); + addVObjectProp (vcal, obj); + } + writeVObjectToFile (fname, vcal); + cleanVObject (vcal); +} + diff --git a/calendar/calendar.h b/calendar/calendar.h index 805076d949..f990caabd6 100644 --- a/calendar/calendar.h +++ b/calendar/calendar.h @@ -14,6 +14,7 @@ typedef struct { time_t created; int modified; + void *temp; } Calendar; Calendar *calendar_new (char *title); diff --git a/calendar/calobj.c b/calendar/calobj.c index 004ba7636d..6dd7fa98db 100644 --- a/calendar/calobj.c +++ b/calendar/calobj.c @@ -250,8 +250,17 @@ ical_object_create_from_vobject (VObject *o, const char *object_name) return ical; } -void -ical_object_save (iCalObject *ical) +static char * +to_str (int num) +{ + static char buf [40]; + + sprintf (buf, "%d", num); + return buf; +} + +VObject * +ical_object_to_vobject (iCalObject *ical) { VObject *o; @@ -259,5 +268,27 @@ ical_object_save (iCalObject *ical) o = newVObject (VCEventProp); else o = newVObject (VCTodoProp); + + /* uid */ + if (ical->uid) + addPropValue (o, VCUniqueStringProp, ical->uid); + + /* seq */ + addPropValue (o, VCSequenceProp, to_str (ical->seq)); + + /* dtstart */ + addPropValue (o, VCDTstartProp, isodate_from_time_t (ical->dtstart)); + + /* dtend */ + addPropValue (o, VCDTendProp, isodate_from_time_t (ical->dtend)); + + /* dcreated */ + addPropValue (o, VCDTendProp, isodate_from_time_t (ical->created)); + + /* completed */ + if (ical->completed) + addPropValue (o, VCDTendProp, isodate_from_time_t (ical->completed)); + + return o; } diff --git a/calendar/gui/calendar.c b/calendar/gui/calendar.c index 482543b84b..efcb157e8b 100644 --- a/calendar/gui/calendar.c +++ b/calendar/gui/calendar.c @@ -200,3 +200,29 @@ calendar_load (Calendar *cal, char *fname) calendar_load_from_vobject (cal, vcal); cleanVObject (vcal); } + +void +calendar_save (Calendar *cal, char *fname) +{ + VObject *vcal; + GList *l; + + if (fname == NULL) + fname = cal->filename; + + vcal = newVObject (VCCalProp); + addPropValue (vcal, VCProdIdProp, "-//GNOME//NONSGML GnomeCalendar//EN"); + addPropValue (vcal, VCTimeZoneProp, "NONE"); + addPropValue (vcal, VCVersionProp, VERSION); + cal->temp = vcal; + + for (l = cal->events; l; l = l->next){ + VObject *obj; + + obj = ical_object_to_vobject ((iCalObject *) l->data); + addVObjectProp (vcal, obj); + } + writeVObjectToFile (fname, vcal); + cleanVObject (vcal); +} + diff --git a/calendar/gui/calendar.h b/calendar/gui/calendar.h index 805076d949..f990caabd6 100644 --- a/calendar/gui/calendar.h +++ b/calendar/gui/calendar.h @@ -14,6 +14,7 @@ typedef struct { time_t created; int modified; + void *temp; } Calendar; Calendar *calendar_new (char *title); diff --git a/calendar/pcs/calobj.c b/calendar/pcs/calobj.c index 004ba7636d..6dd7fa98db 100644 --- a/calendar/pcs/calobj.c +++ b/calendar/pcs/calobj.c @@ -250,8 +250,17 @@ ical_object_create_from_vobject (VObject *o, const char *object_name) return ical; } -void -ical_object_save (iCalObject *ical) +static char * +to_str (int num) +{ + static char buf [40]; + + sprintf (buf, "%d", num); + return buf; +} + +VObject * +ical_object_to_vobject (iCalObject *ical) { VObject *o; @@ -259,5 +268,27 @@ ical_object_save (iCalObject *ical) o = newVObject (VCEventProp); else o = newVObject (VCTodoProp); + + /* uid */ + if (ical->uid) + addPropValue (o, VCUniqueStringProp, ical->uid); + + /* seq */ + addPropValue (o, VCSequenceProp, to_str (ical->seq)); + + /* dtstart */ + addPropValue (o, VCDTstartProp, isodate_from_time_t (ical->dtstart)); + + /* dtend */ + addPropValue (o, VCDTendProp, isodate_from_time_t (ical->dtend)); + + /* dcreated */ + addPropValue (o, VCDTendProp, isodate_from_time_t (ical->created)); + + /* completed */ + if (ical->completed) + addPropValue (o, VCDTendProp, isodate_from_time_t (ical->completed)); + + return o; } |