From cb3b6cd5dad3b69acbcad189da09242972896bdb Mon Sep 17 00:00:00 2001 From: Pawel Olejniczak Date: Wed, 20 Jan 2021 13:03:14 +0100 Subject: [PATCH] [EGD-5338] Add APN options window - gui This is just GUI, window is not connected yet. It will facilitate further development of APN settings, and will be enhanced later. --- changelog.md | 1 + image/assets/lang/English.json | 6 +- .../ApplicationSettings.cpp | 8 ++- .../ApplicationSettings.hpp | 1 + .../application-settings-new/CMakeLists.txt | 3 +- .../windows/ApnOptionsWindow.cpp | 71 +++++++++++++++++++ .../windows/ApnOptionsWindow.hpp | 23 ++++++ ...ttingsWindow.cpp => ApnSettingsWindow.cpp} | 10 +-- ...ttingsWindow.hpp => ApnSettingsWindow.hpp} | 4 +- 9 files changed, 116 insertions(+), 11 deletions(-) create mode 100644 module-apps/application-settings-new/windows/ApnOptionsWindow.cpp create mode 100644 module-apps/application-settings-new/windows/ApnOptionsWindow.hpp rename module-apps/application-settings-new/windows/{APNSettingsWindow.cpp => ApnSettingsWindow.cpp} (91%) rename module-apps/application-settings-new/windows/{APNSettingsWindow.hpp => ApnSettingsWindow.hpp} (83%) diff --git a/changelog.md b/changelog.md index 67d4c097464f007d770832371af414c6522d9c15..fcebc4303d6c0c3ca3986fe36e2f1e20fc243ae3 100644 --- a/changelog.md +++ b/changelog.md @@ -7,6 +7,7 @@ * Add hardware in the loop tests. * Add empty APN settings window. * Add New/Edit APN window +* Add APN options window ### Changed diff --git a/image/assets/lang/English.json b/image/assets/lang/English.json index 8280346732fc6e9804ba3fce9c1e4e1c4720f2ec..6a0a9066a45d3b120cea27980f3a4b13ea7caecf 100644 --- a/image/assets/lang/English.json +++ b/image/assets/lang/English.json @@ -352,7 +352,6 @@ "app_settings_network_sim_none": "No Sim", "app_settings_network_voice_over_lte" : "VoLTE (experimental)", "app_settings_network_apn_settings" : "APN settings", - "app_settings_network_apn_settings_no_apns" : "No APNs yet.

Press left arrow to add new.

", "app_settings_toggle_on": "ON", "app_settings_toggle_off": "OFF", "app_settings_security_lock_screen_passcode": "Lock screen passcode", @@ -363,6 +362,11 @@ "app_settings_security_wrong_passcode": "Wrong passcode!", "app_settings_security_passcode_changed_successfully": "Passcode changed successfully!", "app_settings_security_passcode_disabled": "Passcode disabled!", + "app_settings_apn_settings_no_apns" : "No APNs yet.

Press left arrow to add new.

