aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/gnome-cal.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2009-09-08 17:11:43 +0800
committerMilan Crha <mcrha@redhat.com>2009-09-08 17:11:43 +0800
commit6863fb0ca4cc3272d281772a502d5445e7803ec2 (patch)
tree87aeb2d84b5a56bb0b9bce4b0f1e928807d1ba77 /calendar/gui/gnome-cal.c
parent8ee8a244781d1df404c8ab8a6695ee3a63fe53ae (diff)
downloadgsoc2013-evolution-6863fb0ca4cc3272d281772a502d5445e7803ec2.tar
gsoc2013-evolution-6863fb0ca4cc3272d281772a502d5445e7803ec2.tar.gz
gsoc2013-evolution-6863fb0ca4cc3272d281772a502d5445e7803ec2.tar.bz2
gsoc2013-evolution-6863fb0ca4cc3272d281772a502d5445e7803ec2.tar.lz
gsoc2013-evolution-6863fb0ca4cc3272d281772a502d5445e7803ec2.tar.xz
gsoc2013-evolution-6863fb0ca4cc3272d281772a502d5445e7803ec2.tar.zst
gsoc2013-evolution-6863fb0ca4cc3272d281772a502d5445e7803ec2.zip
Bug #581602 - Purge calendar function not working
Diffstat (limited to 'calendar/gui/gnome-cal.c')
-rw-r--r--calendar/gui/gnome-cal.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c
index b56c37da57..2c309c632a 100644
--- a/calendar/gui/gnome-cal.c
+++ b/calendar/gui/gnome-cal.c
@@ -2525,17 +2525,23 @@ gnome_calendar_get_num_events_selected (GnomeCalendar *gcal)
return retval;
}
+struct purge_data {
+ gboolean remove;
+ time_t older_than;
+};
+
static gboolean
check_instance_cb (ECalComponent *comp,
time_t instance_start,
time_t instance_end,
gpointer data)
{
- gboolean *remove = data;
+ struct purge_data *pd = data;
- *remove = FALSE;
+ if (instance_end >= pd->older_than)
+ pd->remove = FALSE;
- return FALSE;
+ return pd->remove;
}
void
@@ -2578,11 +2584,19 @@ gnome_calendar_purge (GnomeCalendar *gcal, time_t older_than)
/* FIXME write occur-before and occur-after
* sexp funcs so we don't have to use the max
* gint */
- if (!e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_RECURRENCES_NO_MASTER))
+ if (!e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_RECURRENCES_NO_MASTER)) {
+ struct purge_data pd;
+
+ pd.remove = TRUE;
+ pd.older_than = older_than;
+
e_cal_generate_instances_for_object (client, m->data,
older_than, G_MAXINT32,
(ECalRecurInstanceFn) check_instance_cb,
- &remove);
+ &pd);
+
+ remove = pd.remove;
+ }
/* FIXME Better error handling */
if (remove) {