return compare(start, &(date_t){year, month, day, hour, min}) < 0;
}
+int all_day(date_t *start, date_t *end)
+{
+ date_t test = *start;
+ add_days(&test.year, &test.month, &test.day, 1);
+ return compare(&test, end) <= 0;
+}
+
+int no_date(date_t *date)
+{
+ return date->year == 0;
+}
+
/* Debug functions */
const char *month_to_str(month_t month)
{
int compare(date_t *a, date_t *b);
int before(date_t *start, int year, int month, int day, int hour, int min);
+int all_day(date_t *start, date_t *end);
+int no_date(date_t *date);
+
/* Time to string functions */
const char *month_to_str(month_t month);
const char *month_to_string(month_t month);
if (color) wattroff(win, COLOR_PAIR(color));
if (full) {
- mvwprintw(win, y, x, " %2d:%02d-%2d:%02d -",
- event->start.hour, event->start.min,
- event->end.hour, event->end.min);
+ if (all_day(&event->start, &event->end))
+ mvwprintw(win, y, x, " [all day] -");
+ else
+ mvwprintw(win, y, x, " %2d:%02d-%2d:%02d -",
+ event->start.hour, event->start.min,
+ event->end.hour, event->end.min);
x += 15;
}
if (event->name) {
x += 2;
/* Print time */
- mvwprintw(win, y, x, "%04d-%02d-%02d %2d:%02d",
- todo->due.year, todo->due.month+1, todo->due.day+1,
- todo->due.hour, todo->due.min);
+ if (no_date(&todo->due))
+ mvwprintw(win, y, x, "[no due date]");
+ else
+ mvwprintw(win, y, x, "%04d-%02d-%02d %2d:%02d",
+ todo->due.year, todo->due.month+1, todo->due.day+1,
+ todo->due.hour, todo->due.min);
x += 18;
/* Print status */