From: Wilfried Göesgens Date: Tue, 23 Oct 2007 21:22:01 +0000 (+0000) Subject: * some debugging to the day view, and the date calculating functions. Temporarily... X-Git-Tag: v7.86~2923 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=4b41d944cd644a326f347e8c7015182088d6d58a * some debugging to the day view, and the date calculating functions. Temporarily moved oven a function from libical, as its bugged there. --- diff --git a/webcit/availability.c b/webcit/availability.c index 0c1198a26..8676ab2cd 100644 --- a/webcit/availability.c +++ b/webcit/availability.c @@ -48,6 +48,57 @@ icalcomponent *get_freebusy_for_user(char *who) { } +/* TODO: temporary copy from libical, apply this patch to libical... */ +int webcit_icaltime_compare(const struct icaltimetype a_in, const struct icaltimetype b_in) +{ + struct icaltimetype a, b; + + a = icaltime_convert_to_zone(a_in, icaltimezone_get_utc_timezone()); + b = icaltime_convert_to_zone(b_in, icaltimezone_get_utc_timezone()); + + if (a.year > b.year) + return 1; + else if (a.year < b.year) + return -1; + + else if (a.month > b.month) + return 1; + else if (a.month < b.month) + return -1; + + else if (a.day > b.day) + return 1; + else if (a.day < b.day) + return -1; + + /* if both are dates, we are done */ + if (a.is_date && b.is_date) + return 0; + + /* else, if only one is a date (and we already know the date part is equal), + then the other is greater */ + else if (b.is_date) + return 1; + else if (a.is_date) + return -1; + + else if (a.hour > b.hour) + return 1; + else if (a.hour < b.hour) + return -1; + + else if (a.minute > b.minute) + return 1; + else if (a.minute < b.minute) + return -1; + + else if (a.second > b.second) + return 1; + else if (a.second < b.second) + return -1; + + return 0; +} /** @@ -94,6 +145,8 @@ int ical_ctdl_is_overlap( } } + lprintf (2,"Comparing t1start %d:%d t1end %d:%d t2start %d:%d t2end %d:%d \n", t1start.hour, t1start.minute, t1end.hour, t1end.minute, t2start.hour, t2start.minute, t2end.hour, t2end.minute);// TODO: remove me. + /** Now check for overlaps using date *and* time. */ /** First, bail out if either event 1 or event 2 is missing end time. */ @@ -101,10 +154,11 @@ int ical_ctdl_is_overlap( if (icaltime_is_null_time(t2end)) return(0); /** If event 1 ends before event 2 starts, we're in the clear. */ - if (icaltime_compare(t1end, t2start) <= 0) return(0); - + if (webcit_icaltime_compare(t1end, t2start) <= 0) return(0); + lprintf(2,"first pased \n"); /** If event 2 ends before event 1 starts, we're also ok. */ - if (icaltime_compare(t2end, t1start) <= 0) return(0); + if (webcit_icaltime_compare(t2end, t1start) <= 0) return(0); + lprintf(2,"second pased \n"); /** Otherwise, they overlap. */ return(1); diff --git a/webcit/calendar_view.c b/webcit/calendar_view.c index 52632d3ad..315169577 100644 --- a/webcit/calendar_view.c +++ b/webcit/calendar_view.c @@ -813,6 +813,7 @@ void calendar_day_view_display_events(time_t thetime, int year, int month, return; } + lprintf (2, "printing %d\n", hour); /// TODO: remove me. event_start = thetime + 60 * 60 * hour; event_end = thetime + 60 * 60 * (hour + 1); @@ -998,6 +999,7 @@ void calendar_day_view_display_events(time_t thetime, int year, int month, top = (dstart * 10) + ((dend - dstart) * 30) + ((event_tm.tm_hour - event_te.tm_hour) * 10) + startmin - 1; height = ((event_tm.tm_hour - event_te.tm_hour) * 10) + endmin - diffmin; } + } // TODO: we seem to end up here for some reason if we're just a one hour event. Thierry, please decide what to do then... wprintf("
\n"); - } + } }