M module-apps/application-settings-new/ApplicationSettings.cpp => module-apps/application-settings-new/ApplicationSettings.cpp +9 -0
@@ 597,6 597,15 @@ namespace app
: screen_light_control::Action::turnOff),
service::name::evt_manager);
}
+ void ApplicationSettingsNew::setBrightnessFunction()
+ {
+ screen_light_control::Parameters parameters;
+ parameters.functionPoints =
+ screen_light_control::functions::BrightnessFunction({{0.0f, 0.0f}, {1000.0f, 100.0f}});
+ bus.sendUnicast(std::make_shared<sevm::ScreenLightControlMessage>(
+ screen_light_control::Action::setAutomaticModeParameters, parameters),
+ service::name::evt_manager);
+ }
auto ApplicationSettingsNew::isKeypadBacklightOn() -> bool
{
M module-apps/application-settings-new/ApplicationSettings.hpp => module-apps/application-settings-new/ApplicationSettings.hpp +2 -0
@@ 111,6 111,7 @@ namespace app
virtual void setBrightness(float brigtnessValue) = 0;
virtual void setMode(bool isAutoLightSwitchOn) = 0;
virtual void setStatus(bool isDisplayLightSwitchOn) = 0;
+ virtual void setBrightnessFunction() = 0;
};
class KeypdBacklightSettings
@@ 204,6 205,7 @@ namespace app
void setBrightness(float brigtnessValue) override;
void setMode(bool isAutoLightSwitchOn) override;
void setStatus(bool isDisplayLightSwitchOn) override;
+ void setBrightnessFunction() override;
auto isKeypadBacklightOn() -> bool override;
void setKeypadBacklightState(bool newState) override;
M module-apps/application-settings-new/windows/DisplayLightWindow.cpp => module-apps/application-settings-new/windows/DisplayLightWindow.cpp +14 -8
@@ 23,6 23,8 @@ namespace gui
setTitle(utils::localize.get("app_settings_display_display_light"));
+ screenLightSettings->setBrightnessFunction();
+
timerCallback = [this](Item &it, sys::Timer &task) { return onTimerTimeout(it, task); };
timerTask = app::GuiTimerFactory::createPeriodicTimer(
application, this, "AmbientLightTimer", std::chrono::milliseconds{gui::lighting::AMBIENT_LIGHT_TIMER_MS});
@@ 39,6 41,8 @@ namespace gui
auto DisplayLightWindow::onTimerTimeout(Item &self, sys::Timer &task) -> bool
{
ambientLight = bsp::light_sensor::readout();
+ auto values = screenLightSettings->getCurrentValues();
+ brightnessValue = values.parameters.manualModeBrightness;
refreshOptionsList();
application->refreshWindow(gui::RefreshModes::GUI_REFRESH_FAST);
@@ 82,6 86,11 @@ namespace gui
text, nullptr, nullptr, this, gui::option::SettingRightItem::Disabled));
};
+ auto addBrightnessValue = [&](UTF8 text) {
+ optionsList.emplace_back(std::make_unique<gui::option::OptionSettings>(
+ text, nullptr, nullptr, this, gui::option::SettingRightItem::Disabled));
+ };
+
addOnOffOoption(utils::translateI18("app_settings_display_light_main"), isDisplayLightSwitchOn);
if (isDisplayLightSwitchOn) {
addOnOffOoption(utils::translateI18("app_settings_display_light_auto"), isAutoLightSwitchOn);
@@ 92,6 101,8 @@ namespace gui
}
addDisplayLight("Light intensity = " + utils::to_string(ambientLight));
+ addBrightnessValue("Manual brightness = " + utils::to_string(brightnessValue) + "%");
+
return optionsList;
}
@@ 110,8 121,8 @@ namespace gui
};
auto spinner = std::make_unique<gui::SpinBoxOptionSettings>(
- utils::translateI18("app_settings_display_light_brightness") + " " + utils::to_string(brightnessStep),
- brightnessValue * brightnessStep,
+ utils::translateI18("app_settings_display_light_brightness"),
+ std::ceil(brightnessValue / brightnessStep),
std::ceil(screen_light_control::Parameters::MAX_BRIGHTNESS / brightnessStep),
setBrightness,
setBottomBarOnSpinnerFocus);
@@ 121,11 132,6 @@ namespace gui
void DisplayLightWindow::addBrightnessOption(std::list<gui::Option> &options)
{
- /*
- * We are adding 4 brightness widgets to easily check what is the best step for setting screen brightness.
- */
- for (auto step : {10, 15, 20, 25}) {
- options.emplace_back(createBrightnessOption(step));
- }
+ options.emplace_back(createBrightnessOption(lighting::LIGHT_CONTROL_STEP));
}
} // namespace gui
M module-apps/application-settings-new/windows/DisplayLightWindow.hpp => module-apps/application-settings-new/windows/DisplayLightWindow.hpp +3 -1
@@ 15,6 15,7 @@ namespace gui
namespace lighting
{
constexpr inline auto AMBIENT_LIGHT_TIMER_MS = 2000;
+ constexpr inline auto LIGHT_CONTROL_STEP = 10;
}
class DisplayLightWindow : public BaseSettingsWindow
@@ 31,7 32,8 @@ namespace gui
auto createBrightnessOption(int step) -> std::unique_ptr<SpinBoxOptionSettings>;
bool isDisplayLightSwitchOn = false;
bool isAutoLightSwitchOn = false;
- std::uint8_t brightnessValue = 0;
+ bsp::eink_frontlight::BrightnessPercentage brightnessValue = 0.0;
+
app::settingsInterface::ScreenLightSettings *screenLightSettings = nullptr;
float ambientLight = 0.0;
sys::TimerHandle timerTask;