diff options
author | Milan Crha <mcrha@redhat.com> | 2009-09-08 17:11:43 +0800 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2009-09-08 17:11:43 +0800 |
commit | 6863fb0ca4cc3272d281772a502d5445e7803ec2 (patch) | |
tree | 87aeb2d84b5a56bb0b9bce4b0f1e928807d1ba77 /calendar/gui | |
parent | 8ee8a244781d1df404c8ab8a6695ee3a63fe53ae (diff) | |
download | gsoc2013-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')
-rw-r--r-- | calendar/gui/gnome-cal.c | 24 |
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) { |