]> Pileus Git - lackey/blobdiff - views/week.c
Add compact mode and view config data
[lackey] / views / week.c
index e94c9d819ca6302c8b4c07c7185fc6dbfa6fc7fa..414c35450b4c3a0e16e7f29b00b801665fe133c6 100644 (file)
@@ -45,16 +45,19 @@ void week_init(WINDOW *_win)
 /* Week size */
 void week_size(int rows, int cols)
 {
-       wresize(head,       2, cols  );
-       wresize(times, rows-3,      5);
-       wresize(body,  rows-3, cols-6);
+       int hdr = 3-COMPACT;
+       wresize(head,  2,        cols  );
+       wresize(times, rows-hdr,      5);
+       wresize(body,  rows-hdr, cols-6);
+       mvderwin(times, hdr, 0);
+       mvderwin(body,  hdr, 6);
 }
 
 /* Week draw */
 void week_draw(void)
 {
        int x = 6;
-       int y = 3;
+       int y = 3 - COMPACT;
        const float hstep = (float)(COLS-x)/7.0;
 
        /* Get start of week */
@@ -64,17 +67,28 @@ void week_draw(void)
        int shift = day_of_week(year, month, day);
        add_days(&year, &month, &day, -shift);
 
+       /* For today */
+       int l = x+ROUND((shift+0)*hstep)-1;
+       int r = x+ROUND((shift+1)*hstep)-1;
+
        /* Print Header */
-       mvwprintw(head, 0, 0, "%s",   month_to_str(MONTH));
-       mvwprintw(head, 1, 0, "%04d", YEAR);
+       int rev = COMPACT ? A_REVERSE | A_BOLD : 0;
+       wattron(head, rev);
+       mvwprintw(head, 0, 0, "%-*s",   COLS, month_to_str(MONTH));
+       mvwprintw(head, 1, 0, "%-0*d", COLS, YEAR);
+       wattroff(head, rev);
+       mvwhline(head,  0, l+1, ' ', r-l-1);
+       mvwhline(head,  1, l+1, ' ', r-l-1);
+       wattron(head, rev);
        for (int d = 0; d < 7; d++) {
                const char *str = hstep >= 10 ? day_to_string(d) : day_to_str(d);
-               if (d == shift) wattron(head, A_BOLD);
+               if (d == shift) wattrset(head, A_BOLD);
                mvwprintw(head, 0, x+ROUND(d*hstep), "%s", str);
                mvwprintw(head, 1, x+ROUND(d*hstep), "%02d/%02d", month+1, day+1);
-               if (d == shift) wattroff(head, A_BOLD);
+               if (d == shift) wattrset(head, rev);
                add_days(&year, &month, &day, 1);
        }
+       wattroff(head, rev);
 
        /* Print times */
        mvwprintw(times, 0, 0, "%02d:%02d", ((line/4)-1)%12+1, (line*15)%60);
@@ -100,15 +114,14 @@ void week_draw(void)
        }
 
        /* Print lines */
-       mvwhline(win, y-1, 0, ACS_HLINE, COLS);
+       if (!COMPACT)
+               mvwhline(win, y-1, 0, ACS_HLINE, COLS);
        for (int d = 0; d < 7; d++)
-               mvwvline(win, y, x+ROUND(d*hstep)-1, ACS_VLINE, LINES-y-2);
-
+               mvwvline(win, y, x+ROUND(d*hstep)-1, ACS_VLINE, LINES-y-2+COMPACT);
 
        /* Draw today */
-       int l = x+ROUND((shift+0)*hstep)-1;
-       int r = x+ROUND((shift+1)*hstep)-1;
-       mvwhline    (win, y-1, l, ACS_BLOCK, r-l+1);
+       if (!COMPACT)
+               mvwhline(win, y-1, l, ACS_BLOCK, r-l+1);
        mvwvline_set(win, y,   l, WACS_T_VLINE, LINES-y-2);
        mvwvline_set(win, y,   r, WACS_T_VLINE, LINES-y-2);
        for (int h = (line+3)/4; h < 24; h++) {