Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:kernel-2.6.32
evolution-data-server
bnc-488632-fix-recur-counts.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bnc-488632-fix-recur-counts.diff of Package evolution-data-server
diff --git a/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c b/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c index 263fbee..a993880 100644 --- a/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c +++ b/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c @@ -59,6 +59,16 @@ get_recur_instance (ECalComponent *comp, time_t instance_start, time_t instance_ return TRUE; } +static gboolean +get_recur_count (ECalComponent *comp, time_t instance_start, time_t instance_end, gpointer data) +{ + int *count = (int *) data; + + *count = *count + 1; + + return TRUE; +} + static icaltimezone * resolve_tzid_cb (const char *tzid, gpointer data) { @@ -473,6 +483,24 @@ set_attendees_to_item (EGwItem *item, ECalComponent *comp, icaltimezone *default } +static int +get_actual_count (ECalComponent *comp, ECalBackendGroupwise *cbgw) +{ + int count = 0; + icaltimezone *dzone, *utc; + + + dzone = e_cal_backend_groupwise_get_default_zone (cbgw); + utc = icaltimezone_get_utc_timezone (); + + if (dzone) + e_cal_recur_generate_instances (comp, -1, -1,get_recur_count, &count, resolve_tzid_cb, NULL, (icaltimezone *) dzone); + else + e_cal_recur_generate_instances (comp, -1, -1,get_recur_count, &count, resolve_tzid_cb, NULL, utc); + + return count; +} + static void set_rrule_from_comp (ECalComponent *comp, EGwItem *item, ECalBackendGroupwise *cbgw) { @@ -505,9 +533,13 @@ set_rrule_from_comp (ECalComponent *comp, EGwItem *item, ECalBackendGroupwise *c default: break; } - if (ical_recur->count != 0) - item_rrule->count = ical_recur->count; - else + + if (ical_recur->count != 0) { + if (ical_recur->freq != ICAL_DAILY_RECURRENCE) + item_rrule->count = get_actual_count (comp, cbgw); + else + item_rrule->count = ical_recur->count; + } else item_rrule->until = icaltime_as_ical_string (ical_recur->until); item_rrule->interval = ical_recur->interval;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor