Updating branch refs/heads/master to cb3aab4410403477b1050d8a6395f30d30b1c9ae (commit) from f91d2ceaca679e9b40d4ee638c11a3ddea343acc (commit)
commit cb3aab4410403477b1050d8a6395f30d30b1c9ae Author: Juha Kautto <j...@xfce.org> Date: Wed Nov 20 14:43:39 2013 +0200 4.9.9.2 Fix for bug 9507 Older than 1970 periodic events do not work properly This looks like libical bug as it works with the old local Orage libical version. But as it was not easy to find, I worked it around. configure.in.in | 2 +- src/ical-code.c | 40 +++++++++++++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/configure.in.in b/configure.in.in index 71e2f35..18756f0 100644 --- a/configure.in.in +++ b/configure.in.in @@ -9,7 +9,7 @@ dnl Written for Xfce by Juha Kautto <j...@xfce.org> dnl dnl Version information -m4_define([orage_version], [4.9.9.1-git]) +m4_define([orage_version], [4.9.9.2-git]) m4_define([gtk_minimum_version], [2.14.0]) m4_define([xfce_minimum_version], [4.8.0]) diff --git a/src/ical-code.c b/src/ical-code.c index 7b8464c..bcb998f 100644 --- a/src/ical-code.c +++ b/src/ical-code.c @@ -3495,10 +3495,10 @@ static void mark_calendar(icalcomponent *c, icaltime_span *span , void *data) edate = icaltime_from_string(orage_tm_time_to_icaltime(&end_tm)); edate = convert_to_zone(edate, cal_data->appt.end_tz_loc); edate = icaltime_convert_to_zone(edate, local_icaltimezone); - /* g_print(P_N "sdate(day, mon, year):%d %d %d edate:%d %d %d\n" , sdate.day , sdate.month , sdate.year , edate.day , edate.month , edate.year); + /* */ xfical_mark_calendar_days(cal_data->cal, cal_data->year, cal_data->month , sdate.year, sdate.month, sdate.day @@ -3549,17 +3549,24 @@ static void xfical_mark_calendar_from_component(GtkCalendar *gtkcal /* icaltime_adjust(&nedate, 0, 0, 0, 0); */ + /* FIXME: we read the whole appointent just to get start and end + * timezones for mark_calendar. too heavy? */ + /* removed due to bug 9507 cal_data.cal = gtkcal; cal_data.year = year; cal_data.month = month; - /* FIXME: we read the whole appointent just to get start and end - * timezones. too heavy? */ key_found = get_appt_from_icalcomponent(c, &cal_data.appt); icalcomponent_foreach_recurrence(c, nsdate, nedate, mark_calendar , (void *)&cal_data); g_free(cal_data.appt.categories); + */ /* - , (void *)gtkcal); + g_print(P_N "(mon, year):%d %d (%d %d %d - %d %d %d)\n" + , month , year + , nsdate.day , nsdate.month , nsdate.year + , nedate.day , nedate.month , nedate.year); + */ + per = ic_get_period(c, TRUE); xfical_mark_calendar_days(gtkcal, year, month , per.stime.year, per.stime.month, per.stime.day , per.etime.year, per.etime.month, per.etime.day); @@ -3582,7 +3589,6 @@ static void xfical_mark_calendar_from_component(GtkCalendar *gtkcal } icalrecur_iterator_free(ri); } - */ } /* ICAL_VEVENT_COMPONENT */ else if (kind == ICAL_VTODO_COMPONENT) { per = ic_get_period(c, TRUE); @@ -3701,6 +3707,7 @@ static void add_appt_to_list(icalcomponent *c, icaltime_span *span , void *data) struct icaltimetype start, end; struct tm start_tm, end_tm; gboolean key_found; + icalproperty *p = NULL; typedef struct _app_data { GList **list; @@ -3775,6 +3782,9 @@ static void xfical_get_each_app_within_time_internal(char *a_day, gint days struct icaltimetype asdate, aedate; /* period to check */ icalcomponent *c=NULL; icalcomponent_kind ikind = ICAL_VEVENT_COMPONENT; + icalcomponent *c2=NULL; + icalproperty *p = NULL; + struct icaltimetype start; typedef struct _app_data { GList **list; @@ -3811,8 +3821,24 @@ static void xfical_get_each_app_within_time_internal(char *a_day, gint days for (c = icalcomponent_get_first_component(base, ikind); c != 0; c = icalcomponent_get_next_component(base, ikind)) { - icalcomponent_foreach_recurrence(c, asdate, aedate, add_appt_to_list - , (void *)&data1); + /* FIXME: hack to fix year to be newer than 1970 based on BUG 9507 */ + p = icalcomponent_get_first_property(c, ICAL_DTSTART_PROPERTY); + start = icalproperty_get_dtstart(p); + if (start.year < 1970) { + c2 = icalcomponent_new_clone(c); + p = icalcomponent_get_first_property(c2, ICAL_DTSTART_PROPERTY); + start = icalproperty_get_dtstart(p); + orage_message(140, P_N "Adjusting old DTSTART time %d", start.year); + start.year = 1970; + icalproperty_set_dtstart(p, start); + icalcomponent_foreach_recurrence(c2, asdate, aedate, add_appt_to_list + , (void *)&data1); + } + else { + icalcomponent_foreach_recurrence(c, asdate, aedate, add_appt_to_list + , (void *)&data1); + } + /* FIXME: end of hack */ } } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits