#include "util.h"
#include "date.h"
+#include "event.h"
+#include "screen.h"
/* Static data */
static WINDOW *win;
win = _win;
}
+/* Month size */
+void month_size(int rows, int cols)
+{
+}
+
/* Month draw */
void month_draw(void)
{
const float hstep = (float)(COLS-1)/7.0;
const float vstep = (float)(LINES-6)/weeks;
- /* Clear */
- werase(win);
-
/* Print Header */
mvwprintw(win, 0, midpt, "%s %d", name, YEAR);
for (int d = 0; d < 7; d++) {
if (d == DAY) wattroff(win, A_BOLD);
}
+ /* Print events */
+ event_t *event = EVENTS;
+ for (int d = 0; d < days; d++) {
+ int y = ROUND(4+(((start + d) / 7) )*vstep);
+ int e = ROUND(4+(((start + d) / 7)+1)*vstep)-2;
+ int x = ROUND(1+(((start + d) % 7) )*hstep)+3;
+ int w = ROUND(1+(((start + d) % 7)+1)*hstep)-x-1;
+ while (event && before(&event->start, YEAR, MONTH, d, 24, 0)) {
+ if (!before(&event->start, YEAR, MONTH, d, 0, 0)){
+ if (y == e) mvwhline(win, y, x-3, ACS_DARROW, 2);
+ if (y <= e) event_line(win, event, y, x, w);
+ y++;
+ }
+ event = event->next;
+ }
+ }
+
/* Print lines */
for (int w = 1; w < weeks; w++)
mvwhline(win, ROUND(3+w*vstep), 1, ACS_HLINE, COLS-2);
int top = d >= start ? 0 : 1;
int bot = d <= (start+days-1)%7+1 ? weeks : weeks-1;
mvwvline(win, ROUND(4+top*vstep), ROUND(d*hstep),
- ACS_VLINE, (bot-top)*vstep-1);
+ ACS_VLINE, (bot-top)*vstep);
for (int w = 1; w < weeks; w++) {
int chr = w == top ? ACS_TTEE :
w == bot ? ACS_BTEE : ACS_PLUS;
if (days || months) {
add_days(&YEAR, &MONTH, &DAY, days);
add_months(&YEAR, &MONTH, months);
+ werase(win);
month_draw();
wrefresh(win);
}