summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@calcurse.org>2016-06-27 08:50:46 +0200
committerLukas Fleischer <lfleischer@calcurse.org>2016-06-27 08:57:42 +0200
commit203ac0aa61cff1cd386bc0e1a74c234f8bf2681c (patch)
tree236bba4178f256f8d4910b4cfbdf1b57122d7602 /src
parentb6f95b380f9662f9294b291c9a061750125bb7eb (diff)
downloadcalcurse-203ac0aa61cff1cd386bc0e1a74c234f8bf2681c.zip
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 <lfleischer@calcurse.org>
Diffstat (limited to 'src')
-rw-r--r--src/day.c27
-rw-r--r--src/ui-calendar.c12
2 files changed, 25 insertions, 14 deletions
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;
}
diff --git a/src/ui-calendar.c b/src/ui-calendar.c
index 4f61376..35c2a7e 100644
--- a/src/ui-calendar.c
+++ b/src/ui-calendar.c
@@ -471,12 +471,18 @@ draw_monthly_view(struct scrollwin *sw, struct date *current_day,
ofs_x + day_1_sav + 4 * c_day + 1, "%2d",
c_day);
custom_remove_attr(sw->inner, ATTR_HIGHEST);
- } else if (item_this_day) {
+ } else if (item_this_day == 1) {
custom_apply_attr(sw->inner, ATTR_LOW);
mvwprintw(sw->inner, ofs_y + 1,
ofs_x + day_1_sav + 4 * c_day + 1, "%2d",
c_day);
custom_remove_attr(sw->inner, ATTR_LOW);
+ } else if (item_this_day == 2) {
+ custom_apply_attr(sw->inner, ATTR_TRUE);
+ mvwprintw(sw->inner, ofs_y + 1,
+ ofs_x + day_1_sav + 4 * c_day + 1, "%2d",
+ c_day);
+ custom_remove_attr(sw->inner, ATTR_TRUE);
} else {
/* otherwise, print normal days in black */
mvwprintw(sw->inner, ofs_y + 1,
@@ -531,8 +537,10 @@ draw_weekly_view(struct scrollwin *sw, struct date *current_day,
attr = ATTR_LOWEST; /* today, but not selected */
else if (t.tm_mday == slctd_day.dd)
attr = ATTR_HIGHEST; /* selected day */
- else if (item_this_day)
+ else if (item_this_day == 1)
attr = ATTR_LOW;
+ else if (item_this_day == 2)
+ attr = ATTR_TRUE;
else
attr = 0;