]> Pileus Git - lackey/blobdiff - src/view.c
Add some special formatting
[lackey] / src / view.c
index ac33fc87f784b2c9c53359b69fde1cea0841aaf2..fcba91598bc9a03c8273d8d02aa8b2df1a5ecaad 100644 (file)
@@ -50,7 +50,7 @@ view_t views[] = {
        { "Help",     help_init,     help_size,     help_draw,     help_run,     {KEY_F(8), '8', '?'} },
 };
 
-int active = 6;
+int active = 0;
 
 /* Local functions */
 static void draw_header(void)
@@ -113,8 +113,13 @@ 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, " %02d:%02d - ", event->start.hour, event->start.min);
-               x += 9;
+               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) {
                const char *label = event->name ?: event->desc;
@@ -129,20 +134,41 @@ void event_line(WINDOW *win, event_t *event, int y, int x, int w, int full)
 void todo_line(WINDOW *win, todo_t *todo, int y, int x, int w, int full)
 {
        char perc[16];
+       char desc[LINES];
        sprintf(perc, "%2d%%", todo->status);
 
-       int color = get_color(todo->cat);
-       if (color) wattron(win, COLOR_PAIR(color));
-       mvwaddch(win, y, 2, ACS_BLOCK);
-       if (color) wattroff(win, COLOR_PAIR(color));
-
-       mvwprintw(win, y, 4, "%04d-%02d-%02d %2d:%02d",
-                       todo->due.year, todo->due.month+1, todo->due.day+1,
-                       todo->due.hour, todo->due.min);
-       mvwprintw(win, y, 22, "%s",
-                       todo->status == NEW  ? "new"  :
-                       todo->status == DONE ? "done" : perc);
-       mvwprintw(win, y, 30, "%s: %s", todo->name, todo->desc);
+       int cat    = get_color(todo->cat);
+       int status = todo->status == NEW  ? COLOR_NEW  :
+                    todo->status == DONE ? COLOR_DONE : COLOR_WIP;
+
+       sprintf(desc, "%s", todo->name ?: todo->desc ?: "");
+       strsub(desc, '\n', ';');
+
+       /* Print category */
+       if (cat) wattron(win, COLOR_PAIR(cat));
+       mvwaddch(win, y, x, ACS_BLOCK);
+       if (cat) wattroff(win, COLOR_PAIR(cat));
+       x += 2;
+
+       /* Print time */
+       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 */
+       if (status) wattron(win, COLOR_PAIR(status));
+       mvwprintw(win, y, x, "%s",
+               todo->status == NEW    ? "new"  :
+               todo->status == DONE   ? "done" : perc);
+       if (status) wattroff(win, COLOR_PAIR(status));
+       x += 6;
+
+       /* Print description */
+       mvwprintw(win, y, x, "%s", desc);
 }
 
 /* View init */