From 5c8f2d02c520d73a56727611d206f6c417ff0724 Mon Sep 17 00:00:00 2001 From: Thierry Pasqualier Date: Sun, 14 Oct 2007 20:05:21 +0000 Subject: [PATCH] Calendar day view : * first implementation of ongoing events * without minutes --- webcit/calendar_view.c | 49 ++++++++++++++++++++++++++++------------ webcit/static/webcit.css | 7 ++++++ 2 files changed, 42 insertions(+), 14 deletions(-) diff --git a/webcit/calendar_view.c b/webcit/calendar_view.c index ae1d7b1c2..b9f212a76 100644 --- a/webcit/calendar_view.c +++ b/webcit/calendar_view.c @@ -634,6 +634,7 @@ void calendar_day_view_display_events(time_t thetime, int year, int month, struct tm event_tm; int show_event = 0; int all_day_event = 0; + int ongoing_event = 0; struct wcsession *WCC = WC; /* This is done to make it run faster; WC is a function */ struct disp_cal *Cal; struct icaltimetype t; @@ -642,8 +643,8 @@ void calendar_day_view_display_events(time_t thetime, int year, int month, struct icaltimetype today_end_t; struct tm starting_tm; struct tm ending_tm; - int top; - int height; + int top = 0; + int height = 0; if (WCC->num_cal == 0) { // \todo FIXME wprintf("


\n"); @@ -654,7 +655,7 @@ void calendar_day_view_display_events(time_t thetime, int year, int month, event_end = thetime + 60 * 60 * (hour + 1); - /* Create an imaginary event which spans the 24 hours of today. Any events which + /* Create an imaginary event which spans the current hour. Any events which * overlap with this one take place at least partially in this day. */ memset(&starting_tm, 0, sizeof(struct tm)); @@ -673,7 +674,7 @@ void calendar_day_view_display_events(time_t thetime, int year, int month, ending_tm.tm_hour = hour; ending_tm.tm_min = 59; today_end_t = icaltime_from_timet_with_zone(mktime(&ending_tm), 0, icaltimezone_get_utc_timezone()); -/* today_end_t.is_utc = 1;*/ + today_end_t.is_utc = 1; /* Now loop through our list of events to see which ones occur today. */ @@ -681,10 +682,13 @@ void calendar_day_view_display_events(time_t thetime, int year, int month, Cal = &WCC->disp_cal[i]; all_day_event = 0; + ongoing_event=0; + q = icalcomponent_get_first_property(Cal->cal, ICAL_DTSTART_PROPERTY); if (q != NULL) { t = icalproperty_get_dtstart(q); event_tt = icaltime_as_timet(t); + localtime_r(&event_tt, &event_te); } else { memset(&t, 0, sizeof t); @@ -692,6 +696,8 @@ void calendar_day_view_display_events(time_t thetime, int year, int month, q = icalcomponent_get_first_property(Cal->cal, ICAL_DTEND_PROPERTY); if (q != NULL) { end_t = icalproperty_get_dtend(q); + event_tte = icaltime_as_timet(end_t); + localtime_r(&event_tte, &event_tm); } else { memset(&end_t, 0, sizeof end_t); @@ -705,25 +711,41 @@ void calendar_day_view_display_events(time_t thetime, int year, int month, else { show_event = ical_ctdl_is_overlap(t, end_t, today_start_t, today_end_t); - localtime_r(&event_tt, &event_te); } + /* If we determined that this event occurs today, then display it. */ p = icalcomponent_get_first_property(Cal->cal,ICAL_SUMMARY_PROPERTY); if ((show_event) && (p != NULL)) { - if (all_day_event) + + if ((t.day != today_start_t.day) && (end_t.day != today_start_t.day)) ongoing_event = 1; + + if (all_day_event) { - wprintf("
", + wprintf("
  • ", Cal->cal_msgnum, year, month, day, hour); escputs((char *) icalproperty_get_comment(p)); - wprintf("
  • \n"); + wprintf(" ("); + wprintf(_("All day event")); + wprintf(")\n"); + } + else if (ongoing_event && (hour == -1)) + { + wprintf("
  • ", + Cal->cal_msgnum, year, month, day, hour); + escputs((char *) icalproperty_get_comment(p)); + wprintf(" ("); + wprintf(_("Ongoing event")); + wprintf(")
  • \n"); } else { - event_tte = icaltime_as_timet(end_t); - localtime_r(&event_tte, &event_tm); - if (hour == event_te.tm_hour) { + if ((hour == event_te.tm_hour) && ! ongoing_event ) { + + if (t.day != today_start_t.day) event_te.tm_hour = 0; + if (end_t.day != today_start_t.day) event_tm.tm_hour = 24; + if ((event_te.tm_hour < dstart) && (event_tm.tm_hour <= dstart)) { top = (event_te.tm_hour * 11) -1; height= (event_tm.tm_hour - event_te.tm_hour) * 11; @@ -851,13 +873,12 @@ void calendar_day_view(int year, int month, int day) { /** Extra events on the middle */ wprintf(""); - wprintf("
    "); + wprintf("
    "); + wprintf(""); wprintf(""); /** end extra on the middle */ diff --git a/webcit/static/webcit.css b/webcit/static/webcit.css index 45e52b755..0621de557 100644 --- a/webcit/static/webcit.css +++ b/webcit/static/webcit.css @@ -1161,6 +1161,13 @@ td.events_of_the_day { text-align: left; } + +.extra_events ul, .extra_events ul li { + list-style: none; + margin: 0; + padding: 0; +} + .calday, .calout, .calweekend { width: 14%; height: 60px; -- 2.39.2