]> Pileus Git - lackey/commitdiff
Convert YEAR/MONTH/DAY to Selection struct
authorAndy Spencer <andy753421@gmail.com>
Sun, 16 Jun 2013 23:21:55 +0000 (23:21 +0000)
committerAndy Spencer <andy753421@gmail.com>
Sun, 16 Jun 2013 23:21:55 +0000 (23:21 +0000)
This lets us add more precision in the selection (hours/minutes)
without having to keep adding variables.

src/cal.c
src/date.c
src/date.h
views/day.c
views/events.c
views/month.c
views/week.c
views/year.c

index ee574b7b38e76d4d6c0d9bd0a15aa09b9aa51432..b519d588fb4601d6a33470c2b60997e9bee51591 100644 (file)
--- a/src/cal.c
+++ b/src/cal.c
@@ -111,7 +111,7 @@ void cal_init(void)
                 ical_cals());
 
        /* Load data */
-       cal_load(YEAR, MONTH, DAY, 1);
+       cal_load(SEL.year, SEL.month, SEL.day, 1);
 
        /* Debug */
 #ifdef DEBUG_CALS
index f1719289088a9d19d68190a9d9c4502395a8d08c..9bcf81663906629c95bbf32890ae13026c05946e 100644 (file)
@@ -23,9 +23,7 @@
 #include "date.h"
 
 /* Global data */
-year_t  YEAR;
-month_t MONTH;
-day_t   DAY;
+date_t  SEL;
 
 /* Initialize */
 void date_init(void)
@@ -33,9 +31,9 @@ void date_init(void)
        time_t     sec = time(NULL);
        struct tm *tm  = localtime(&sec);
 
-       YEAR  = tm->tm_year+1900;
-       MONTH = tm->tm_mon;
-       DAY   = tm->tm_mday-1;
+       SEL.year  = tm->tm_year+1900;
+       SEL.month = tm->tm_mon;
+       SEL.day   = tm->tm_mday-1;
 }
 
 /* Time functions */
index 4d6438bc95ad13ad4c1919c9e5037ae6dc61f44d..a04d0dead46ce1be5835f173a9e378fd726e171d 100644 (file)
@@ -57,9 +57,7 @@ typedef struct {
 } date_t;
 
 /* Global data */
-extern year_t  YEAR;
-extern month_t MONTH;
-extern day_t   DAY;
+extern date_t SEL; // date and time the user is looking at
 
 /* Initialize */
 void date_init(void);