", + "app_settings_apn_options" : "Options", + "app_settings_apn_options_delete" : "Delete", + "app_settings_apn_options_edit" : "Edit", + "app_settings_apn_options_set_as_default" : "Set as default", "app_settings_new_edit_apn": "New/Edit APN", "app_settings_apn_name": "Name", "app_settings_apn_APN": "APN", diff --git a/module-apps/application-settings-new/ApplicationSettings.cpp b/module-apps/application-settings-new/ApplicationSettings.cpp index 4aaa6fa63b1e55fabb0d334b81c6785f5f3e7ddb..c46f31f23971f33e9ad1df88c2fefcc26dd1b4c6 100644 --- a/module-apps/application-settings-new/ApplicationSettings.cpp +++ b/module-apps/application-settings-new/ApplicationSettings.cpp @@ -5,7 +5,8 @@ #include "windows/AddDeviceWindow.hpp" #include "windows/AllDevicesWindow.hpp" -#include "windows/APNSettingsWindow.hpp" +#include "windows/ApnSettingsWindow.hpp" +#include "windows/ApnOptionsWindow.hpp" #include "windows/BluetoothWindow.hpp" #include "windows/SettingsMainWindow.hpp" #include "windows/DisplayAndKeypadWindow.hpp" @@ -211,7 +212,10 @@ namespace app app, static_cast(app), static_cast(app)); }); windowsFactory.attach(gui::window::name::apn_settings, [](Application *app, const std::string &name) { - return std::make_unique(app); + return std::make_unique(app); + }); + windowsFactory.attach(gui::window::name::apn_options, [](Application *app, const std::string &name) { + return std::make_unique(app); }); windowsFactory.attach(gui::window::name::messages, [](Application *app, const std::string &name) { return std::make_unique(app); diff --git a/module-apps/application-settings-new/ApplicationSettings.hpp b/module-apps/application-settings-new/ApplicationSettings.hpp index 3cfc6cbc240456d24968449155e43aadfa598480..03b97c39cfb2bb0f3935d939337338e79a5967a0 100644 --- a/module-apps/application-settings-new/ApplicationSettings.hpp +++ b/module-apps/application-settings-new/ApplicationSettings.hpp @@ -17,6 +17,7 @@ namespace gui::window::name inline constexpr auto network = "Network"; inline constexpr auto apn_settings = "APNSettings"; + inline constexpr auto apn_options = "APNOptions"; inline constexpr auto phone_modes = "PhoneModes"; inline constexpr auto apps_and_tools = "AppsAndTools"; inline constexpr auto security = "Security"; diff --git a/module-apps/application-settings-new/CMakeLists.txt b/module-apps/application-settings-new/CMakeLists.txt index f3cafbf1f3538a7edc97b3c9d6edf2fb0610a96b..fc0877a5261c65562d4c061f4bb93ab8bf2efc61 100644 --- a/module-apps/application-settings-new/CMakeLists.txt +++ b/module-apps/application-settings-new/CMakeLists.txt @@ -22,7 +22,8 @@ target_sources( ${PROJECT_NAME} windows/SettingsMainWindow.cpp windows/AddDeviceWindow.cpp windows/AllDevicesWindow.cpp - windows/APNSettingsWindow.cpp + windows/ApnSettingsWindow.cpp + windows/ApnOptionsWindow.cpp windows/BaseSettingsWindow.cpp windows/BluetoothWindow.cpp windows/FontSizeWindow.cpp diff --git a/module-apps/application-settings-new/windows/ApnOptionsWindow.cpp b/module-apps/application-settings-new/windows/ApnOptionsWindow.cpp new file mode 100644 index 0000000000000000000000000000000000000000..550e2c26631da4365abc03edae161f11be0dd4ed --- /dev/null +++ b/module-apps/application-settings-new/windows/ApnOptionsWindow.cpp @@ -0,0 +1,71 @@ +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include "ApnOptionsWindow.hpp" + +#include "application-settings-new/ApplicationSettings.hpp" +#include "application-settings-new/data/SettingsItemData.hpp" +#include "OptionSetting.hpp" + +namespace gui +{ + ApnOptionsWindow::ApnOptionsWindow(app::Application *app) : BaseSettingsWindow(app, window::name::apn_options) + { + setTitle(utils::localize.get("app_settings_apn_options")); + } + + auto ApnOptionsWindow::buildOptionsList() -> std::list + { + std::list optionsList; + + optionsList.emplace_back(std::make_unique( + utils::localize.get("app_settings_apn_options_edit"), + [=](gui::Item &item) { + std::unique_ptr data = std::make_unique(apn); + application->switchWindow(gui::window::name::new_apn, gui::ShowMode::GUI_SHOW_INIT, std::move(data)); + return true; + }, + nullptr, + this)); + + optionsList.emplace_back(std::make_unique( + utils::localize.get("app_settings_apn_options_delete"), + [=](gui::Item &item) { + // request delete APN + return true; + }, + nullptr, + this)); + + optionsList.emplace_back(std::make_unique( + utils::localize.get("app_settings_apn_options_set_as_default"), + [=](gui::Item &item) { + // set APN as default + return true; + }, + nullptr, + this)); + + return optionsList; + } + + auto ApnOptionsWindow::handleSwitchData(SwitchData *data) -> bool + { + if (data == nullptr) { + return false; + } + + auto item = dynamic_cast(data); + if (item == nullptr) { + return false; + } + + apn = item->getApn(); + if (apn == nullptr) { + apn = std::make_shared(); + return true; + } + + return true; + } +} // namespace gui diff --git a/module-apps/application-settings-new/windows/ApnOptionsWindow.hpp b/module-apps/application-settings-new/windows/ApnOptionsWindow.hpp new file mode 100644 index 0000000000000000000000000000000000000000..55acf4138b3e160a842493b585c48f5275fbd0bc --- /dev/null +++ b/module-apps/application-settings-new/windows/ApnOptionsWindow.hpp @@ -0,0 +1,23 @@ +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#pragma once + +#include "BaseSettingsWindow.hpp" + +#include + +namespace gui +{ + + class ApnOptionsWindow : public BaseSettingsWindow + { + public: + ApnOptionsWindow(app::Application *app); + + private: + auto buildOptionsList() -> std::list override; + auto handleSwitchData(SwitchData *data) -> bool override; + std::shared_ptr apn; + }; +} // namespace gui diff --git a/module-apps/application-settings-new/windows/APNSettingsWindow.cpp b/module-apps/application-settings-new/windows/ApnSettingsWindow.cpp similarity index 91% rename from module-apps/application-settings-new/windows/APNSettingsWindow.cpp rename to module-apps/application-settings-new/windows/ApnSettingsWindow.cpp index 8d3574ddfdc7a38424c67c31f1391d698b81ab63..2db4bc389ded400f16c9d6c4c25555d56ce31408 100644 --- a/module-apps/application-settings-new/windows/APNSettingsWindow.cpp +++ b/module-apps/application-settings-new/windows/ApnSettingsWindow.cpp @@ -1,7 +1,7 @@ // 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 "ApnSettingsWindow.hpp" #include "application-settings-new/ApplicationSettings.hpp" #include "application-settings-new/widgets/SettingsStyle.hpp" #include "application-settings-new/data/SettingsItemData.hpp" @@ -12,12 +12,12 @@ namespace gui { - APNSettingsWindow::APNSettingsWindow(app::Application *app) : OptionWindow(app, gui::window::name::apn_settings) + ApnSettingsWindow::ApnSettingsWindow(app::Application *app) : OptionWindow(app, gui::window::name::apn_settings) { buildInterface(); } - auto APNSettingsWindow::onInput(const InputEvent &inputEvent) -> bool + auto ApnSettingsWindow::onInput(const InputEvent &inputEvent) -> bool { if (inputEvent.isShortPress()) { if (inputEvent.is(KeyCode::KEY_LEFT)) { @@ -30,7 +30,7 @@ namespace gui return AppWindow::onInput(inputEvent); } - void APNSettingsWindow::buildInterface() + void ApnSettingsWindow::buildInterface() { setTitle(utils::localize.get("app_settings_network_apn_settings")); @@ -56,7 +56,7 @@ namespace gui style::window_width, style::window_height - style::header::height - style::footer::height, "phonebook_empty_grey_circle_W_G", - utils::localize.get("app_settings_network_apn_settings_no_apns")); + utils::localize.get("app_settings_apn_settings_no_apns")); bottomBar->setActive(gui::BottomBar::Side::CENTER, false); } diff --git a/module-apps/application-settings-new/windows/APNSettingsWindow.hpp b/module-apps/application-settings-new/windows/ApnSettingsWindow.hpp similarity index 83% rename from module-apps/application-settings-new/windows/APNSettingsWindow.hpp rename to module-apps/application-settings-new/windows/ApnSettingsWindow.hpp index 1ade2e369ced7d2c9b49c4db057df675e04edfd3..ae97087b48e4dfc074f5fe91e5059cbcd8676925 100644 --- a/module-apps/application-settings-new/windows/APNSettingsWindow.hpp +++ b/module-apps/application-settings-new/windows/ApnSettingsWindow.hpp @@ -8,10 +8,10 @@ namespace gui { - class APNSettingsWindow : public OptionWindow + class ApnSettingsWindow : public OptionWindow { public: - APNSettingsWindow(app::Application *app); + ApnSettingsWindow(app::Application *app); private: void buildInterface() override;