From e8d71b7dc27508ffe496116244f9dceed91b7b5e Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Mon, 22 Oct 2012 03:48:46 +0000 Subject: [PATCH] Add some special formatting --- src/date.c | 12 ++++++++++++ src/date.h | 3 +++ src/view.c | 18 ++++++++++++------ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/date.c b/src/date.c index e0e4399..c7e5cbd 100644 --- a/src/date.c +++ b/src/date.c @@ -141,6 +141,18 @@ int before(date_t *start, int year, int month, int day, int hour, int min) 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) { diff --git a/src/date.h b/src/date.h index 5021112..180f460 100644 --- a/src/date.h +++ b/src/date.h @@ -80,6 +80,9 @@ int get_mins(date_t *start, date_t *end); 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); diff --git a/src/view.c b/src/view.c index 5c18d03..fcba915 100644 --- a/src/view.c +++ b/src/view.c @@ -113,9 +113,12 @@ void event_line(WINDOW *win, event_t *event, int y, int x, int w, int full) 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) { @@ -148,9 +151,12 @@ void todo_line(WINDOW *win, todo_t *todo, int y, int x, int w, int full) 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 */ -- 2.43.2