#include "NewEditEventModel.hpp" #include "application-calendar/widgets/CheckBoxWithLabelAndModel.hpp" #include #include #include NewEditEventModel::NewEditEventModel(app::Application *app, bool mode24H) : application(app), mode24H(mode24H) {} unsigned int NewEditEventModel::requestRecordsCount() { return internalData.size(); } unsigned int NewEditEventModel::getMinimalItemHeight() const { return style::window::calendar::item::checkBox::height; } void NewEditEventModel::requestRecords(const uint32_t offset, const uint32_t limit) { setupModel(offset, limit); list->onProviderDataUpdate(); } gui::ListItem *NewEditEventModel::getItem(gui::Order order) { return getRecord(order); } void NewEditEventModel::createData(bool allDayEvent) { auto app = application; assert(app != nullptr); eventNameInput = new gui::TextWithLabelItem( utils::localize.get("app_calendar_new_edit_event_name"), [app](const UTF8 &text) { app->getCurrentWindow()->bottomBarTemporaryMode(text); }, [app]() { app->getCurrentWindow()->bottomBarRestoreFromTemporaryMode(); }, [app]() { app->getCurrentWindow()->selectSpecialCharacter(); }); allDayEventCheckBox = new gui::CheckBoxWithLabelAndModel( application, utils::localize.get("app_calendar_new_edit_event_allday"), true, this); startTime = new gui::EventTimeItem( utils::localize.get("app_calendar_new_edit_event_start"), mode24H, [app](const UTF8 &text) { app->getCurrentWindow()->bottomBarTemporaryMode(text, false); }, [app]() { app->getCurrentWindow()->bottomBarRestoreFromTemporaryMode(); }); endTime = new gui::EventTimeItem( utils::localize.get("app_calendar_new_edit_event_end"), mode24H, [app](const UTF8 &text) { app->getCurrentWindow()->bottomBarTemporaryMode(text, false); }, [app]() { app->getCurrentWindow()->bottomBarRestoreFromTemporaryMode(); }); reminder = new gui::SeveralOptionsItem( application, utils::localize.get("app_calendar_event_detail_reminder"), [app](const UTF8 &text) { app->getCurrentWindow()->bottomBarTemporaryMode(text, false); }, [app]() { app->getCurrentWindow()->bottomBarRestoreFromTemporaryMode(); }); repeat = new gui::SeveralOptionsItem( application, utils::localize.get("app_calendar_event_detail_repeat"), [app](const UTF8 &text) { app->getCurrentWindow()->bottomBarTemporaryMode(text, false); }, [app]() { app->getCurrentWindow()->bottomBarRestoreFromTemporaryMode(); }); internalData.push_back(eventNameInput); internalData.push_back(allDayEventCheckBox); if (!allDayEvent) { internalData.push_back(startTime); internalData.push_back(endTime); } internalData.push_back(reminder); internalData.push_back(repeat); for (auto &item : internalData) { item->deleteByList = false; } } void NewEditEventModel::loadData(bool allDayEvent) { list->clear(); eraseInternalData(); createData(allDayEvent); for (auto &item : internalData) { if (item->onLoadCallback) { item->onLoadCallback(); } } list->rebuildList(); } void NewEditEventModel::loadDataWithoutTimeItem() { internalData.erase(std::find(internalData.begin(), internalData.end(), startTime)); internalData.erase(std::find(internalData.begin(), internalData.end(), endTime)); list->rebuildList(); } void NewEditEventModel::reloadDataWithTimeItem() { [[maybe_unused]] auto app = application; assert(app != nullptr); internalData.clear(); internalData.push_back(eventNameInput); internalData.push_back(allDayEventCheckBox); internalData.push_back(startTime); internalData.push_back(endTime); internalData.push_back(reminder); internalData.push_back(repeat); for (auto &item : internalData) { item->deleteByList = false; } list->rebuildList(); } void NewEditEventModel::saveData() { for (auto &item : internalData) { if (item->onSaveCallback) { item->onSaveCallback(); } } }