// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "DayLabel.hpp" #include "MonthBox.hpp" #include #include namespace gui { MonthBox::MonthBox(app::ApplicationCommon *app, gui::Item *parent, const int &offsetTop, const uint32_t &width, const uint32_t &height, const uint32_t &dayWidth, const uint32_t &dayHeight, const std::unique_ptr &model, std::array &isDayEmpty) : GridLayout(parent, style::window::default_left_margin, offsetTop, width, height, {dayWidth, dayHeight}) { assert(parent); parent->addWidget(this); month = model->getMonthText(); monthFilterValue = model->getYear() / model->getMonth(); grid.x = dayWidth; grid.y = dayHeight; uint32_t firstDayOffset = model->getFirstWeekOffset(); uint32_t lastDay = model->getLastDay(); uint32_t iterations = style::window::calendar::week_days_number + firstDayOffset + lastDay; uint32_t i; for (i = 0; i < iterations; ++i) { if (i < style::window::calendar::week_days_number + firstDayOffset) { auto day = new DayLabel(app, this, i, firstDayOffset, style::window::calendar::day_cell_width, style::window::calendar::day_cell_height, true); addWidget(day); } else { auto day = new DayLabel(app, this, i, firstDayOffset, style::window::calendar::day_cell_width, style::window::calendar::day_cell_height, isDayEmpty[i - (style::window::calendar::week_days_number + firstDayOffset)]); addWidget(day); } } date::year_month_day actualDate = TimePointToYearMonthDay(TimePointNow()); if (model->getYear() == actualDate.year() && model->getMonth() == actualDate.month()) { focusChangedCallback = [=](Item &item) { setFocusOnElement(unsigned(actualDate.day()) - 1); return true; }; } } } /* namespace gui */