]> Pileus Git - lackey/commitdiff
Add some special formatting
authorAndy Spencer <andy753421@gmail.com>
Mon, 22 Oct 2012 03:48:46 +0000 (03:48 +0000)
committerAndy Spencer <andy753421@gmail.com>
Mon, 22 Oct 2012 03:48:46 +0000 (03:48 +0000)
src/date.c
src/date.h
src/view.c

index e0e439956d39edb2cd7dc625fd4475d980b31832..c7e5cbde8da081cfb2f810e85618072d0fff92dc 100644 (file)
@@ -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)
 {
index 50211129e15aa2571efcf247a1cbb1788c797093..180f460516b72cb67aca3d8b8d2d537e4043e2e0 100644 (file)
@@ -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);
index 5c18d03a490684cf6f05eb03808741454f75cc61..fcba91598bc9a03c8273d8d02aa8b2df1a5ecaad 100644 (file)
@@ -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 */