// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "SpecialInputMainWindow.hpp" #include "ApplicationSpecialInput.hpp" #include #include #include #include using namespace gui; SpecialInputMainWindow::SpecialInputMainWindow(app::ApplicationCommon *app) : AppWindow(app, app::char_select), model{std::make_shared(this->application)} { buildInterface(); } void SpecialInputMainWindow::onBeforeShow(ShowMode mode, SwitchData *data) { assert(dynamic_cast(application)); model->clearData(); actualWindow = specialInputStyle::CharactersType::Emoji; switchPage(); } void SpecialInputMainWindow::rebuild() { destroyInterface(); buildInterface(); } void SpecialInputMainWindow::buildInterface() { AppWindow::buildInterface(); navBar->setText(nav_bar::Side::Center, utils::translate(style::strings::common::select)); navBar->setText(nav_bar::Side::Right, utils::translate(style::strings::common::back)); navBar->setText(nav_bar::Side::Left, utils::translate(style::strings::common::emoji)); charList = new gui::ListView(this, specialInputStyle::specialInputListView::x, specialInputStyle::specialInputListView::y, specialInputStyle::specialInputListView::w, specialInputStyle::specialInputListView::h, model); setFocusItem(charList); } void SpecialInputMainWindow::destroyInterface() { model->clearData(); setFocusItem(nullptr); erase(); } bool SpecialInputMainWindow::onInput(const InputEvent &inputEvent) { auto ret = AppWindow::onInput(inputEvent); if (inputEvent.isShortRelease()) { switch (inputEvent.getKeyCode()) { case KeyCode::KEY_LF: { switchPage(); return true; } default: break; } } return ret; } void SpecialInputMainWindow::switchPage() { model->clearData(); if (actualWindow == specialInputStyle::CharactersType::Emoji) { model->createData(specialInputStyle::CharactersType::SpecialCharacters); actualWindow = specialInputStyle::CharactersType::SpecialCharacters; navBar->setText(nav_bar::Side::Left, utils::translate(style::strings::common::emoji)); setTitle(utils::translate("app_special_input_window")); } else if (actualWindow == specialInputStyle::CharactersType::SpecialCharacters) { model->createData(specialInputStyle::CharactersType::Emoji); actualWindow = specialInputStyle::CharactersType::Emoji; navBar->setText(nav_bar::Side::Left, utils::translate(style::strings::common::special_chars)); setTitle(utils::translate("app_emoji_input_window")); } }