diff options
-rw-r--r-- | calendar/ChangeLog | 5 | ||||
-rw-r--r-- | calendar/backends/http/e-cal-backend-http.c | 30 |
2 files changed, 27 insertions, 8 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index c2b96437e..01f2721bf 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,5 +1,10 @@ 2004-05-27 Rodrigo Moya <rodrigo@novell.com> + * backends/http/e-cal-backend-http.c (retrieval_done): make sure + we clean up the cache, or old events will always be kept. + +2004-05-27 Rodrigo Moya <rodrigo@novell.com> + Fixes #58197 * libedata-cal/e-cal-backend.c (e_cal_backend_create_object, diff --git a/calendar/backends/http/e-cal-backend-http.c b/calendar/backends/http/e-cal-backend-http.c index 55d430a11..8a2c70744 100644 --- a/calendar/backends/http/e-cal-backend-http.c +++ b/calendar/backends/http/e-cal-backend-http.c @@ -258,19 +258,33 @@ retrieval_done (SoupMessage *msg, ECalBackendHttp *cbhttp) } /* Update cache */ + e_file_cache_clean (E_FILE_CACHE (priv->cache)); + kind = e_cal_backend_get_kind (E_CAL_BACKEND (cbhttp)); - subcomp = icalcomponent_get_first_component (icalcomp, kind); + subcomp = icalcomponent_get_first_component (icalcomp, ICAL_ANY_COMPONENT); while (subcomp) { ECalComponent *comp; + icalcomponent_kind subcomp_kind; + + subcomp_kind = icalcomponent_isa (subcomp); + if (subcomp_kind == kind) { + comp = e_cal_component_new (); + if (e_cal_component_set_icalcomponent (comp, subcomp)) { + e_cal_backend_cache_put_component (priv->cache, comp); + e_cal_backend_notify_object_created (E_CAL_BACKEND (cbhttp), + icalcomponent_as_ical_string (subcomp)); + } - comp = e_cal_component_new (); - if (e_cal_component_set_icalcomponent (comp, subcomp)) { - e_cal_backend_cache_put_component (priv->cache, comp); - e_cal_backend_notify_object_created (E_CAL_BACKEND (cbhttp), - icalcomponent_as_ical_string (subcomp)); - } + g_object_unref (comp); + } else if (subcomp_kind == ICAL_VTIMEZONE_COMPONENT) { + icaltimezone *zone; - g_object_unref (comp); + zone = icaltimezone_new (); + icaltimezone_set_component (zone, subcomp); + e_cal_backend_cache_put_timezone (priv->cache, (const icaltimezone *) zone); + + icaltimezone_free (zone, 1); + } subcomp = icalcomponent_get_next_component (icalcomp, kind); } |