// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "ApnSettingsWindow.hpp" #include #include #include #include #include
namespace gui { ApnSettingsWindow::ApnSettingsWindow(app::ApplicationCommon *app) : OptionWindow(app, gui::window::name::apn_settings) { buildInterface(); } void ApnSettingsWindow::buildInterface() { setTitle(utils::translate("app_settings_network_apn_settings")); header->navigationIndicatorAdd(new gui::header::AddElementAction(), gui::header::BoxSelection::Left); emptyListIcon = new Icon(this, 0, style::window::default_vertical_pos, style::window_width, style::window_height - style::window::default_vertical_pos - style::nav_bar::height, "empty_list_add_W_G", utils::translate("app_settings_apn_settings_no_apns")); emptyListIcon->setVisible(false); navBar->setText(nav_bar::Side::Left, utils::translate(style::strings::common::options)); activeApn = std::make_shared(); apnSettingsModel = std::make_shared(application); apnSettingsModel->requestAPNList(); } auto ApnSettingsWindow::handleSwitchData(SwitchData *data) -> bool { if (data == nullptr) { LOG_ERROR("Received nullptr"); return false; } const auto newData = dynamic_cast(data); if (newData == nullptr) { LOG_ERROR("Received nullptr"); return false; } apns = newData->getAPNs(); if (apns.empty()) { emptyListIcon->setVisible(true); return false; } return true; } void ApnSettingsWindow::onBeforeShow(ShowMode mode, SwitchData *data) { clearOptions(); navBar->setActive(gui::nav_bar::Side::Left, false); navBar->setActive(gui::nav_bar::Side::Center, false); emptyListIcon->setVisible(false); if (apns.empty()) { return; } addOptions(optionsList(apns)); if (mode == gui::ShowMode::GUI_SHOW_RETURN) { apnSettingsModel->requestAPNList(); } navBar->setActive(gui::nav_bar::Side::Left, true); navBar->setActive(gui::nav_bar::Side::Center, true); } auto ApnSettingsWindow::onInput(const InputEvent &inputEvent) -> bool { if (AppWindow::onInput(inputEvent)) { return true; } if (!inputEvent.isShortRelease()) { return false; } if (inputEvent.is(gui::KeyCode::KEY_LEFT)) { auto apnRecord = std::make_shared(); std::unique_ptr data = std::make_unique(apnRecord); application->switchWindow(gui::window::name::new_apn, gui::ShowMode::GUI_SHOW_INIT, std::move(data)); return true; } if (inputEvent.is(gui::KeyCode::KEY_LF)) { std::unique_ptr data = std::make_unique(activeApn); application->switchWindow(gui::window::name::apn_options, gui::ShowMode::GUI_SHOW_INIT, std::move(data)); return true; } return false; } auto ApnSettingsWindow::optionsList(std::vector> apnsList) -> std::list