From 64c6c70a9e7be8ca1d79f50b9208ca568390c55b Mon Sep 17 00:00:00 2001 From: Pawel Olejniczak Date: Tue, 19 Jan 2021 01:34:37 +0100 Subject: [PATCH] [EGD-5215] Add APNs list Load APNs from service cellular. Add ApnSettings model. Connect ApnOptionWindow with ApnSettingsWindow. --- changelog.md | 2 +- .../ApplicationSettings.cpp | 15 ++- .../application-settings-new/CMakeLists.txt | 3 +- .../data/ApnListData.hpp | 27 +++++ .../data/QuoteSwitchData.hpp | 4 +- .../models/ApnSettingsModel.cpp | 28 +++++ .../models/ApnSettingsModel.hpp | 21 ++++ .../models/NewApnModel.cpp | 7 -- .../models/NewApnModel.hpp | 1 - .../{model => models}/QuotesModel.cpp | 5 +- .../{model => models}/QuotesModel.hpp | 0 .../{model => models}/QuotesRepository.cpp | 3 - .../{model => models}/QuotesRepository.hpp | 0 .../windows/ApnOptionsWindow.cpp | 6 +- .../windows/ApnOptionsWindow.hpp | 2 + .../windows/ApnSettingsWindow.cpp | 101 +++++++++++++++--- .../windows/ApnSettingsWindow.hpp | 5 + .../windows/NewApnWindow.cpp | 25 +++-- .../windows/NewApnWindow.hpp | 4 +- .../windows/QuotesAddWindow.cpp | 2 +- .../windows/QuotesAddWindow.hpp | 2 +- .../windows/QuotesMainWindow.cpp | 4 +- .../windows/QuotesMainWindow.hpp | 2 +- .../windows/QuotesOptionsWindow.cpp | 4 +- 24 files changed, 219 insertions(+), 54 deletions(-) create mode 100644 module-apps/application-settings-new/data/ApnListData.hpp create mode 100644 module-apps/application-settings-new/models/ApnSettingsModel.cpp create mode 100644 module-apps/application-settings-new/models/ApnSettingsModel.hpp rename module-apps/application-settings-new/{model => models}/QuotesModel.cpp (94%) rename module-apps/application-settings-new/{model => models}/QuotesModel.hpp (100%) rename module-apps/application-settings-new/{model => models}/QuotesRepository.cpp (96%) rename module-apps/application-settings-new/{model => models}/QuotesRepository.hpp (100%) diff --git a/changelog.md b/changelog.md index fcebc4303d6c0c3ca3986fe36e2f1e20fc243ae3..726408062f65ff42958da2893db9d762ee9e1982 100644 --- a/changelog.md +++ b/changelog.md @@ -5,7 +5,7 @@ ### Added * Add hardware in the loop tests. -* Add empty APN settings window. +* Add APN settings window. * Add New/Edit APN window * Add APN options window diff --git a/module-apps/application-settings-new/ApplicationSettings.cpp b/module-apps/application-settings-new/ApplicationSettings.cpp index 31c7592e9173368421522189d8152e3f5fb1ab8c..1607cf063f4a783efc8d42fe2c958492662edc11 100644 --- a/module-apps/application-settings-new/ApplicationSettings.cpp +++ b/module-apps/application-settings-new/ApplicationSettings.cpp @@ -39,9 +39,9 @@ #include #include #include -#include -#include #include +#include +#include #include #include #include @@ -147,6 +147,17 @@ namespace app return sys::MessageNone{}; }); + connect(typeid(CellularGetAPNResponse), [&](sys::Message *msg) { + if (gui::window::name::apn_settings == getCurrentWindow()->getName()) { + auto apns = dynamic_cast(msg); + if (apns != nullptr) { + auto apnsData = std::make_unique(apns->getAPNs()); + switchWindow(gui::window::name::apn_settings, std::move(apnsData)); + } + } + return sys::MessageNone{}; + }); + createUserInterface(); setActiveWindow(gui::name::window::main_window); diff --git a/module-apps/application-settings-new/CMakeLists.txt b/module-apps/application-settings-new/CMakeLists.txt index fc0877a5261c65562d4c061f4bb93ab8bf2efc61..567aceec8697b31389d748e3ec49d6cf16e579ae 100644 --- a/module-apps/application-settings-new/CMakeLists.txt +++ b/module-apps/application-settings-new/CMakeLists.txt @@ -15,6 +15,8 @@ target_sources( ${PROJECT_NAME} PRIVATE ApplicationSettings.cpp + models/ApnSettingsModel.cpp + models/NewApnModel.cpp widgets/timeWidget.cpp widgets/ChangePasscodeLockHandler.cpp widgets/QuoteWidget.cpp @@ -45,7 +47,6 @@ target_sources( ${PROJECT_NAME} windows/SecurityMainWindow.cpp windows/ChangePasscodeWindow.cpp windows/NewApnWindow.cpp - models/NewApnModel.cpp widgets/SpinBox.cpp widgets/SpinBoxOptionSetting.cpp windows/SystemMainWindow.cpp diff --git a/module-apps/application-settings-new/data/ApnListData.hpp b/module-apps/application-settings-new/data/ApnListData.hpp new file mode 100644 index 0000000000000000000000000000000000000000..4ae571db3d9320404009346ef4b75b13e027ac35 --- /dev/null +++ b/module-apps/application-settings-new/data/ApnListData.hpp @@ -0,0 +1,27 @@ +// 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 +#include + +#include + +namespace gui +{ + + class ApnListData : public SwitchData + { + public: + explicit ApnListData(std::vector> apns) : apns(std::move(apns)) + {} + [[nodiscard]] auto getAPNs() const noexcept -> const std::vector> & + { + return apns; + } + + private: + std::vector> apns; + }; +} // namespace gui diff --git a/module-apps/application-settings-new/data/QuoteSwitchData.hpp b/module-apps/application-settings-new/data/QuoteSwitchData.hpp index 8a6b9dcc44034adbe64848770082cbbeb0f457d1..39144ff4e3e939bc4c2610a04176987cbaa591df 100644 --- a/module-apps/application-settings-new/data/QuoteSwitchData.hpp +++ b/module-apps/application-settings-new/data/QuoteSwitchData.hpp @@ -3,9 +3,9 @@ #pragma once -#include "application-settings-new/model/QuotesModel.hpp" +#include "application-settings-new/models/QuotesModel.hpp" -#include +#include #include #include diff --git a/module-apps/application-settings-new/models/ApnSettingsModel.cpp b/module-apps/application-settings-new/models/ApnSettingsModel.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bf4f821f1e1d4f5baba242933c94722a13125ffb --- /dev/null +++ b/module-apps/application-settings-new/models/ApnSettingsModel.cpp @@ -0,0 +1,28 @@ +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include "ApnSettingsModel.hpp" +#include +#include + +ApnSettingsModel::ApnSettingsModel(app::Application *application) : application{application} +{} + +void ApnSettingsModel::requestAPNList() +{ + sys::Bus::SendUnicast(std::make_shared(), ServiceCellular::serviceName, application); +} + +void ApnSettingsModel::saveAPN(std::shared_ptr apn) +{ + sys::Bus::SendUnicast(std::make_shared(apn), ServiceCellular::serviceName, application); +} + +void ApnSettingsModel::removeAPN(std::shared_ptr apn) +{} + +void ApnSettingsModel::setAsDefaultAPN(std::shared_ptr apn) +{ + apn->apnType = packet_data::APN::APNType::Default; + sys::Bus::SendUnicast(std::make_shared(apn), ServiceCellular::serviceName, application); +} diff --git a/module-apps/application-settings-new/models/ApnSettingsModel.hpp b/module-apps/application-settings-new/models/ApnSettingsModel.hpp new file mode 100644 index 0000000000000000000000000000000000000000..63addc3a1af960ac1269494264a3fb89add6c1c0 --- /dev/null +++ b/module-apps/application-settings-new/models/ApnSettingsModel.hpp @@ -0,0 +1,21 @@ +// 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 +#include + +class ApnSettingsModel +{ + public: + ApnSettingsModel(app::Application *application); + + void requestAPNList(); + void saveAPN(std::shared_ptr apn); + void removeAPN(std::shared_ptr apn); + void setAsDefaultAPN(std::shared_ptr apn); + + private: + app::Application *application = nullptr; +}; diff --git a/module-apps/application-settings-new/models/NewApnModel.cpp b/module-apps/application-settings-new/models/NewApnModel.cpp index 25ee9057fbcff4697c2e4f28c3c3e4973bdf55a4..80922c1e1d5185511ecb15938b43faf10905c57b 100644 --- a/module-apps/application-settings-new/models/NewApnModel.cpp +++ b/module-apps/application-settings-new/models/NewApnModel.cpp @@ -3,9 +3,7 @@ #include "NewApnModel.hpp" -#include "AppWindow.hpp" #include "application-settings-new/widgets/ApnInputWidget.hpp" -#include #include #include