index 3873204f3bd4e8f7cd754292246bec23e4a279ef..b0f4c1eb39a351d62b1834f8fe8d3e4bcd3d741c 100644 (file)
@@ -108,27 +108,27 @@ void day_size(int rows, int cols)
 /* Day draw */
 void day_draw(void)
 {
-       const char *mstr = month_to_string(MONTH);
-       const char *dstr = day_to_string(day_of_week(YEAR, MONTH, DAY));
+       const char *mstr = month_to_string(SEL.month);
+       const char *dstr = day_to_string(day_of_week(SEL.year, SEL.month, SEL.day));
 
        int y = !COMPACT+1;
        event_t *event;
 
        /* Load cal data */
-       cal_load(YEAR, MONTH, DAY, 1);
+       cal_load(SEL.year, SEL.month, SEL.day, 1);
 
        /* Print Header */
        if (COMPACT) wattron(win, A_REVERSE | A_BOLD);
        mvwhline(win, 0, 0, ' ', COLS);
-       mvwprintw(win, 0, 0, "%s, %s %d", dstr, mstr, DAY+1);
-       mvwprintw(win, 0, COLS-10, "%d-%02d-%02d", YEAR, MONTH, DAY+1);
+       mvwprintw(win, 0, 0, "%s, %s %d", dstr, mstr, SEL.day+1);
+       mvwprintw(win, 0, COLS-10, "%d-%02d-%02d", SEL.year, SEL.month, SEL.day+1);
        if (COMPACT) wattroff(win, A_REVERSE | A_BOLD);
 
        /* Print all day events */
        event = EVENTS;
        int allday = 0;
-       while (event && before(&event->start, YEAR, MONTH, DAY, 24, 0)) {
-               if (!before(&event->end, YEAR, MONTH, DAY, 0, 1) &&
+       while (event && before(&event->start, SEL.year, SEL.month, SEL.day, 24, 0)) {
+               if (!before(&event->end, SEL.year, SEL.month, SEL.day, 0, 1) &&
                    get_mins(&event->start, &event->end) > 23*60)
                        event_line(win, event, y+allday++, 6, COLS, SHOW_DETAILS);
                event = event->next;
@@ -152,8 +152,8 @@ void day_draw(void)
        for (int h = 0; h < 24; h++)
        for (int m = 0; m < 60; m+=15)
        while (event && before(&event->start,
-                       YEAR, MONTH, DAY, h+(m+15)/60, (m+15)%60)) {
-               if (!before(&event->start, YEAR, MONTH, DAY, h, m) &&
+                       SEL.year, SEL.month, SEL.day, h+(m+15)/60, (m+15)%60)) {
+               if (!before(&event->start, SEL.year, SEL.month, SEL.day, h, m) &&
                    get_mins(&event->start, &event->end) <= 23*60) {
                        int col    = get_col(active, N_ELEMENTS(active), event, &ncols);
                        int left   = ROUND((col+0.0)*(COLS-6)/ncols) + 1;
@@ -188,7 +188,7 @@ int day_run(int key, mmask_t btn, int row, int col)
        }
        line = CLAMP(line, 0, 24*4);
        if (days)
-               add_days(&YEAR, &MONTH, &DAY, days);
+               add_days(&SEL.year, &SEL.month, &SEL.day, days);
        if (ref) {
                werase(win);
                day_draw();
index 56d6aab9c144ba4f26585887b2137d7a539d5fd4..ced1a3fc3e3bb577333ed17a594a8810a2b8a17c 100644 (file)
@@ -44,11 +44,11 @@ void events_draw(void)
        int days = 2*7;
        int min  = 12;
 
-       date_t start = {YEAR, MONTH, DAY,    0, 0};
-       date_t cur   = {YEAR, MONTH, DAY-1,  0, 0};
-       date_t end   = {YEAR, MONTH, DAY,   24, 0};
+       date_t start = {SEL.year, SEL.month, SEL.day,    0, 0};
+       date_t cur   = {SEL.year, SEL.month, SEL.day-1,  0, 0};
+       date_t end   = {SEL.year, SEL.month, SEL.day,   24, 0};
        add_days(&end.year, &end.month, &end.day, days);
-       cal_load(YEAR, MONTH, DAY, days);
+       cal_load(SEL.year, SEL.month, SEL.day, days);
 
        int      row   = 0;
        int      count = 0;
index a51935d95d7cea6f4fc2db312a7c5a1c980e2a0f..99fd09f8e26894cbb671decb7a40682d8553dba9 100644 (file)
@@ -42,23 +42,23 @@ void month_size(int rows, int cols)
 /* Month draw */
 void month_draw(void)
 {
-       const char *name  = month_to_string(MONTH);
-       const int   start = start_of_month(YEAR, MONTH);
-       const int   days  = days_in_month(YEAR, MONTH);
-       const int   weeks = weeks_in_month(YEAR, MONTH);
+       const char *name  = month_to_string(SEL.month);
+       const int   start = start_of_month(SEL.year, SEL.month);
+       const int   days  = days_in_month(SEL.year, SEL.month);
+       const int   weeks = weeks_in_month(SEL.year, SEL.month);
        const int   hdr   = COMPACT ? 3 : 4;
        const float midpt = (float)COLS/2.0 - (strlen(name) + 1 + 4)/2.0;
        const float hstep = (float)(COLS-1)/7.0;
        const float vstep = (float)(LINES-2-hdr+COMPACT)/weeks;
 
        /* Load cal data */
-       cal_load(YEAR, MONTH, 0, days);
+       cal_load(SEL.year, SEL.month, 0, days);
 
        /* Print Header */
        if (COMPACT) wattron(win, A_REVERSE | A_BOLD);
        if (COMPACT) mvwhline(win, 0, 0, ' ' | A_REVERSE | A_BOLD, COLS);
        if (COMPACT) mvwhline(win, 1, 0, ' ' | A_REVERSE | A_BOLD, COLS);
-       mvwprintw(win, 0, midpt, "%s %d", name, YEAR);
+       mvwprintw(win, 0, midpt, "%s %d", name, SEL.year);
        for (int d = 0; d < 7; d++) {
                const char *str = hstep >= 10 ? day_to_string(d+SUN) : day_to_str(d+SUN);
                mvwprintw(win, 1, ROUND(1+d*hstep), "%s", str);
@@ -70,9 +70,9 @@ void month_draw(void)
        for (int d = 0; d < days; d++) {
                int row = (start + d) / 7;
                int col = (start + d) % 7;
-               if (d == DAY) wattron(win, A_BOLD);
+               if (d == SEL.day) wattron(win, A_BOLD);
                mvwprintw(win, ROUND(hdr+row*vstep), ROUND(1+col*hstep), "%d", d+1);
-               if (d == DAY) wattroff(win, A_BOLD);
+               if (d == SEL.day) wattroff(win, A_BOLD);
        }
 
        /* Print events */
@@ -82,8 +82,8 @@ void month_draw(void)
                int e = ROUND(hdr+(((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)){
+               while (event && before(&event->start, SEL.year, SEL.month, d, 24, 0)) {
+                       if (!before(&event->start, SEL.year, SEL.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, 0);
                                y++;
@@ -108,8 +108,8 @@ void month_draw(void)
        }
 
        /* Draw today */
-       int col = day_of_week(YEAR, MONTH, DAY);
-       int row = (start+DAY) / 7;
+       int col = day_of_week(SEL.year, SEL.month, SEL.day);
+       int row = (start+SEL.day) / 7;
        int l = ROUND((col+0)*hstep);
        int r = ROUND((col+1)*hstep);
        int t = ROUND((row+0)*vstep+hdr-1);
@@ -138,8 +138,8 @@ int month_run(int key, mmask_t btn, int row, int col)
                case 'o': months =  1; break;
        }
        if (days || months) {
-               add_days(&YEAR, &MONTH, &DAY, days);
-               add_months(&YEAR, &MONTH, months);
+               add_days(&SEL.year, &SEL.month, &SEL.day, days);
+               add_months(&SEL.year, &SEL.month, months);
                werase(win);
                month_draw();
                wrefresh(win);
index 25c55c860f824af2499345b7aea8d1b77c559c13..82b56b31a69aa50742fbc2b55605880bf009c978 100644 (file)
@@ -56,9 +56,9 @@ void week_draw(void)
        event_t *event;
 
        /* Get start of week */
-       year_t  year  = YEAR;
-       month_t month = MONTH;
-       day_t   day   = DAY;
+       year_t  year  = SEL.year;
+       month_t month = SEL.month;
+       day_t   day   = SEL.day;
        int shift = day_of_week(year, month, day);
        add_days(&year, &month, &day, -shift);
 
@@ -72,8 +72,8 @@ void week_draw(void)
        /* Print Header */
        int rev = COMPACT ? A_REVERSE | A_BOLD : 0;
        wattron(win, rev);
-       mvwprintw(win, 0, 0, "%-*s",  COLS, month_to_str(MONTH));
-       mvwprintw(win, 1, 0, "%-0*d", COLS, YEAR);
+       mvwprintw(win, 0, 0, "%-*s",  COLS, month_to_str(SEL.month));
+       mvwprintw(win, 1, 0, "%-0*d", COLS, SEL.year);
        wattroff(win, rev);
        mvwhline(win, 0, x+l, ' ', r-l-1);
        mvwhline(win, 1, x+l, ' ', r-l-1);
@@ -172,7 +172,7 @@ int week_run(int key, mmask_t btn, int row, int col)
        }
        line = CLAMP(line, 0, 24*4);
        if (days)
-               add_days(&YEAR, &MONTH, &DAY, days);
+               add_days(&SEL.year, &SEL.month, &SEL.day, days);
        if (ref) {
                werase(win);
                week_draw();
index 56bc8436be1a6bffc89564d2b9c150ea888a9016..ddcf5e4618cd0bbd287db0b25855bb39c5941d8d 100644 (file)
@@ -34,8 +34,8 @@ static void print_month(month_t month, int y, int x)
 {
        event_t    *event = EVENTS;
        const char *name  = month_to_string(month);
-       const int   start = start_of_month(YEAR, month);
-       const char  days  = days_in_month(YEAR, month);
+       const int   start = start_of_month(SEL.year, month);
+       const char  days  = days_in_month(SEL.year, month);
        mvwprintw(win, y, x+MW/2-strlen(name)/2, "%s", name);
        wmove(win, y+1, x);
        for (int d = 0; d < 7; d++)
@@ -45,13 +45,13 @@ static void print_month(month_t month, int y, int x)
                int col = (start + d) % 7;
 
                int busy = 0;
-               while (event && before(&event->start, YEAR, month, d, 24, 0)) {
-                       if (!before(&event->start, YEAR, month, d, 0, 0))
+               while (event && before(&event->start, SEL.year, month, d, 24, 0)) {
+                       if (!before(&event->start, SEL.year, month, d, 0, 0))
                                busy = 1;
                        event = event->next;
                }
 
-               int today = month == MONTH && d == DAY;
+               int today = month == SEL.month && d == SEL.day;
 
                int attr  = (busy  ? A_BOLD|A_UNDERLINE : A_DIM)
                          | (today ? A_REVERSE          : 0    );
@@ -82,11 +82,11 @@ void year_draw(void)
        int h[4] = {};
 
        /* Load cal data */
-       cal_load(YEAR, 0, 0, 366);
+       cal_load(SEL.year, 0, 0, 366);
 
        /* Determine heights */
        for (int m = 0; m < 12; m++) {
-               int weeks = weeks_in_month(YEAR, m);
+               int weeks = weeks_in_month(SEL.year, m);
                h[m/3] = MAX(h[m/3], weeks+2);
        }
        int sum = h[0]+h[1]+h[2]+h[3];
@@ -94,7 +94,7 @@ void year_draw(void)
        /* Print Header */
        if (COMPACT) wattron(win, A_REVERSE | A_BOLD);
        if (COMPACT) mvwhline(win, y, 0, A_REVERSE | A_BOLD, COLS);
-       mvwprintw(win, y++, COLS/2-2, "%d", YEAR);
+       mvwprintw(win, y++, COLS/2-2, "%d", SEL.year);
        if (COMPACT) wattroff(win, A_REVERSE | A_BOLD);
 
        /* Print Months */
@@ -124,18 +124,18 @@ void year_draw(void)
 /* Year run */
 int year_run(int key, mmask_t btn, int row, int col)
 {
-       day_t d = DAY;
-       month_t m = MONTH;
-       year_t y = YEAR;
-       wday_t day = day_of_week(YEAR, MONTH, DAY);
+       day_t d = SEL.day;
+       month_t m = SEL.month;
+       year_t y = SEL.year;
+       wday_t day = day_of_week(SEL.year, SEL.month, SEL.day);
        int week = (start_of_month(y, m) + d) / 7;
        int dir = 0;
 
        /* Step years */
        if (key == 'i')
-               YEAR--;
+               SEL.year--;
        if (key == 'o')
-               YEAR++;
+               SEL.year++;
 
        /* Get direction */
        if (key == 'h' || key == 'k')
@@ -148,9 +148,9 @@ int year_run(int key, mmask_t btn, int row, int col)
                for (int i = 0; i < 90/7; i++) {
                        add_days(&y, &m, &d, dir*7);
                        if (day_of_week(y, m, d) == day &&
-                           y == YEAR && m%3 == MONTH%3) {
-                               MONTH = m;
-                               DAY = d;
+                           y == SEL.year && m%3 == SEL.month%3) {
+                               SEL.month = m;
+                               SEL.day = d;
                                break;
                        }
                }
@@ -161,19 +161,19 @@ int year_run(int key, mmask_t btn, int row, int col)
                for (int i = 0; i < 90; i++) {
                        add_days(&y, &m, &d, dir);
                        if ((start_of_month(y, m) + d) / 7 == week &&
-                           y == YEAR && m/3 == MONTH/3) {
-                               MONTH = m;
-                               DAY = d;
+                           y == SEL.year && m/3 == SEL.month/3) {
+                               SEL.month = m;
+                               SEL.day = d;
                                break;
                        }
                }
        }
 
        /* Refresh */
-       if (dir || y != YEAR) {
+       if (dir || y != SEL.year) {
                werase(win);
                year_draw();
                wrefresh(win);
        }
-       return dir || y != YEAR;
+       return dir || y != SEL.year;
 }