From 203ac0aa61cff1cd386bc0e1a74c234f8bf2681c Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Mon, 27 Jun 2016 08:50:46 +0200 Subject: Highlight days with non-recurrent items Use a different color for days with non-recurrent items in the calendar panel. This makes it possible to easily spot days that actually contain appointments. Signed-off-by: Lukas Fleischer --- src/day.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'src/day.c') diff --git a/src/day.c b/src/day.c index bd21023..2bd4a31 100644 --- a/src/day.c +++ b/src/day.c @@ -507,13 +507,26 @@ void day_popup_item(struct day_item *day) } /* - * Need to know if there is an item for the current selected day inside - * calendar. This is used to put the correct colors inside calendar panel. + * Check whether there is an item on a given day. + * + * Returns 2 if the selected day contains a regular event or appointment. + * Returns 1 if the selected day does not contain a regular event or + * appointment but an occurrence of a recurrent item. Returns 0 otherwise. */ int day_check_if_item(struct date day) { const time_t t = date2sec(day, 0, 0); + if (LLIST_FIND_FIRST(&eventlist, (time_t *)&t, event_inday)) + return 2; + + LLIST_TS_LOCK(&alist_p); + if (LLIST_TS_FIND_FIRST(&alist_p, (time_t *)&t, apoint_inday)) { + LLIST_TS_UNLOCK(&alist_p); + return 2; + } + LLIST_TS_UNLOCK(&alist_p); + if (LLIST_FIND_FIRST(&recur_elist, (time_t *)&t, recur_event_inday)) return 1; @@ -525,16 +538,6 @@ int day_check_if_item(struct date day) } LLIST_TS_UNLOCK(&recur_alist_p); - if (LLIST_FIND_FIRST(&eventlist, (time_t *)&t, event_inday)) - return 1; - - LLIST_TS_LOCK(&alist_p); - if (LLIST_TS_FIND_FIRST(&alist_p, (time_t *)&t, apoint_inday)) { - LLIST_TS_UNLOCK(&alist_p); - return 1; - } - LLIST_TS_UNLOCK(&alist_p); - return 0; } -- cgit v1.2.3