mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-10 06:48:50 -05:00
194 lines
7.3 KiB
C++
194 lines
7.3 KiB
C++
// 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 <AntennaAppStyle.hpp>
|
|
#include <application-antenna/ApplicationAntenna.hpp>
|
|
#include <module-gui/gui/widgets/BoxLayout.hpp>
|
|
#include <module-gui/gui/widgets/Item.hpp>
|
|
#include <module-gui/gui/widgets/text/Label.hpp>
|
|
#include <module-gui/gui/widgets/Style.hpp>
|
|
#include <module-gui/gui/widgets/Window.hpp>
|
|
#include <i18n/i18n.hpp>
|
|
#include <service-cellular/CellularServiceAPI.hpp>
|
|
|
|
using StringList = std::list<std::string>;
|
|
|
|
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<app::ApplicationAntenna *>(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<app::ApplicationAntenna *>(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
|