From 58bcaec2b3a96240ae4ac82338dff8499c8536ef Mon Sep 17 00:00:00 2001 From: Lukasz Skrzypczak Date: Mon, 27 Sep 2021 05:54:27 -0700 Subject: [PATCH] [BH-916] Bell factory reset Rewritten advanced options code. Thanks Mati ! --- image/assets/lang/English.json | 5 +- image/assets/lang/Polski.json | 5 +- .../ApplicationBellSettings.cpp | 6 ++ .../application-bell-settings/CMakeLists.txt | 2 + .../ApplicationBellSettings.hpp | 1 + .../widgets/DialogYesNo.cpp | 58 ++++++++++++++ .../widgets/DialogYesNo.hpp | 33 ++++++++ .../advanced/BellSettingsAdvancedWindow.cpp | 78 +++++++++++++------ 8 files changed, 162 insertions(+), 26 deletions(-) create mode 100644 products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.cpp create mode 100644 products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.hpp diff --git a/image/assets/lang/English.json b/image/assets/lang/English.json index 1b7ee3e39be30118bce00c6a25be4220a9d9de37..1c4cb3b2d0975cf4795ff89c46afdc612c40b8c1 100644 --- a/image/assets/lang/English.json +++ b/image/assets/lang/English.json @@ -691,5 +691,8 @@ "Rise up, start fresh!
It's going to be GREAT day!
", "Hejsan!
Have a wonderful day!
", "It's a new Day!
Spread kindness everywhere you go
" - ] + ], + "app_bell_settings_advanced_factory_reset": "Factory reset", + "app_bell_settings_display_factory_reset_confirmation": "Reset to factory

settings ?
", + "app_bell_settings_factory_reset_finished": "Factory settings\nrestored" } diff --git a/image/assets/lang/Polski.json b/image/assets/lang/Polski.json index 8028b9623da177fb8391870ee561ecad76f3fa93..426367c183f0c525cff41b1470098354ddf159be 100644 --- a/image/assets/lang/Polski.json +++ b/image/assets/lang/Polski.json @@ -632,5 +632,8 @@ "app_bell_settings_alarm_settings_tone": "Dźwięk alarmu", "app_bell_settings_alarm_settings_volume": "Głośność alarmu", "app_bell_settings_alarm_settings_light": "Światło alarmu", -"app_bell_settings_alarm_settings_alarm_tone_and_light_finished": "Ustawiono dźwięk i światło alarmu" +"app_bell_settings_alarm_settings_alarm_tone_and_light_finished": "Ustawiono dźwięk i światło alarmu", +"app_bell_settings_advanced_factory_reset": "Ustawienia fabryczne", +"app_bell_settings_display_factory_reset_confirmation": "Przywrócić ustawienia

