M module-services/service-evtmgr/screen-light-control/ControlFunctions.cpp => module-services/service-evtmgr/screen-light-control/ControlFunctions.cpp +1 -0
@@ 50,6 50,7 @@ namespace screen_light_control::functions
if (rampState < rampTarget) {
rampState += rampStep;
if (rampState >= rampTarget) {
+ rampState = rampTarget;
rampTargetReached = true;
}
}
M products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.cpp => products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.cpp +1 -1
@@ 76,7 76,7 @@ namespace app::powernap
void PowerNapProgressPresenter::onNapFinished()
{
if (alarmLightOnOffModel->getValue()) {
- frontLightModel.restorePreviousState();
+ frontLightModel.revertUnsavedChanges();
frontLightModel.setStatus(true);
}
M products/BellHybrid/apps/application-bell-settings/models/FrontlightModel.cpp => products/BellHybrid/apps/application-bell-settings/models/FrontlightModel.cpp +10 -1
@@ 70,6 70,7 @@ namespace app::bell_settings
}
void FrontlightModel::setBrightness(Brightness value)
{
+ hasUnsavedChanges = true;
screen_light_control::ConstLinearProgressModeParameters parameters{fixedValToPercentage(value)};
app->bus.sendUnicast(std::make_shared<sevm::ScreenLightSetConstLinearModeParams>(parameters),
service::name::evt_manager);
@@ 83,11 84,19 @@ namespace app::bell_settings
return *modeAdapter;
}
- void FrontlightModel::restorePreviousState()
+ void FrontlightModel::revertUnsavedChanges()
{
setStatus(false);
+ if (!hasUnsavedChanges) {
+ return;
+ }
setMode(modeAdapter->getValue() == autoStr ? screen_light_control::ScreenLightMode::Automatic
: screen_light_control::ScreenLightMode::Manual);
setBrightness(brightnessAdapter->getValue());
}
+
+ void FrontlightModel::setChangesSaved()
+ {
+ hasUnsavedChanges = false;
+ }
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.cpp => products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.cpp +13 -2
@@ 16,6 16,11 @@ namespace app::bell_settings
};
}
+ FrontlightPresenter::~FrontlightPresenter()
+ {
+ revertUnsavedChanges();
+ }
+
auto FrontlightPresenter::getPagesProvider() const -> std::shared_ptr<gui::ListItemProvider>
{
return provider;
@@ 25,8 30,14 @@ namespace app::bell_settings
{
provider->clearData();
}
- void FrontlightPresenter::exitWithoutSave()
+
+ void FrontlightPresenter::saveChanges()
+ {
+ frontlightModel->setChangesSaved();
+ }
+
+ void FrontlightPresenter::revertUnsavedChanges()
{
- frontlightModel->restorePreviousState();
+ frontlightModel->revertUnsavedChanges();
}
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.hpp => products/BellHybrid/apps/application-bell-settings/presenter/FrontlightPresenter.hpp +5 -2
@@ 32,7 32,8 @@ namespace app::bell_settings
virtual ~AbstractFrontlightPresenter() = default;
virtual auto getPagesProvider() const -> std::shared_ptr<gui::ListItemProvider> = 0;
virtual void eraseProviderData() = 0;
- virtual void exitWithoutSave() = 0;
+ virtual void saveChanges() = 0;
+ virtual void revertUnsavedChanges() = 0;
};
class FrontlightPresenter : public AbstractFrontlightPresenter
@@ 40,10 41,12 @@ namespace app::bell_settings
public:
FrontlightPresenter(std::shared_ptr<FrontlightListItemProvider> &&provider,
std::unique_ptr<AbstractFrontlightModel> &&frontlightModel);
+ ~FrontlightPresenter();
auto getPagesProvider() const -> std::shared_ptr<gui::ListItemProvider> override;
void eraseProviderData() override;
- void exitWithoutSave() override;
+ void saveChanges() override;
+ void revertUnsavedChanges() override;
private:
std::shared_ptr<FrontlightListItemProvider> provider;
M products/BellHybrid/apps/application-bell-settings/windows/BellSettingsFrontlightWindow.cpp => products/BellHybrid/apps/application-bell-settings/windows/BellSettingsFrontlightWindow.cpp +2 -1
@@ 53,13 53,14 @@ namespace gui
}
if (inputEvent.isShortRelease(KeyCode::KEY_RF)) {
- presenter->exitWithoutSave();
+ presenter->revertUnsavedChanges();
}
return AppWindow::onInput(inputEvent);
}
void BellSettingsFrontlightWindow::exit()
{
+ presenter->saveChanges();
application->switchWindow(
window::bell_finished::defaultName,
BellFinishedWindowData::Factory::create("circle_success_big", window::name::bellSettings));
M products/BellHybrid/apps/common/include/common/models/FrontlightModel.hpp => products/BellHybrid/apps/common/include/common/models/FrontlightModel.hpp +5 -2
@@ 23,7 23,8 @@ namespace app::bell_settings
virtual void setBrightness(Brightness value) = 0;
virtual void setMode(screen_light_control::ScreenLightMode mode) = 0;
virtual void setStatus(bool onOff) = 0;
- virtual void restorePreviousState() = 0;
+ virtual void revertUnsavedChanges() = 0;
+ virtual void setChangesSaved() = 0;
virtual gui::AbstractSettingsModel<std::uint8_t> &getBrightnessModel() = 0;
virtual gui::AbstractSettingsModel<UTF8> &getModeModel() = 0;
@@ 42,7 43,8 @@ namespace app::bell_settings
void setBrightness(Brightness value) override;
void setMode(screen_light_control::ScreenLightMode mode) override;
void setStatus(bool onOff) override;
- void restorePreviousState() override;
+ void revertUnsavedChanges() override;
+ void setChangesSaved() override;
private:
template <typename ValueT> class Adapter : public gui::AbstractSettingsModel<ValueT>
@@ 68,6 70,7 @@ namespace app::bell_settings
std::unique_ptr<BrightnessAdapter> brightnessAdapter;
std::unique_ptr<ModeAdapter> modeAdapter;
ApplicationCommon *app{};
+ bool hasUnsavedChanges{false};
const std::string autoStr;
const std::string onDemandStr;
};