// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "AlgoParamsWindow.hpp" #include #include #include #include #include #include #include #include #include using StringList = std::list; namespace gui { AlgoParamsWindow::AlgoParamsWindow(app::ApplicationCommon *app) : AppWindow(app, gui::name::window::algo_window) { buildInterface(); } void AlgoParamsWindow::rebuild() { destroyInterface(); buildInterface(); } void AlgoParamsWindow::buildInterface() { AppWindow::buildInterface(); navBar->setActive(nav_bar::Side::Left, true); navBar->setActive(nav_bar::Side::Center, true); navBar->setActive(nav_bar::Side::Right, true); navBar->setText(nav_bar::Side::Center, utils::translate(style::strings::common::open)); navBar->setText(nav_bar::Side::Right, utils::translate(style::strings::common::back)); setTitle(utils::translate("app_desktop_tools_antenna")); lowBandBox = new gui::VBox(this, antenna::algo_window::leftColumnXPos, antenna::algo_window::boxYPos, antenna::algo_window::boxW, antenna::algo_window::boxH); highBandBox = new gui::VBox(this, antenna::algo_window::rightColumnXPos, antenna::algo_window::boxYPos, antenna::algo_window::boxW, antenna::algo_window::boxH); selectedAntenna = new gui::Label(this, style::window::default_left_margin, antenna::algo_window::selectedAntennaYPos, antenna::algo_window::commonW, style::window::label::default_h); selectedAntenna->setFont(style::window::font::medium); selectedAntenna->setPenWidth(antenna::algo_window::commonNoFocusPen); info = new gui::Label(this, style::window::default_left_margin, antenna::algo_window::infoYPos, antenna::algo_window::commonW, style::window::label::small_h); info->setText("Params format: CSQ | CREG | Band frequency"); info->setFont(style::window::font::verysmall); info->setPenWidth(antenna::algo_window::commonNoFocusPen); lowBandLabel = new gui::Label(this, antenna::algo_window::leftColumnXPos, antenna::algo_window::culumnLabelYPos, antenna::algo_window::boxW, style::window::label::small_h); lowBandLabel->setText(lowBandString); lowBandLabel->setFont(style::window::font::verysmall); lowBandLabel->setPenWidth(antenna::algo_window::commonNoFocusPen); highBandLabel = new gui::Label(this, antenna::algo_window::rightColumnXPos, antenna::algo_window::culumnLabelYPos, antenna::algo_window::boxW, style::window::label::small_h); highBandLabel->setText(highBandString); highBandLabel->setFont(style::window::font::verysmall); highBandLabel->setPenWidth(antenna::algo_window::commonNoFocusPen); app = dynamic_cast(this->application); if (app != nullptr) { auto currentAntenna = app->getAntenna(); updateAntennaLabel(currentAntenna); } } void AlgoParamsWindow::destroyInterface() { erase(); } void AlgoParamsWindow::onBeforeShow(ShowMode mode, SwitchData *data) {} bool AlgoParamsWindow::onInput(const InputEvent &inputEvent) { bool ret = AppWindow::onInput(inputEvent); if (ret) { application->render(RefreshModes::GUI_REFRESH_FAST); return true; } return false; } void AlgoParamsWindow::handleNewParams(std::string data, bool refresh) { app = dynamic_cast(this->application); if (app == nullptr) { return; } StringList *list = nullptr; gui::VBox *box = nullptr; if (app->getAntenna() == bsp::cellular::antenna::lowBand) { list = &lowBandParams; box = lowBandBox; } else { list = &highBandParams; box = highBandBox; } list->push_front(data); if (list->size() > app::antenna::paramsMaxSize) { list->pop_back(); } box->erase(); for (auto item : *list) { box->addWidget(addLabel(box, item)); } if (refresh) { application->refreshWindow(RefreshModes::GUI_REFRESH_FAST); } } void AlgoParamsWindow::handleAntennaChanged(bsp::cellular::antenna antenna, bool refresh) { StringList *list = nullptr; gui::VBox *box = nullptr; auto currentAntenna = app->getAntenna(); if (currentAntenna == bsp::cellular::antenna::lowBand) { list = &lowBandParams; box = lowBandBox; } else { list = &highBandParams; box = highBandBox; } updateAntennaLabel(currentAntenna); list->clear(); box->erase(); if (refresh) { application->refreshWindow(RefreshModes::GUI_REFRESH_FAST); } } gui::Label *AlgoParamsWindow::addLabel(gui::Item *parent, const UTF8 &text) { gui::Label *label = new gui::Label(parent, antenna::scan_mode_window::commonDefaultPos, antenna::scan_mode_window::commonDefaultPos, antenna::scan_mode_window::buttonW, antenna::scan_mode_window::buttonH, text); label->setFilled(false); label->setPenFocusWidth(antenna::scan_mode_window::commonFocusPen); label->setPenWidth(antenna::scan_mode_window::commonNoFocusPen); label->setFont(style::window::font::verysmall); label->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center)); return label; } void AlgoParamsWindow::updateAntennaLabel(bsp::cellular::antenna antenna) { if (antenna == bsp::cellular::antenna::lowBand) { selectedAntenna->setText(selectedAntennaPrefix + lowBandString); } else { selectedAntenna->setText(selectedAntennaPrefix + highBandString); } } } // namespace gui