fabryczne ?
", +"app_bell_settings_factory_reset_finished": "Ustawienia fabryczne\nprzywrócone" } diff --git a/products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp b/products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp index 2fade5f32b3a200d04435ce7afeaaa996f56f6aa..0e9e366df254e1b2c8cd7625e431a4a71cc8246e 100644 --- a/products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp +++ b/products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp @@ -27,6 +27,7 @@ #include "windows/BellSettingsFrontlight.hpp" #include "windows/BellSettingsHomeViewWindow.hpp" #include "windows/BellSettingsWindow.hpp" +#include "widgets/DialogYesNo.hpp" #include #include @@ -207,6 +208,11 @@ namespace app gui::popup::ID::PowerOff, gui::popup::ID::Reboot, gui::popup::ID::BedtimeNotification}); + + windowsFactory.attach(gui::window::name::bellSettingsFactoryReset, + [](ApplicationCommon *app, const std::string &name) { + return std::make_unique(app, name); + }); } sys::MessagePointer ApplicationBellSettings::DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) diff --git a/products/BellHybrid/apps/application-bell-settings/CMakeLists.txt b/products/BellHybrid/apps/application-bell-settings/CMakeLists.txt index 46ac046c0b5d4ad7be62ba335f9d99ca93a61ecd..0401db728a93c7e80e70f74bed645fae3f77f2f9 100644 --- a/products/BellHybrid/apps/application-bell-settings/CMakeLists.txt +++ b/products/BellHybrid/apps/application-bell-settings/CMakeLists.txt @@ -46,6 +46,7 @@ target_sources(application-bell-settings widgets/TimeFormatSetListItem.cpp widgets/TimeSetListItem.cpp widgets/advanced/AboutYourBellListItem.cpp + widgets/DialogYesNo.cpp windows/BellSettingsBedtimeToneWindow.cpp windows/BellSettingsFrontlight.cpp @@ -83,6 +84,7 @@ target_sources(application-bell-settings widgets/TimeFormatSetListItem.hpp widgets/TimeSetListItem.hpp widgets/advanced/AboutYourBellListItem.hpp + widgets/DialogYesNo.hpp windows/alarm_settings/BellSettingsAlarmSettingsSnoozeWindow.hpp windows/alarm_settings/BellSettingsAlarmSettingsWindow.hpp diff --git a/products/BellHybrid/apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp b/products/BellHybrid/apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp index 3d0a4a8cbc889b50d83538fd02364e88db4e3cb4..56bcd4e75b99aadfe543e8fe4b189f85f89548f7 100644 --- a/products/BellHybrid/apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp +++ b/products/BellHybrid/apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp @@ -17,6 +17,7 @@ namespace gui::window::name inline constexpr auto bellSettingsHomeView = "BellSettingsHomeView"; inline constexpr auto bellSettingsLanguage = "BellSettingsLanguage"; inline constexpr auto bellSettingsBedtimeTone = "BellSettingsBedtimeTone"; + inline constexpr auto bellSettingsFactoryReset = "BellSettingsFactoryReset"; } // namespace gui::window::name namespace app diff --git a/products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.cpp b/products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.cpp new file mode 100644 index 0000000000000000000000000000000000000000..480072b97eda843150b37de50294aed728366cba --- /dev/null +++ b/products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.cpp @@ -0,0 +1,58 @@ +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include "DialogYesNo.hpp" + +#include + +#include +#include +#include +#include + +using namespace gui; + +BellDialogYesNo::BellDialogYesNo(app::ApplicationCommon *app, const std::string &name) + : BellShortOptionWindow(app, name) +{ + optionsList->setBoundaries(Boundaries::Continuous); + + statusBar->setVisible(false); + header->setTitleVisibility(true); +} + +std::list BellDialogYesNo::dialogOptionsList(std::function yesAction) +{ + std::list dialogOptionList; + auto addDialogSettings = [&](const UTF8 &name, const gui::bell_dialog::Options &optionName) { + dialogOptionList.emplace_back(std::make_unique( + name, + [=](gui::Item &item) { + if (optionName == bell_dialog::Options::YES) { + return yesAction(); + } + else if (optionName == bell_dialog::Options::NO) { + application->returnToPreviousWindow(); + } + return true; + }, + [=](gui::Item &item) { + // put focus change callback here + return true; + }, + this)); + }; + + addDialogSettings(utils::translate(style::strings::common::no), bell_dialog::Options::NO); + addDialogSettings(utils::translate(style::strings::common::yes), bell_dialog::Options::YES); + + return dialogOptionList; +} + +void BellDialogYesNo::onBeforeShow(ShowMode, SwitchData *data) +{ + if (auto metadata = dynamic_cast(data); metadata) { + setListTitle(metadata->get().text); + addOptions(dialogOptionsList(metadata->get().action)); + } +} diff --git a/products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.hpp b/products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.hpp new file mode 100644 index 0000000000000000000000000000000000000000..cd4fd8c0cc5d38f9aabae599a5fc23ccbca038ce --- /dev/null +++ b/products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.hpp @@ -0,0 +1,33 @@ +// 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 + +namespace gui +{ + namespace bell_dialog + { + enum Options + { + YES, + NO + }; + } // namespace bell_dialog + + /// @brief Yes/No Dialog class + /// + /// Contain same items as Dialog and additionally Yes and No selectable options + class BellDialogYesNo : public BellShortOptionWindow + { + public: + BellDialogYesNo(app::ApplicationCommon *app, const std::string &name); + + void onBeforeShow(ShowMode mode, SwitchData *data) override; + + private: + std::list dialogOptionsList(std::function yesAction); + }; +}; // namespace gui diff --git a/products/BellHybrid/apps/application-bell-settings/windows/advanced/BellSettingsAdvancedWindow.cpp b/products/BellHybrid/apps/application-bell-settings/windows/advanced/BellSettingsAdvancedWindow.cpp index e23c24ff0514e8512b4f5951313adff2e1f7c1c5..9683cce27645e7f65462c99f1238ca91e47a711d 100644 --- a/products/BellHybrid/apps/application-bell-settings/windows/advanced/BellSettingsAdvancedWindow.cpp +++ b/products/BellHybrid/apps/application-bell-settings/windows/advanced/BellSettingsAdvancedWindow.cpp @@ -9,6 +9,7 @@ #include #include #include +#include namespace gui { @@ -22,34 +23,63 @@ namespace gui std::list