From d4d7c1c042627191fc5b38337fecb66c9a1da7a0 Mon Sep 17 00:00:00 2001 From: pawpMudita Date: Fri, 29 Jan 2021 16:42:47 +0100 Subject: [PATCH] [EGD-5527] Fix APN GUI functions: add/edit/delete redefine functions: saveAPN, renameAPN add activeApn field to hold selected APN refresh Apn list after add/edit/delete --- .../models/ApnSettingsModel.cpp | 11 +++++++++-- .../models/ApnSettingsModel.hpp | 1 + .../windows/ApnSettingsWindow.cpp | 17 ++++++++++++----- .../windows/ApnSettingsWindow.hpp | 4 ++++ .../service-cellular/PacketDataTypes.hpp | 2 +- 5 files changed, 27 insertions(+), 8 deletions(-) diff --git a/module-apps/application-settings-new/models/ApnSettingsModel.cpp b/module-apps/application-settings-new/models/ApnSettingsModel.cpp index bf4f821f1e1d4f5baba242933c94722a13125ffb..f6772aa7a84d1ec6d84aa9b50d320f94597f06c4 100644 --- a/module-apps/application-settings-new/models/ApnSettingsModel.cpp +++ b/module-apps/application-settings-new/models/ApnSettingsModel.cpp @@ -15,11 +15,18 @@ void ApnSettingsModel::requestAPNList() void ApnSettingsModel::saveAPN(std::shared_ptr apn) { - sys::Bus::SendUnicast(std::make_shared(apn), ServiceCellular::serviceName, application); + if (apn->contextId != packet_data::EmptyContextId) { + CellularServiceAPI::SetAPN(application, *apn); + } + else { + CellularServiceAPI::NewAPN(application, *apn); + } } void ApnSettingsModel::removeAPN(std::shared_ptr apn) -{} +{ + CellularServiceAPI::DeleteAPN(application, apn->contextId); +} void ApnSettingsModel::setAsDefaultAPN(std::shared_ptr apn) { diff --git a/module-apps/application-settings-new/models/ApnSettingsModel.hpp b/module-apps/application-settings-new/models/ApnSettingsModel.hpp index 63addc3a1af960ac1269494264a3fb89add6c1c0..21414298c2bfb57ad50640f05e9cb8dc85648c62 100644 --- a/module-apps/application-settings-new/models/ApnSettingsModel.hpp +++ b/module-apps/application-settings-new/models/ApnSettingsModel.hpp @@ -4,6 +4,7 @@ #pragma once #include +#include #include class ApnSettingsModel diff --git a/module-apps/application-settings-new/windows/ApnSettingsWindow.cpp b/module-apps/application-settings-new/windows/ApnSettingsWindow.cpp index 7074e182940186c8a54d42054971f8eadd45ebf8..9900aee980f346a107cfbf89a2b68d1d45d76bfe 100644 --- a/module-apps/application-settings-new/windows/ApnSettingsWindow.cpp +++ b/module-apps/application-settings-new/windows/ApnSettingsWindow.cpp @@ -4,7 +4,6 @@ #include "ApnSettingsWindow.hpp" #include "application-settings-new/ApplicationSettings.hpp" #include "application-settings-new/data/ApnListData.hpp" -#include "application-settings-new/models/ApnSettingsModel.hpp" #include "application-settings-new/widgets/SettingsStyle.hpp" #include "application-settings-new/data/SettingsItemData.hpp" #include "OptionSetting.hpp" @@ -45,7 +44,8 @@ namespace gui bottomBar->setText(BottomBar::Side::LEFT, utils::localize.get(style::strings::common::options)); - auto apnSettingsModel = new ApnSettingsModel(application); + activeApn = std::make_shared(); + apnSettingsModel = std::make_shared(application); apnSettingsModel->requestAPNList(); } auto ApnSettingsWindow::handleSwitchData(SwitchData *data) -> bool @@ -82,6 +82,11 @@ namespace gui } addOptions(optionsList(apns)); + + if (mode == gui::ShowMode::GUI_SHOW_RETURN) { + apnSettingsModel->requestAPNList(); + } + bottomBar->setActive(gui::BottomBar::Side::LEFT, true); bottomBar->setActive(gui::BottomBar::Side::CENTER, true); } @@ -101,8 +106,7 @@ namespace gui return true; } if (inputEvent.is(gui::KeyCode::KEY_LF)) { - auto apnRecord = std::make_shared(); - std::unique_ptr data = std::make_unique(apnRecord); + 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; } @@ -125,7 +129,10 @@ namespace gui gui::window::name::new_apn, gui::ShowMode::GUI_SHOW_INIT, std::move(apnData)); return true; }, - nullptr, + [=](gui::Item &item) { + activeApn = apn; + return true; + }, nullptr)); } diff --git a/module-apps/application-settings-new/windows/ApnSettingsWindow.hpp b/module-apps/application-settings-new/windows/ApnSettingsWindow.hpp index f38b18d07ce4b9caafa470837ecc5c9755108be7..2602e8d089049ea97b068e580b66172af7ea2089 100644 --- a/module-apps/application-settings-new/windows/ApnSettingsWindow.hpp +++ b/module-apps/application-settings-new/windows/ApnSettingsWindow.hpp @@ -4,6 +4,8 @@ #pragma once #include "OptionWindow.hpp" +#include "application-settings-new/models/ApnSettingsModel.hpp" + #include #include @@ -25,5 +27,7 @@ namespace gui Image *crossImage = nullptr; Icon *emptyListIcon = nullptr; std::vector> apns; + std::shared_ptr activeApn; + std::shared_ptr apnSettingsModel; }; }; // namespace gui diff --git a/module-services/service-cellular/service-cellular/PacketDataTypes.hpp b/module-services/service-cellular/service-cellular/PacketDataTypes.hpp index 829d338c4416acc4d1fa5b50c244dd09ac7f992e..47c999a3df69d8aa53fee1f8461b962e0e7c6516 100644 --- a/module-services/service-cellular/service-cellular/PacketDataTypes.hpp +++ b/module-services/service-cellular/service-cellular/PacketDataTypes.hpp @@ -210,7 +210,7 @@ namespace packet_data }; } // namespace APN - + constexpr unsigned char EmptyContextId = 0; constexpr unsigned char MINContextId = 1; constexpr unsigned char MAXContextId = 16;