// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "NewEditEventWindow.hpp" #include #include namespace gui { NewEditEventWindow::NewEditEventWindow(app::Application *app, std::string name) : AppWindow(app, style::window::calendar::name::new_edit_event), newEditEventModel{std::make_shared(this->application)} { buildInterface(); } void NewEditEventWindow::rebuild() { erase(); buildInterface(); } void NewEditEventWindow::buildInterface() { AppWindow::buildInterface(); bottomBar->setActive(gui::BottomBar::Side::RIGHT, true); bottomBar->setActive(gui::BottomBar::Side::CENTER, true); bottomBar->setText(gui::BottomBar::Side::RIGHT, utils::translate(style::strings::common::back)); bottomBar->setText(gui::BottomBar::Side::CENTER, utils::translate(style::strings::common::save)); list = new gui::ListView(this, style::window::calendar::listView_x, style::window::calendar::listView_y, style::window::calendar::listView_w, style::window::calendar::listView_h, newEditEventModel, gui::listview::ScrollBarType::PreRendered); setFocusItem(list); } void NewEditEventWindow::onBeforeShow(gui::ShowMode mode, gui::SwitchData *data) { switch (eventAction) { case EventAction::Add: { setTitle(utils::translate("app_calendar_new_event_title")); break; } case EventAction::Edit: setTitle(utils::translate("app_calendar_edit_event_title")); break; } if (mode == ShowMode::GUI_SHOW_INIT) { auto rec = dynamic_cast(data); if (rec != nullptr) { eventRecord = rec->getData(); } newEditEventModel->loadData(eventRecord); } if (mode == ShowMode::GUI_SHOW_RETURN) { auto receivedData = dynamic_cast(data); if (receivedData != nullptr) { auto parser = std::make_unique(); auto uniqueData = std::make_unique(*receivedData); eventRecord->repeat = parser->getDatabaseFieldValue(std::move(uniqueData)); newEditEventModel->loadRepeat(eventRecord); } } } bool NewEditEventWindow::onInput(const gui::InputEvent &inputEvent) { if (AppWindow::onInput(inputEvent)) { return true; } if (inputEvent.isShortRelease(gui::KeyCode::KEY_ENTER)) { LOG_DEBUG("Save Event"); newEditEventModel->saveData(eventRecord, eventAction); return true; } return false; } bool NewEditEventWindow::handleSwitchData(gui::SwitchData *data) { if (data == nullptr) { return false; } if (data->getDescription() == style::window::calendar::edit_event) { eventAction = EventAction::Edit; } else if (data->getDescription() == style::window::calendar::new_event) { eventAction = EventAction::Add; } return true; } } /* namespace gui */