From 01800f435e6484ae139bb83c19e61ad91282b778 Mon Sep 17 00:00:00 2001 From: Dawid Wojtas Date: Fri, 24 Mar 2023 16:01:22 +0100 Subject: [PATCH] [BH-1650][BH-1651] Fix the frontlight settings Run the frontlight settings in "on demand" mode now turn on the backlight with the proper intensity. If the device is idle in the frontlight settings the backlight isn't turn on after backing to the main window. --- harmony_changelog.md | 2 ++ .../presenter/PowerNapProgressPresenter.cpp | 4 +-- .../models/FrontlightListItemProvider.cpp | 4 +-- .../models/FrontlightModel.cpp | 29 ++++++++++--------- .../presenter/FrontlightPresenter.cpp | 24 ++++++++++----- .../presenter/FrontlightPresenter.hpp | 14 +++++---- .../alarm_settings/AlarmSettingsPresenter.cpp | 9 ++++-- .../alarm_settings/PrewakeUpPresenter.cpp | 9 ++++-- .../windows/BellSettingsFrontlightWindow.cpp | 10 +++++-- .../include/common/models/FrontlightModel.hpp | 24 ++++++++++----- 10 files changed, 82 insertions(+), 47 deletions(-) diff --git a/harmony_changelog.md b/harmony_changelog.md index 08c3b4ad772194f69b76b4f341ab5b8ed92dff54..bb673d3b14f71357c502337bb973ab696be3c6b9 100644 --- a/harmony_changelog.md +++ b/harmony_changelog.md @@ -14,6 +14,8 @@ * Fixed polish Meditation summary text * Fixed problems with copying files via Mudita Center to Relaxation * Fixed problem with long Relaxation loading when titles were too long +* Fixed backlight behavior after returning to the main window +* Fixed settings frontlight intensity in on demand mode ### Added diff --git a/products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.cpp b/products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.cpp index a916ac2b4d61e4e622cab0177b667479009c6db2..37bfd82f86dd0d34e0e0244f361108de947d2ebe 100644 --- a/products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.cpp +++ b/products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "PowerNapProgressPresenter.hpp" @@ -89,7 +89,7 @@ namespace app::powernap ? screen_light_control::ScreenLightMode::Automatic : screen_light_control::ScreenLightMode::Manual); frontLightModel.setBrightness(frontLightModel.getBrightnessModel().getValue()); - frontLightModel.setStatus(true); + frontLightModel.setBacklight(bell_settings::BacklightState::On); } const auto filePath = soundsRepository->titleToPath( diff --git a/products/BellHybrid/apps/application-bell-settings/models/FrontlightListItemProvider.cpp b/products/BellHybrid/apps/application-bell-settings/models/FrontlightListItemProvider.cpp index f8b9bb4388ff1e9331a2654631988e6b8dce1193..29e429884919ee619dfba8f0ce4478b75045634b 100644 --- a/products/BellHybrid/apps/application-bell-settings/models/FrontlightListItemProvider.cpp +++ b/products/BellHybrid/apps/application-bell-settings/models/FrontlightListItemProvider.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "FrontlightListItemProvider.hpp" @@ -22,7 +22,7 @@ namespace app::bell_settings model.getBrightnessModel(), utils::translate("app_bell_settings_frontlight_top_message")); brightness->set_on_value_change_cb([this](const auto val) { - model.setStatus(true); + model.setBacklight(BacklightState::On); model.setBrightness(val); }); internalData.emplace_back(brightness); diff --git a/products/BellHybrid/apps/application-bell-settings/models/FrontlightModel.cpp b/products/BellHybrid/apps/application-bell-settings/models/FrontlightModel.cpp index 0a1be2133313de7c331a76a2a42ee9b34b6aea06..f9f38bc907fcf2067a852b69bb8b49a0ccaa8783 100644 --- a/products/BellHybrid/apps/application-bell-settings/models/FrontlightModel.cpp +++ b/products/BellHybrid/apps/application-bell-settings/models/FrontlightModel.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include @@ -19,12 +19,14 @@ namespace app::bell_settings const auto responseCallback = [this](const auto response) -> bool { const auto resp = dynamic_cast(response); if (resp) { - this->brightnessAdapter->update( - frontlight_utils::percentageToFixedVal(resp->getParams().manualModeBrightness)); + const auto brightness = frontlight_utils::percentageToFixedVal(resp->getParams().manualModeBrightness); + this->brightnessAdapter->update(brightness); this->modeAdapter->update( resp->getMode() == screen_light_control::ScreenLightMode::Automatic ? autoStr : onDemandStr); if (this->onReady) { this->onReady(); + setBacklight(BacklightState::On); + setBrightness(brightness); } } return true; @@ -33,10 +35,11 @@ namespace app::bell_settings service::name::evt_manager); request->execute(app, this, responseCallback); } - void FrontlightModel::setStatus(bool onOff) + void FrontlightModel::setBacklight(BacklightState state) { app->bus.sendUnicast(std::make_shared( - onOff ? screen_light_control::Action::turnOn : screen_light_control::Action::turnOff), + state == BacklightState::On ? screen_light_control::Action::turnOn + : screen_light_control::Action::turnOff), service::name::evt_manager); } void FrontlightModel::setMode(screen_light_control::ScreenLightMode mode) @@ -49,7 +52,6 @@ namespace app::bell_settings } void FrontlightModel::setBrightness(frontlight_utils::Brightness value) { - hasUnsavedChanges = true; screen_light_control::ConstLinearProgressModeParameters parameters{ frontlight_utils::fixedValToPercentage(value)}; app->bus.sendUnicast(std::make_shared(parameters), @@ -64,19 +66,20 @@ namespace app::bell_settings return *modeAdapter; } - void FrontlightModel::revertUnsavedChanges() + void FrontlightModel::revertConfig() { - if (!hasUnsavedChanges) { - return; - } setMode(modeAdapter->getValue() == autoStr ? screen_light_control::ScreenLightMode::Automatic : screen_light_control::ScreenLightMode::Manual); setBrightness(brightnessAdapter->getValue()); - setStatus(true); } - void FrontlightModel::setChangesSaved() + void FrontlightModel::saveConfig() { - hasUnsavedChanges = false; + configSaved = true; + } + + bool FrontlightModel::isConfigSaved() + { + return configSaved; } } // namespace app::bell_settings diff --git a/products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.cpp b/products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.cpp index 86cddbbb23a1fc53e82a2c1f0593350790157699..fa0f5b48d7ff31e3e7ce32de19e5c978d10b043a 100644 --- a/products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.cpp +++ b/products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "FrontlightPresenter.hpp" @@ -17,9 +17,7 @@ namespace app::bell_settings } FrontlightPresenter::~FrontlightPresenter() - { - revertUnsavedChanges(); - } + {} auto FrontlightPresenter::getPagesProvider() const -> std::shared_ptr { @@ -31,13 +29,23 @@ namespace app::bell_settings provider->clearData(); } - void FrontlightPresenter::saveChanges() + void FrontlightPresenter::saveConfig() + { + frontlightModel->saveConfig(); + } + + void FrontlightPresenter::revertConfig() + { + frontlightModel->revertConfig(); + } + + void FrontlightPresenter::setBacklight() { - frontlightModel->setChangesSaved(); + frontlightModel->setBacklight(BacklightState::On); } - void FrontlightPresenter::revertUnsavedChanges() + bool FrontlightPresenter::isConfigSaved() { - frontlightModel->revertUnsavedChanges(); + return frontlightModel->isConfigSaved(); } } // namespace app::bell_settings diff --git a/products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.hpp b/products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.hpp index 38990697f8eab7a3c0f8550f143871add635109e..331076e619033652ff6a3f7513438740b871125b 100644 --- a/products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.hpp +++ b/products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.hpp @@ -1,5 +1,5 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once @@ -32,8 +32,10 @@ namespace app::bell_settings virtual ~AbstractFrontlightPresenter() = default; virtual auto getPagesProvider() const -> std::shared_ptr = 0; virtual void eraseProviderData() = 0; - virtual void saveChanges() = 0; - virtual void revertUnsavedChanges() = 0; + virtual void saveConfig() = 0; + virtual void setBacklight() = 0; + virtual void revertConfig() = 0; + virtual bool isConfigSaved() = 0; }; class FrontlightPresenter : public AbstractFrontlightPresenter @@ -45,8 +47,10 @@ namespace app::bell_settings auto getPagesProvider() const -> std::shared_ptr override; void eraseProviderData() override; - void saveChanges() override; - void revertUnsavedChanges() override; + void saveConfig() override; + void setBacklight() override; + void revertConfig() override; + bool isConfigSaved() override; private: std::shared_ptr provider; diff --git a/products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.cpp b/products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.cpp index 110dafb1ef78f92d8b5e990f8a8d78f53c2e273d..b2764b8e7cd86921269c4c84f2edc0d27ea26c82 100644 --- a/products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.cpp +++ b/products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "AlarmSettingsPresenter.hpp" @@ -32,13 +32,16 @@ namespace app::bell_settings }; auto setBrightness = [this](const auto &brightness) { - this->frontlight->setStatus(true); + this->frontlight->setBacklight(BacklightState::On); this->frontlight->setBrightness(brightness); }; this->provider->onFrontlightEnter = setBrightness; this->provider->onFrontlightChange = setBrightness; - this->provider->onFrontlightExit = [this]() { this->frontlight->revertUnsavedChanges(); }; + this->provider->onFrontlightExit = [this]() { + this->frontlight->revertConfig(); + this->frontlight->setBacklight(BacklightState::On); + }; } auto AlarmSettingsPresenter::saveData() -> void diff --git a/products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/PrewakeUpPresenter.cpp b/products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/PrewakeUpPresenter.cpp index 6c5a2c2cf4a4e02d8f25da4ad09a2726013deee6..6bd39eb81dc9eba0a3593c6eac5a13b9f78a63ed 100644 --- a/products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/PrewakeUpPresenter.cpp +++ b/products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/PrewakeUpPresenter.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "PrewakeUpPresenter.hpp" @@ -37,13 +37,16 @@ namespace app::bell_settings }; auto setBrightness = [this](const auto &brightness) { - this->frontlight->setStatus(true); + this->frontlight->setBacklight(BacklightState::On); this->frontlight->setBrightness(brightness); }; this->provider->onFrontlightEnter = setBrightness; this->provider->onFrontlightChange = setBrightness; - this->provider->onFrontlightExit = [this]() { this->frontlight->revertUnsavedChanges(); }; + this->provider->onFrontlightExit = [this]() { + this->frontlight->revertConfig(); + this->frontlight->setBacklight(BacklightState::On); + }; } auto PrewakeUpWindowPresenter::saveData() -> void diff --git a/products/BellHybrid/apps/application-bell-settings/windows/BellSettingsFrontlightWindow.cpp b/products/BellHybrid/apps/application-bell-settings/windows/BellSettingsFrontlightWindow.cpp index 3d2df65db8bed048ff75596d5b39717631cfe6ca..cba583c9a7d14c9f2ec5c902ca0013d7e6524793 100644 --- a/products/BellHybrid/apps/application-bell-settings/windows/BellSettingsFrontlightWindow.cpp +++ b/products/BellHybrid/apps/application-bell-settings/windows/BellSettingsFrontlightWindow.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "application-bell-settings/ApplicationBellSettings.hpp" @@ -56,14 +56,15 @@ namespace gui } if (inputEvent.isShortRelease(KeyCode::KEY_RF)) { - presenter->revertUnsavedChanges(); + presenter->revertConfig(); + presenter->setBacklight(); } return AppWindow::onInput(inputEvent); } void BellSettingsFrontlightWindow::exit() { - presenter->saveChanges(); + presenter->saveConfig(); application->switchWindow( window::bell_finished::defaultName, BellFinishedWindowData::Factory::create("circle_success_big", window::name::bellSettings)); @@ -71,6 +72,9 @@ namespace gui void BellSettingsFrontlightWindow::onClose(Window::CloseReason reason) { if (reason != CloseReason::Popup) { + if (!presenter->isConfigSaved()) { + presenter->revertConfig(); + } presenter->eraseProviderData(); } } diff --git a/products/BellHybrid/apps/common/include/common/models/FrontlightModel.hpp b/products/BellHybrid/apps/common/include/common/models/FrontlightModel.hpp index 9880d3005cbdc1a924dabe40886fc297029b0d1e..cc03c7d17350f7987a59def81366027b2ee1be83 100644 --- a/products/BellHybrid/apps/common/include/common/models/FrontlightModel.hpp +++ b/products/BellHybrid/apps/common/include/common/models/FrontlightModel.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once @@ -15,15 +15,22 @@ namespace app namespace app::bell_settings { + enum class BacklightState + { + On, + Off + }; + class AbstractFrontlightModel { public: virtual ~AbstractFrontlightModel() = default; virtual void setBrightness(frontlight_utils::Brightness value) = 0; virtual void setMode(screen_light_control::ScreenLightMode mode) = 0; - virtual void setStatus(bool onOff) = 0; - virtual void revertUnsavedChanges() = 0; - virtual void setChangesSaved() = 0; + virtual void setBacklight(BacklightState state) = 0; + virtual void revertConfig() = 0; + virtual void saveConfig() = 0; + virtual bool isConfigSaved() = 0; virtual gui::AbstractSettingsModel &getBrightnessModel() = 0; virtual gui::AbstractSettingsModel &getModeModel() = 0; @@ -41,9 +48,10 @@ namespace app::bell_settings void setBrightness(frontlight_utils::Brightness value) override; void setMode(screen_light_control::ScreenLightMode mode) override; - void setStatus(bool onOff) override; - void revertUnsavedChanges() override; - void setChangesSaved() override; + void setBacklight(BacklightState state) override; + void revertConfig() override; + void saveConfig() override; + bool isConfigSaved() override; private: template @@ -70,7 +78,7 @@ namespace app::bell_settings std::unique_ptr brightnessAdapter; std::unique_ptr modeAdapter; ApplicationCommon *app{}; - bool hasUnsavedChanges{false}; + bool configSaved{false}; const std::string autoStr; const std::string onDemandStr; };