Lines Matching +full:width +full:- +full:mm

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 2022-2024 Alfonso Sabato Siciliano
82 int width; member
87 static int month_days(int yy, int mm) in month_days() argument
91 if (mm == 2) in month_days()
93 else if (mm == 4 || mm == 6 || mm == 9 || mm == 11) in month_days()
101 static int week_day(int yy, int mm, int dd) in week_day() argument
105 dd += mm < 3 ? yy-- : yy - 2; in week_day()
106 wd = 23*mm/9 + dd + 4 + yy/4 - yy/100 + yy/400; in week_day()
114 int *mm, int *dd) in init_date() argument
119 *mm = MIN(*month, 12); in init_date()
120 if (*mm == 0) in init_date()
121 *mm = 1; in init_date()
123 if (*dd > month_days(*yy, *mm)) in init_date()
124 *dd = month_days(*yy, *mm); in init_date()
127 static void datectl(enum operation op, int *yy, int *mm, int *dd) in datectl() argument
131 ndays = month_days(*yy, *mm); in datectl()
136 *dd -= 7; in datectl()
138 if (*mm == 1) { in datectl()
139 *yy -= 1; in datectl()
140 *mm = 12; in datectl()
142 *mm -= 1; in datectl()
143 ndays = month_days(*yy, *mm); in datectl()
144 *dd = ndays - abs(7 - *dd); in datectl()
151 if (*mm == 12) { in datectl()
153 *mm = 1; in datectl()
155 *mm += 1; in datectl()
156 *dd = *dd + 7 - ndays; in datectl()
161 *dd -= 1; in datectl()
163 if (*mm == 1) { in datectl()
164 *yy -= 1; in datectl()
165 *mm = 12; in datectl()
167 *mm -= 1; in datectl()
168 *dd = month_days(*yy, *mm); in datectl()
175 if (*mm == 12) { in datectl()
177 *mm = 1; in datectl()
179 *mm += 1; in datectl()
184 if (*mm == 1) { in datectl()
185 *mm = 12; in datectl()
186 *yy -= 1; in datectl()
188 *mm -= 1; in datectl()
189 ndays = month_days(*yy, *mm); in datectl()
194 if (*mm == 12) { in datectl()
195 *mm = 1; in datectl()
198 *mm += 1; in datectl()
199 ndays = month_days(*yy, *mm); in datectl()
204 *yy -= 1; in datectl()
205 ndays = month_days(*yy, *mm); in datectl()
211 ndays = month_days(*yy, *mm); in datectl()
219 *mm = 1; in datectl()
224 *mm = 12; in datectl()
240 mvwhline(win, 0, w/2 - l/2, UARROW(conf), l); in drawsquare()
241 mvwhline(win, h-1, w/2 - l/2, DARROW(conf), l); in drawsquare()
248 mvwprintw(win, 1, 1, fmt, m[value - 1]); in drawsquare()
258 print_calendar(struct bsddialog_conf *conf, WINDOW *win, int yy, int mm, int dd, in print_calendar() argument
269 mvwhline(win, h-1, 15, DARROW(conf), 4); in print_calendar()
271 mvwvline(win, 3, w-1, RARROW(conf), 3); in print_calendar()
276 ndays = month_days(yy, mm); in print_calendar()
278 wd = week_day(yy, mm, 1); in print_calendar()
304 if (d->built) { in calendar_redraw()
312 if (d->built) in calendar_redraw()
316 ycal = d->y + d->h - 15; in calendar_redraw()
317 xcal = d->x + d->w/2 - 17; in calendar_redraw()
318 mvwaddstr(d->widget, d->h - 16, d->w/2 - 17, "Month"); in calendar_redraw()
319 update_box(d->conf, mm_win, ycal, xcal, 3, 17, RAISED); in calendar_redraw()
320 mvwaddstr(d->widget, d->h - 16, d->w/2, "Year"); in calendar_redraw()
321 update_box(d->conf, yy_win, ycal, xcal + 17, 3, 17, RAISED); in calendar_redraw()
322 update_box(d->conf, dd_win, ycal + 3, xcal, 9, 34, RAISED); in calendar_redraw()
323 wnoutrefresh(d->widget); in calendar_redraw()
333 int retval, sel, yy, mm, dd; in bsddialog_calendar() local
343 init_date(year, month, day, &yy, &mm, &dd); in bsddialog_calendar()
352 RETURN_ERROR("Cannot build WINDOW for mm"); in bsddialog_calendar()
360 sel = -1; in bsddialog_calendar()
363 drawsquare(conf, mm_win, RAISED, "%15s", mm, sel == 0); in bsddialog_calendar()
365 print_calendar(conf, dd_win, yy, mm, dd, sel == 2); in bsddialog_calendar()
373 if (focusbuttons || conf->button.always_active) { in bsddialog_calendar()
379 if (conf->key.enable_esc) { in bsddialog_calendar()
390 d.bs.curr = conf->button.always_active ? in bsddialog_calendar()
391 0 : -1; in bsddialog_calendar()
397 sel = -1; in bsddialog_calendar()
410 d.bs.curr = conf->button.always_active ? in bsddialog_calendar()
411 0 : -1; in bsddialog_calendar()
414 datectl(RIGHT_DAY, &yy, &mm, &dd); in bsddialog_calendar()
423 d.bs.curr--; in bsddialog_calendar()
427 d.bs.curr = conf->button.always_active ? in bsddialog_calendar()
428 0 : -1; in bsddialog_calendar()
431 datectl(LEFT_DAY, &yy, &mm, &dd); in bsddialog_calendar()
436 sel = -1; in bsddialog_calendar()
445 d.bs.curr = conf->button.always_active ? 0 : -1; in bsddialog_calendar()
448 datectl(UP_MONTH, &yy, &mm, &dd); in bsddialog_calendar()
450 datectl(UP_YEAR, &yy, &mm, &dd); in bsddialog_calendar()
452 datectl(UP_DAY, &yy, &mm, &dd); in bsddialog_calendar()
459 datectl(DOWN_MONTH, &yy, &mm, &dd); in bsddialog_calendar()
461 datectl(DOWN_YEAR, &yy, &mm, &dd); in bsddialog_calendar()
463 datectl(DOWN_DAY, &yy, &mm, &dd); in bsddialog_calendar()
466 case '-': in bsddialog_calendar()
470 datectl(UP_MONTH, &yy, &mm, &dd); in bsddialog_calendar()
472 datectl(UP_YEAR, &yy, &mm, &dd); in bsddialog_calendar()
474 datectl(LEFT_DAY, &yy, &mm, &dd); in bsddialog_calendar()
481 datectl(DOWN_MONTH, &yy, &mm, &dd); in bsddialog_calendar()
483 datectl(DOWN_YEAR, &yy, &mm, &dd); in bsddialog_calendar()
485 datectl(RIGHT_DAY, &yy, &mm, &dd); in bsddialog_calendar()
489 datectl(UP_MONTH, &yy, &mm, &dd); in bsddialog_calendar()
492 datectl(DOWN_MONTH, &yy, &mm, &dd); in bsddialog_calendar()
495 datectl(UP_YEAR, &yy, &mm, &dd); in bsddialog_calendar()
498 datectl(DOWN_YEAR, &yy, &mm, &dd); in bsddialog_calendar()
501 if (conf->key.f1_file == NULL && in bsddialog_calendar()
502 conf->key.f1_message == NULL) in bsddialog_calendar()
525 *month = mm; in bsddialog_calendar()
540 if (d->built) { in datebox_redraw()
548 if (d->built) in datebox_redraw()
552 y = d->y + d->h - 6; in datebox_redraw()
553 x = (d->x + d->w / 2) - 11; in datebox_redraw()
554 update_box(d->conf, di[0].win, y, x, 3, di[0].width, LOWERED); in datebox_redraw()
555 mvwaddch(d->widget, d->h - 5, x - d->x + di[0].width, '/'); in datebox_redraw()
556 x += di[0].width + 1; in datebox_redraw()
557 update_box(d->conf, di[1].win, y, x , 3, di[1].width, LOWERED); in datebox_redraw()
558 mvwaddch(d->widget, d->h - 5, x - d->x + di[1].width, '/'); in datebox_redraw()
559 x += di[1].width + 1; in datebox_redraw()
560 update_box(d->conf, di[2].win, y, x, 3, di[2].width, LOWERED); in datebox_redraw()
561 wnoutrefresh(d->widget); in datebox_redraw()
567 build_dateitem(const char *format, int *yy, int *mm, int *dd, in build_dateitem() argument
574 {UP_MONTH, DOWN_MONTH, NULL, 11, "%9s", mm}, in build_dateitem()
610 int retval, i, sel, yy, mm, dd; in bsddialog_datebox() local
620 init_date(year, month, day, &yy, &mm, &dd); in bsddialog_datebox()
625 if (build_dateitem(conf->date.format, &yy, &mm, &dd, di) != 0) in bsddialog_datebox()
630 sel = -1; in bsddialog_datebox()
643 if (focusbuttons || conf->button.always_active) { in bsddialog_datebox()
649 if (conf->key.enable_esc) { in bsddialog_datebox()
663 d.bs.curr = conf->button.always_active ? in bsddialog_datebox()
664 0 : -1; in bsddialog_datebox()
678 d.bs.curr--; in bsddialog_datebox()
682 d.bs.curr = conf->button.always_active ? in bsddialog_datebox()
683 0 : -1; in bsddialog_datebox()
686 sel--; in bsddialog_datebox()
689 d.bs.curr = (int)d.bs.nbuttons - 1; in bsddialog_datebox()
693 case '-': in bsddialog_datebox()
695 datectl(di[sel].up, &yy, &mm, &dd); in bsddialog_datebox()
701 d.bs.curr = conf->button.always_active ? 0 : -1; in bsddialog_datebox()
704 datectl(di[sel].up, &yy, &mm, &dd); in bsddialog_datebox()
711 datectl(di[sel].down, &yy, &mm, &dd); in bsddialog_datebox()
714 if (conf->key.f1_file == NULL && in bsddialog_datebox()
715 conf->key.f1_message == NULL) in bsddialog_datebox()
738 *month = mm; in bsddialog_datebox()