]> Pileus Git - lackey/blobdiff - src/view/week.c
Add day and week view
[lackey] / src / view / week.c
index ddaec477bdaf8b48a041f89ff330dfb90206982e..c2d3089fc11f5ecd94936633f8f589b943f0e0c9 100644 (file)
@@ -1,16 +1,54 @@
+#include <string.h>
 #include <ncurses.h>
 
-/* week init */
-void week_init(void)
+#include "main.h"
+#include "util.h"
+
+/* Static data */
+static WINDOW *win;
+
+/* Week init */
+void week_init(WINDOW *_win)
 {
+       win = _win;
 }
 
-/* week draw */
+/* Week draw */
 void week_draw(void)
 {
+       int x = 6;
+       int y = 3;
+       const float hstep = (float)(COLS-x)/5.0;
+
+       /* Get start of week */
+       year_t  year  = YEAR;
+       month_t month = MONTH;
+       day_t   day   = DAY;
+       int shift = day_of_week(year, month, day);
+       add_days(&year, &month, &day, -shift+MON);
+
+       /* Print Header */
+       mvwprintw(win, 1, 0, "%s", month_to_str(MONTH));
+       for (int d = 0; d < 5; d++) {
+               // FIXME..
+               const char *str = hstep >= 10 ? day_to_string(d+MON) : day_to_str(d+MON);
+               mvwprintw(win, 0, x+ROUND(d*hstep), "%02d/%02d", month, day);
+               mvwprintw(win, 1, x+ROUND(d*hstep), "%s", str);
+               add_days(&year, &month, &day, 1);
+       }
+
+       /* Print times */
+       int start = 8;
+       for (int h = 0; h < (LINES-6)/4+1; h++)
+               mvwprintw(win, 3+h*4, 0,"%02d:%02d", (start+h)%12, 0);
+
+       /* Print lines */
+       mvwhline(win, y-1, 0, ACS_HLINE, COLS);
+       for (int d = 0; d < 5; d++)
+               mvwvline(win, y, x+ROUND(d*hstep)-1, ACS_VLINE, LINES-y-2);
 }
 
-/* week run */
+/* Week run */
 int week_run(int key, mmask_t btn, int row, int col)
 {
        return 0;