X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fview.c;h=7c62671f32d4631ae8957c27737d3bb18bf2baef;hb=bfc415555da3be7f94738b3ac62c511a53b78674;hp=35278494fed12cea0276c6dc04931285f36b9f8c;hpb=90c52cc59761fa1d4fa362cd5efd99c5c64f78a4;p=lackey diff --git a/src/view.c b/src/view.c index 3527849..7c62671 100644 --- a/src/view.c +++ b/src/view.c @@ -81,8 +81,12 @@ view_t *menu[] = { &spacer, &settings_view, &help_view }; -/* Global data */ +/* Config data */ int COMPACT = 0; +int MORNING = 8; + +/* Global data */ +edit_t EDIT = EDIT_NONE; /* Local data */ view_t *view = &day_view; @@ -116,8 +120,8 @@ static void draw_header(void) /* Draw date */ move(0, COLS-19); printw("%04d-%02d-%02d %02d:%02d:%02d", - NOW.year, NOW.month, NOW.day, - NOW.hour, NOW.min, NOW.sec); + NOW.year, NOW.month+1, NOW.day+1, + NOW.hour, NOW.min, NOW.sec); attroff(COLOR_PAIR(COLOR_TITLE)); if (!COMPACT) @@ -174,7 +178,7 @@ void wshrink(WINDOW *win, int top) /* Helper functions */ void event_box(WINDOW *win, event_t *event, int y, int x, int h, int w) { - int l = 0; + int i, l = 0; int s = y < 0 ? -y-1 : 0; int color = get_color(event->cat); @@ -191,11 +195,18 @@ void event_box(WINDOW *win, event_t *event, int y, int x, int h, int w) if (h >= 2) mvwadd_wch(win, y+h-1, x+w-1, WACS_T_LRCORNER); if (h >= 2) mvwhline_set(win, y+h-1, x+1, WACS_T_HLINE, w-2); + for (i = 1; i < h-1; i++) + mvwhline(win, y+i, x+1, ' ', w-2); + if (color) wattroff(win, COLOR_PAIR(color)); + if (event == EVENT) wattron(win, WA_BOLD | WA_REVERSE); + if (event == EVENT) mvwhline(win, y+s, x, ' ', w); if (lname) mvwprintw(win, y+l++, x+1, "%.*s", w-2, event->name); + if (event == EVENT) wattroff(win, WA_REVERSE); if (lloc) mvwprintw(win, y+l++, x+1, "@ %.*s", w-4, event->loc); if (ldesc) mvwprintw(win, y+l++, x+1, "%.*s", w-2, event->desc); + if (event == EVENT) wattroff(win, WA_BOLD); } void event_line(WINDOW *win, event_t *event, int y, int x, int w, int flags) @@ -206,7 +217,7 @@ void event_line(WINDOW *win, event_t *event, int y, int x, int w, int flags) mvwaddch(win, y, x++, ACS_BLOCK); if (color) wattroff(win, COLOR_PAIR(color)); - if (flags & SHOW_ACTIVE) + if (flags & SHOW_ACTIVE && event == EVENT) wattron(win, A_REVERSE | A_BOLD); if (flags & SHOW_DETAILS) { if (all_day(&event->start, &event->end)) @@ -226,7 +237,7 @@ void event_line(WINDOW *win, event_t *event, int y, int x, int w, int flags) if (flags & SHOW_DETAILS && event->loc) { mvwprintw(win, y, x, " @ %s", event->loc); } - if (flags & SHOW_ACTIVE) + if (flags & SHOW_ACTIVE && event == EVENT) wattroff(win, A_REVERSE | A_BOLD); } @@ -250,7 +261,7 @@ void todo_line(WINDOW *win, todo_t *todo, int y, int x, int w, int flags) x += 2; /* Set background */ - if (flags & SHOW_ACTIVE) + if (flags & SHOW_ACTIVE && todo == TODO) wattron(win, A_REVERSE | A_BOLD); mvwhline(win, y, x, ' ', COLS-x); @@ -275,7 +286,7 @@ void todo_line(WINDOW *win, todo_t *todo, int y, int x, int w, int flags) mvwprintw(win, y, x, "%s", desc); /* Reset flags */ - if (flags & SHOW_ACTIVE) + if (flags & SHOW_ACTIVE && todo == TODO) wattroff(win, A_REVERSE | A_BOLD); } @@ -296,6 +307,8 @@ void view_config(const char *group, const char *name, const char *key, const cha if (match(group, "view")) { if (match(key, "compact")) { COMPACT = get_bool(value); + } else if (match(key, "morning")) { + MORNING = get_number(value); } else if (match(key, "active")) { for (int i = 0; i < N_ELEMENTS(views); i++) { if (match(value, views[i]->name)) { @@ -387,3 +400,10 @@ int view_run(int key, mmask_t btn, int row, int col) /* Pass key to active view */ return view->run(key, btn, row, col); } + +/* View event */ +void view_edit(edit_t mode) +{ + EDIT = mode; + set_view(active, &edit_view); +}