/* 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 */
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);
}
/* 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++) {