]> Pileus Git - lackey/commitdiff
Add bit flags for event and todo line items
authorAndy Spencer <andy753421@gmail.com>
Sun, 16 Jun 2013 10:31:38 +0000 (10:31 +0000)
committerAndy Spencer <andy753421@gmail.com>
Sun, 16 Jun 2013 10:31:38 +0000 (10:31 +0000)
This supports drawing the "current" item and allows for additional
options if we need them in the future.

src/view.c
src/view.h
views/day.c
views/events.c
views/todo.c

index 387e5840fe5aba0cdb5440c6fe9258f2a4e627d8..fb97c517c555ed2fbc82364197397a08ff41295d 100644 (file)
@@ -187,7 +187,7 @@ void event_box(WINDOW *win, event_t *event, int y, int x, int h, int w)
        if (l<h && event->desc) mvwprintw(win, y+l++, x+1, "%.*s",   w-2, event->desc);
 }
 
-void event_line(WINDOW *win, event_t *event, int y, int x, int w, int full)
+void event_line(WINDOW *win, event_t *event, int y, int x, int w, int flags)
 {
        int color = get_color(event->cat);
 
@@ -195,26 +195,31 @@ void event_line(WINDOW *win, event_t *event, int y, int x, int w, int full)
        mvwaddch(win, y, x++, ACS_BLOCK);
        if (color) wattroff(win, COLOR_PAIR(color));
 
-       if (full) {
+       if (flags & SHOW_ACTIVE)
+               wattron(win, A_REVERSE | A_BOLD);
+       if (flags & SHOW_DETAILS) {
                if (all_day(&event->start, &event->end))
-                       mvwprintw(win, y, x, " [all day]   -");
+                       mvwprintw(win, y, x+1, "[all day]   - ");
                else
-                       mvwprintw(win, y, x, " %2d:%02d-%2d:%02d -",
+                       mvwprintw(win, y, x+1, "%2d:%02d-%2d:%02d - ",
                                        event->start.hour, event->start.min,
                                        event->end.hour,   event->end.min);
                x += 15;
+               w -= 15;
        }
        if (event->name) {
                const char *label = event->name ?: event->desc;
                mvwprintw(win, y, x, "%-*.*s", w-1, w-1, label);
                x += MIN(strlen(label), w-1);
        }
-       if (full && event->loc) {
+       if (flags & SHOW_DETAILS && event->loc) {
                mvwprintw(win, y, x, " @ %s", event->loc);
        }
+       if (flags & SHOW_ACTIVE)
+               wattroff(win, A_REVERSE | A_BOLD);
 }
 
-void todo_line(WINDOW *win, todo_t *todo, int y, int x, int w, int full)
+void todo_line(WINDOW *win, todo_t *todo, int y, int x, int w, int flags)
 {
        char perc[16];
        char desc[LINES];
@@ -233,6 +238,11 @@ void todo_line(WINDOW *win, todo_t *todo, int y, int x, int w, int full)
        if (cat) wattroff(win, COLOR_PAIR(cat));
        x += 2;
 
+       /* Set background */
+       if (flags & SHOW_ACTIVE)
+               wattron(win, A_REVERSE | A_BOLD);
+       mvwhline(win, y, x, ' ', COLS-x);
+
        /* Print time */
        if (no_date(&todo->due))
                mvwprintw(win, y, x, "[no due date]");
@@ -252,6 +262,10 @@ void todo_line(WINDOW *win, todo_t *todo, int y, int x, int w, int full)
 
        /* Print description */
        mvwprintw(win, y, x, "%s", desc);
+
+       /* Reset flags */
+       if (flags & SHOW_ACTIVE)
+               wattroff(win, A_REVERSE | A_BOLD);
 }
 
 /* View init */
index 3643663faedd570856b61c4f6bcb2b838b26a203..7f967ea066732a90ade60f871f6b38ffe4c8003b 100644 (file)
 #define COLOR_WORK  8
 #define COLOR_OTHER 9
 
+/* Display flags */
+#define SHOW_DETAILS 0x1
+#define SHOW_ACTIVE  0x2
+
 /* Config data */
 extern int COMPACT;
 
@@ -37,8 +41,8 @@ void wshrink(WINDOW *win, int top);
 
 /* Helper functions */
 void event_box(WINDOW *win, event_t *event, int y, int x, int h, int w);
-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);
+void event_line(WINDOW *win, event_t *event, int y, int x, int w, int flags);
+void todo_line(WINDOW *win, todo_t *todo, int y, int x, int w, int flags);
 
 /* View functions */
 void view_init(void);
index 62ef827b77e021afec25d36b42b39acf5bc93d5d..3873204f3bd4e8f7cd754292246bec23e4a279ef 100644 (file)
@@ -130,7 +130,7 @@ void day_draw(void)
        while (event && before(&event->start, YEAR, MONTH, DAY, 24, 0)) {
                if (!before(&event->end, YEAR, MONTH, DAY, 0, 1) &&
                    get_mins(&event->start, &event->end) > 23*60)
-                       event_line(win, event, y+allday++, 6, COLS, 1);
+                       event_line(win, event, y+allday++, 6, COLS, SHOW_DETAILS);
                event = event->next;
        }
        if (allday && !COMPACT)
index eec7ab002c50c5108e23ead3eccf9e81a7584325..e254ffbf6805b1e6003131d0f97de087f2efc732 100644 (file)
@@ -77,7 +77,7 @@ void events_draw(void)
                                wattroff(win, A_BOLD);
                                row++;
                        }
-                       event_line(win, event, row++-line, 4, COLS-2, 1);
+                       event_line(win, event, row++-line, 4, COLS-4, SHOW_DETAILS);
                        if (event->name && event->desc)
                                mvwprintw(win, row++-line, 14, "%s", event->desc);
                        cur = next;
index d85f8a80496291b1cd6b8704fc8ec9da20791d8f..8ab6c9cb36537624d25b1a9a3b2860a76b1041be 100644 (file)
@@ -37,7 +37,7 @@ static int print_todos(WINDOW *win, int row, todo_t *todos, status_t low, status
        int n = 0;
        for (todo_t *cur = todos; cur; cur = cur->next)
                if (low <= cur->status && cur->status <= high)
-                       todo_line(win, cur, row+n++, 4, COLS-4, 1);
+                       todo_line(win, cur, row+n++, 4, COLS-4, SHOW_DETAILS);
        return n;
 }