M changelog.md => changelog.md +1 -0
@@ 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
M image/assets/lang/English.json => image/assets/lang/English.json +5 -1
@@ 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" : "<text align='center' color='9'>No APNs yet.<p>Press <b>left arrow</b> to add new.</p></text>",
"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" : "<text align='center' color='9'>No APNs yet.<p>Press <b>left arrow</b> to add new.</p></text>",
+ "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",
M module-apps/application-settings-new/ApplicationSettings.cpp => module-apps/application-settings-new/ApplicationSettings.cpp +6 -2
@@ 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<ApplicationSettingsNew *>(app), static_cast<ApplicationSettingsNew *>(app));
});
windowsFactory.attach(gui::window::name::apn_settings, [](Application *app, const std::string &name) {
- return std::make_unique<gui::APNSettingsWindow>(app);
+ return std::make_unique<gui::ApnSettingsWindow>(app);
+ });
+ windowsFactory.attach(gui::window::name::apn_options, [](Application *app, const std::string &name) {
+ return std::make_unique<gui::ApnOptionsWindow>(app);
});
windowsFactory.attach(gui::window::name::messages, [](Application *app, const std::string &name) {
return std::make_unique<gui::MessagesWindow>(app);
M module-apps/application-settings-new/ApplicationSettings.hpp => module-apps/application-settings-new/ApplicationSettings.hpp +1 -0
@@ 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";
M module-apps/application-settings-new/CMakeLists.txt => module-apps/application-settings-new/CMakeLists.txt +2 -1
@@ 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
A module-apps/application-settings-new/windows/ApnOptionsWindow.cpp => module-apps/application-settings-new/windows/ApnOptionsWindow.cpp +71 -0
@@ 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<gui::Option>
+ {
+ std::list<gui::Option> optionsList;
+
+ optionsList.emplace_back(std::make_unique<gui::option::OptionSettings>(
+ utils::localize.get("app_settings_apn_options_edit"),
+ [=](gui::Item &item) {
+ std::unique_ptr<gui::SwitchData> data = std::make_unique<ApnItemData>(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<gui::option::OptionSettings>(
+ utils::localize.get("app_settings_apn_options_delete"),
+ [=](gui::Item &item) {
+ // request delete APN
+ return true;
+ },
+ nullptr,
+ this));
+
+ optionsList.emplace_back(std::make_unique<gui::option::OptionSettings>(
+ 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<ApnItemData *>(data);
+ if (item == nullptr) {
+ return false;
+ }
+
+ apn = item->getApn();
+ if (apn == nullptr) {
+ apn = std::make_shared<packet_data::APN::Config>();
+ return true;
+ }
+
+ return true;
+ }
+} // namespace gui
A module-apps/application-settings-new/windows/ApnOptionsWindow.hpp => module-apps/application-settings-new/windows/ApnOptionsWindow.hpp +23 -0
@@ 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 <service-cellular/PacketDataTypes.hpp>
+
+namespace gui
+{
+
+ class ApnOptionsWindow : public BaseSettingsWindow
+ {
+ public:
+ ApnOptionsWindow(app::Application *app);
+
+ private:
+ auto buildOptionsList() -> std::list<gui::Option> override;
+ auto handleSwitchData(SwitchData *data) -> bool override;
+ std::shared_ptr<packet_data::APN::Config> apn;
+ };
+} // namespace gui
R module-apps/application-settings-new/windows/APNSettingsWindow.cpp => module-apps/application-settings-new/windows/ApnSettingsWindow.cpp +5 -5
@@ 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);
}
R module-apps/application-settings-new/windows/APNSettingsWindow.hpp => module-apps/application-settings-new/windows/ApnSettingsWindow.hpp +2 -2
@@ 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;