aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/pcs
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/pcs')
-rw-r--r--calendar/pcs/calobj.c18
-rw-r--r--calendar/pcs/calobj.h12
2 files changed, 25 insertions, 5 deletions
diff --git a/calendar/pcs/calobj.c b/calendar/pcs/calobj.c
index f02feaf7a1..7e5f535189 100644
--- a/calendar/pcs/calobj.c
+++ b/calendar/pcs/calobj.c
@@ -99,7 +99,13 @@ ical_object_destroy (iCalObject *ico)
lfree_if_defined (ico->resources);
lfree_if_defined (ico->related);
lfree_if_defined (ico->attach);
-
+
+ /* Alarms */
+ g_free (ico->dalarm.data);
+ g_free (ico->palarm.data);
+ g_free (ico->malarm.data);
+ g_free (ico->aalarm.data);
+
g_free (ico);
}
@@ -670,3 +676,13 @@ ical_object_to_vobject (iCalObject *ical)
/* FIXME: alarms */
return o;
}
+
+void
+ical_foreach (GList *events, iCalObjectFn fn, void *closure)
+{
+ for (; events; events = events->next){
+ iCalObject *ical = events->data;
+
+ (*fn) (ical, ical->dtstart, ical->dtend, closure);
+ }
+}
diff --git a/calendar/pcs/calobj.h b/calendar/pcs/calobj.h
index 9287332d40..8f7abf8871 100644
--- a/calendar/pcs/calobj.h
+++ b/calendar/pcs/calobj.h
@@ -153,11 +153,15 @@ typedef struct {
int new;
} iCalObject;
-iCalObject *ical_new (char *comment, char *organizer, char *summary);
-iCalObject *ical_object_new (void);
-void ical_object_destroy (iCalObject *ico);
+/* The callback for the recurrence generator */
+typedef void (*iCalObjectFn)(iCalObject *, time_t, time_t, void *);
+
+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);
-VObject *ical_object_to_vobject (iCalObject *ical);
+VObject *ical_object_to_vobject (iCalObject *ical);
+void ical_foreach (GList *events, iCalObjectFn fn, void *closure);
END_GNOME_DECLS