~aleteoryx/muditaos

01800f435e6484ae139bb83c19e61ad91282b778 — Dawid Wojtas 2 years ago 5a26022
[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.
M harmony_changelog.md => harmony_changelog.md +2 -0
@@ 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


M products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.cpp => products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.cpp +2 -2
@@ 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(

M products/BellHybrid/apps/application-bell-settings/models/FrontlightListItemProvider.cpp => products/BellHybrid/apps/application-bell-settings/models/FrontlightListItemProvider.cpp +2 -2
@@ 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);

M products/BellHybrid/apps/application-bell-settings/models/FrontlightModel.cpp => products/BellHybrid/apps/application-bell-settings/models/FrontlightModel.cpp +16 -13
@@ 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 <common/models/FrontlightModel.hpp>


@@ 19,12 19,14 @@ namespace app::bell_settings
        const auto responseCallback = [this](const auto response) -> bool {
            const auto resp = dynamic_cast<sevm::ScreenLightControlParametersResponse *>(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<sevm::ScreenLightControlMessage>(
                                 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<sevm::ScreenLightSetConstLinearModeParams>(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

M products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.cpp => products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.cpp +16 -8
@@ 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<gui::ListItemProvider>
    {


@@ 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

M products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.hpp => products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.hpp +9 -5
@@ 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<gui::ListItemProvider> = 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<gui::ListItemProvider> 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<FrontlightListItemProvider> provider;

M products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.cpp => products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.cpp +6 -3
@@ 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

M products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/PrewakeUpPresenter.cpp => products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/PrewakeUpPresenter.cpp +6 -3
@@ 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

M products/BellHybrid/apps/application-bell-settings/windows/BellSettingsFrontlightWindow.cpp => products/BellHybrid/apps/application-bell-settings/windows/BellSettingsFrontlightWindow.cpp +7 -3
@@ 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();
        }
    }

M products/BellHybrid/apps/common/include/common/models/FrontlightModel.hpp => products/BellHybrid/apps/common/include/common/models/FrontlightModel.hpp +16 -8
@@ 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<std::uint8_t> &getBrightnessModel() = 0;
        virtual gui::AbstractSettingsModel<UTF8> &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 <typename ValueT>


@@ 70,7 78,7 @@ namespace app::bell_settings
        std::unique_ptr<BrightnessAdapter> brightnessAdapter;
        std::unique_ptr<ModeAdapter> modeAdapter;
        ApplicationCommon *app{};
        bool hasUnsavedChanges{false};
        bool configSaved{false};
        const std::string autoStr;
        const std::string onDemandStr;
    };