M harmony_changelog.md => harmony_changelog.md +3 -0
@@ 17,6 17,9 @@
#### Onboarding
* Shortcuts instruction.
+#### Alarm
+* Front light intensity during the main alarm and pre-wake up
+
### Changed
#### Home Screen:
M image/assets/lang/English.json => image/assets/lang/English.json +4 -4
@@ 669,11 669,11 @@
"app_bell_settings_about_info_text": "www.mudita.com",
"app_bell_settings_alarm_settings": "Alarm",
"app_bell_settings_alarm_settings_title": "Alarm settings",
- "app_bell_settings_alarm_settings_tone": "Alarm tone",
- "app_bell_settings_alarm_settings_volume": "Alarm volume",
- "app_bell_settings_alarm_settings_light": "Alarm light",
+ "app_bell_settings_alarm_settings_tone": "Main alarm tone",
+ "app_bell_settings_alarm_settings_volume": "Main alarm volume",
+ "app_bell_settings_alarm_settings_light": "Main alarm light",
"app_bell_settings_alarm_settings_prewake_up": "Pre-wake up",
- "app_bell_settings_alarm_settings_prewake_up_chime_top_description": "Pre-wake up chime",
+ "app_bell_settings_alarm_settings_prewake_up_chime_top_description": "Pre-wake up",
"app_bell_settings_alarm_settings_prewake_up_chime_bottom_description": "before the alarm",
"app_bell_settings_alarm_settings_prewake_up_chime_tone": "Pre-wake up chime tone",
"app_bell_settings_alarm_settings_prewake_up_chime_volume": "Pre-wake up chime volume",
M image/user/db/settings_bell_002.sql => image/user/db/settings_bell_002.sql +2 -0
@@ 38,9 38,11 @@ INSERT OR IGNORE INTO settings_tab (path, value) VALUES
('prewake_up_duration', '0'),
('prewake_up_tone','Joyful Awakening'),
('prewake_up_light_duration','0'),
+ ('prewake_up_brightness','50.0f'),
('alarm_tone','Morning Dew'),
('alarm_light_active','1'),
('alarm_duration','5'),
+ ('alarm_brightness','50.0f'),
('bedtime_active','0'),
('bedtime_time','22:00'),
('bedtime_tone','Evening Horizon'),
M products/BellHybrid/alarms/src/actions/FrontlightAction.cpp => products/BellHybrid/alarms/src/actions/FrontlightAction.cpp +38 -13
@@ 9,6 9,7 @@
#include <service-db/Settings.hpp>
#include <db/SystemSettings.hpp>
#include <module-utils/utility/Utils.hpp>
+#include <common/data/FrontlightUtils.hpp>
namespace alarms
{
@@ 25,6 26,7 @@ namespace alarms
screen_light_control::ManualModeParameters prepareParameters();
sys::Service &service;
+ settings::Settings settings;
};
class LinearProgressFrontlightAction : public AbstractAlarmAction
@@ 84,6 86,7 @@ namespace alarms
case SettingsDependency::None:
break;
}
+
return pimpl->execute();
}
@@ 103,11 106,25 @@ namespace alarms
default:
break;
}
+
return pimpl->turnOff();
}
+ screen_light_control::ManualModeParameters ManualFrontlightAction::prepareParameters()
+ {
+ std::string brightnessString =
+ settings.getValue(bell::settings::Alarm::brightness, settings::SettingsScope::Global);
+
+ screen_light_control::ManualModeParameters params{};
+ params.manualModeBrightness = frontlight_utils::fixedValToPercentage(std::stoi(brightnessString));
+
+ return params;
+ }
+
ManualFrontlightAction::ManualFrontlightAction(sys::Service &service) : service{service}
- {}
+ {
+ settings.init(service::ServiceProxy{service.weak_from_this()});
+ }
bool ManualFrontlightAction::execute()
{
@@ 118,11 135,6 @@ namespace alarms
return true;
}
- screen_light_control::ManualModeParameters ManualFrontlightAction::prepareParameters()
- {
- return screen_light_control::ManualModeParameters{.manualModeBrightness = 100.0f};
- }
-
bool ManualFrontlightAction::turnOff()
{
service.bus.sendUnicast(
@@ 149,16 161,28 @@ namespace alarms
screen_light_control::LinearProgressModeParameters LinearProgressFrontlightAction::prepareParameters()
{
constexpr auto firstTargetDuration = std::chrono::seconds{5};
+
+ std::string brightnessString =
+ settings.getValue(bell::settings::PrewakeUp::brightness, settings::SettingsScope::Global);
const auto value = settings.getValue(bell::settings::PrewakeUp::lightDuration, settings::SettingsScope::Global);
const auto lightDuration = std::chrono::minutes{utils::toNumeric(value)};
const auto secondTargetDuration = lightDuration - std::chrono::minutes{1} - firstTargetDuration;
- return screen_light_control::LinearProgressModeParameters{
- .startBrightnessValue = 0.0f,
- .functions = {screen_light_control::functions::LinearProgressFunction{.target = 10.0f,
- .duration = firstTargetDuration},
- screen_light_control::functions::LinearProgressFunction{.target = 100.0f,
- .duration = secondTargetDuration}},
- .brightnessHysteresis = 0.0f};
+
+ screen_light_control::LinearProgressModeParameters params{};
+ screen_light_control::functions::LinearProgressFunction startFunction{}, endFunction{};
+
+ startFunction.duration = firstTargetDuration;
+ startFunction.target = 10.0f;
+
+ endFunction.duration = secondTargetDuration;
+ endFunction.target = frontlight_utils::fixedValToPercentage(std::stoi(brightnessString));
+ ;
+
+ params.startBrightnessValue = 0.0f;
+ params.brightnessHysteresis = 0.0f;
+ params.functions = {startFunction, endFunction};
+
+ return params;
}
bool LinearProgressFrontlightAction::turnOff()
@@ 168,4 192,5 @@ namespace alarms
service::name::evt_manager);
return true;
}
+
} // namespace alarms
M products/BellHybrid/alarms/src/actions/FrontlightAction.hpp => products/BellHybrid/alarms/src/actions/FrontlightAction.hpp +1 -0
@@ 5,6 5,7 @@
#include "AbstractAlarmAction.hpp"
#include <service-db/Settings.hpp>
+#include <service-evtmgr/ScreenLightControlMessage.hpp>
#include <Service/Service.hpp>
M products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp => products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp +32 -16
@@ 154,20 154,28 @@ namespace app
windowsFactory.attach(
gui::BellSettingsPrewakeUpWindow::name, [this](ApplicationCommon *app, const std::string &name) {
- auto chimeDurationModel = std::make_unique<bell_settings::PrewakeUpChimeDurationModel>(this);
- auto chimeToneModel = std::make_unique<bell_settings::PrewakeUpChimeToneModel>(this);
- auto chimeVolumeModel = std::make_unique<bell_settings::PrewakeUpChimeVolumeModel>(*audioModel);
- auto lightDurationModel = std::make_unique<bell_settings::PrewakeUpLightDurationModel>(this);
+ auto prewakeUpChimeDurationModel = std::make_unique<bell_settings::PrewakeUpChimeDurationModel>(this);
+ auto prewakeUpChimeToneModel = std::make_unique<bell_settings::PrewakeUpChimeToneModel>(this);
+ auto prewakeUpChimeVolumeModel =
+ std::make_unique<bell_settings::PrewakeUpChimeVolumeModel>(*audioModel);
+ auto prewakeUpLightDurationModel = std::make_unique<bell_settings::PrewakeUpLightDurationModel>(this);
+ auto prewakeUpFrontlightModel = std::make_unique<bell_settings::PrewakeUpFrontlightModel>(this);
auto prewakeUpSettingsModel =
- std::make_unique<bell_settings::PrewakeUpSettingsModel>(std::move(chimeDurationModel),
- std::move(chimeToneModel),
- std::move(chimeVolumeModel),
- std::move(lightDurationModel));
+ std::make_unique<bell_settings::PrewakeUpSettingsModel>(std::move(prewakeUpChimeDurationModel),
+ std::move(prewakeUpChimeToneModel),
+ std::move(prewakeUpChimeVolumeModel),
+ std::move(prewakeUpLightDurationModel),
+ std::move(prewakeUpFrontlightModel));
auto soundsRepository = std::make_unique<SoundsRepository>(alarms::paths::getPreWakeUpChimesDir());
- auto provider = std::make_shared<bell_settings::PrewakeUpListItemProvider>(
+ auto provider = std::make_unique<bell_settings::PrewakeUpListItemProvider>(
*prewakeUpSettingsModel, soundsRepository->getSongTitles());
- auto presenter = std::make_unique<bell_settings::PrewakeUpWindowPresenter>(
- provider, std::move(prewakeUpSettingsModel), *audioModel, std::move(soundsRepository));
+ auto frontlightModel = std::make_unique<bell_settings::FrontlightModel>(app);
+ auto presenter =
+ std::make_unique<bell_settings::PrewakeUpWindowPresenter>(std::move(provider),
+ std::move(prewakeUpSettingsModel),
+ *audioModel,
+ std::move(soundsRepository),
+ std::move(frontlightModel));
return std::make_unique<gui::BellSettingsPrewakeUpWindow>(app, std::move(presenter));
});
@@ 201,13 209,21 @@ namespace app
auto alarmToneModel = std::make_unique<bell_settings::AlarmToneModel>(this);
auto alarmVolumeModel = std::make_unique<bell_settings::AlarmVolumeModel>(*audioModel);
auto alarmLightOnOffModel = std::make_unique<bell_settings::AlarmLightOnOffModel>(this);
- auto alarmSettingsModel = std::make_unique<bell_settings::AlarmSettingsModel>(
- std::move(alarmToneModel), std::move(alarmVolumeModel), std::move(alarmLightOnOffModel));
+ auto alarmFrontlightModel = std::make_unique<bell_settings::AlarmFrontlightModel>(this);
+ auto alarmSettingsModel =
+ std::make_unique<bell_settings::AlarmSettingsModel>(std::move(alarmToneModel),
+ std::move(alarmVolumeModel),
+ std::move(alarmLightOnOffModel),
+ std::move(alarmFrontlightModel));
auto soundsRepository = std::make_unique<SoundsRepository>(alarms::paths::getAlarmDir());
- auto provider = std::make_shared<bell_settings::AlarmSettingsListItemProvider>(
+ auto frontlightModel = std::make_unique<bell_settings::FrontlightModel>(app);
+ auto provider = std::make_unique<bell_settings::AlarmSettingsListItemProvider>(
*alarmSettingsModel, soundsRepository->getSongTitles());
- auto presenter = std::make_unique<bell_settings::AlarmSettingsPresenter>(
- provider, std::move(alarmSettingsModel), *audioModel, std::move(soundsRepository));
+ auto presenter = std::make_unique<bell_settings::AlarmSettingsPresenter>(std::move(provider),
+ std::move(alarmSettingsModel),
+ *audioModel,
+ std::move(soundsRepository),
+ std::move(frontlightModel));
return std::make_unique<gui::BellSettingsAlarmSettingsWindow>(app, std::move(presenter));
});
M products/BellHybrid/apps/application-bell-settings/models/FrontlightModel.cpp => products/BellHybrid/apps/application-bell-settings/models/FrontlightModel.cpp +6 -26
@@ 8,28 8,6 @@
#include <service-evtmgr/Constants.hpp>
#include <service-evtmgr/ScreenLightControlMessage.hpp>
-namespace
-{
- constexpr auto minPercent = 0.0f;
- constexpr auto maxPercent = 100.0f;
- constexpr auto minimumLightOnPercentOffsetValue = 16.0f;
- constexpr auto minBrightness = 1U;
- constexpr auto maxBrightness = 10U;
- constexpr float multiplier = (maxPercent - minimumLightOnPercentOffsetValue) / maxBrightness;
-
- float fixedValToPercentage(app::bell_settings::AbstractFrontlightModel::Brightness value)
- {
- float scaled = minimumLightOnPercentOffsetValue + (value - minBrightness) * multiplier;
- return std::min(maxPercent, std::max(minPercent, scaled));
- }
-
- app::bell_settings::AbstractFrontlightModel::Brightness percentageToFixedVal(float percent)
- {
- auto value = (percent - minimumLightOnPercentOffsetValue) / multiplier;
- return std::round(value + minBrightness);
- }
-} // namespace
-
namespace app::bell_settings
{
FrontlightModel::FrontlightModel(ApplicationCommon *app)
@@ 41,7 19,8 @@ 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(percentageToFixedVal(resp->getParams().manualModeBrightness));
+ this->brightnessAdapter->update(
+ frontlight_utils::percentageToFixedVal(resp->getParams().manualModeBrightness));
this->modeAdapter->update(
resp->getMode() == screen_light_control::ScreenLightMode::Automatic ? autoStr : onDemandStr);
if (this->onReady) {
@@ 68,10 47,11 @@ namespace app::bell_settings
: screen_light_control::Action::disableAutomaticMode),
service::name::evt_manager);
}
- void FrontlightModel::setBrightness(Brightness value)
+ void FrontlightModel::setBrightness(frontlight_utils::Brightness value)
{
hasUnsavedChanges = true;
- screen_light_control::ConstLinearProgressModeParameters parameters{fixedValToPercentage(value)};
+ screen_light_control::ConstLinearProgressModeParameters parameters{
+ frontlight_utils::fixedValToPercentage(value)};
app->bus.sendUnicast(std::make_shared<sevm::ScreenLightSetConstLinearModeParams>(parameters),
service::name::evt_manager);
}
@@ 89,10 69,10 @@ namespace app::bell_settings
if (!hasUnsavedChanges) {
return;
}
- setStatus(false);
setMode(modeAdapter->getValue() == autoStr ? screen_light_control::ScreenLightMode::Automatic
: screen_light_control::ScreenLightMode::Manual);
setBrightness(brightnessAdapter->getValue());
+ setStatus(true);
}
void FrontlightModel::setChangesSaved()
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AbstractPrewakeUpSettingsModel.hpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AbstractPrewakeUpSettingsModel.hpp +16 -6
@@ 1,9 1,10 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include <common/models/AbstractSettingsModel.hpp>
+#include <common/data/FrontlightUtils.hpp>
#include <utf8/UTF8.hpp>
#include <cstdint>
@@ 15,12 16,15 @@ namespace app::bell_settings
class AbstractPrewakeUpSettingsModel
{
public:
- AbstractPrewakeUpSettingsModel(std::unique_ptr<gui::AbstractSettingsModel<std::uint8_t>> chimeDuration,
- std::unique_ptr<gui::AbstractSettingsModel<UTF8>> chimeTone,
- std::unique_ptr<gui::AbstractSettingsModel<std::uint8_t>> chimeVolume,
- std::unique_ptr<gui::AbstractSettingsModel<std::uint8_t>> lightDuration)
+ AbstractPrewakeUpSettingsModel(
+ std::unique_ptr<gui::AbstractSettingsModel<std::uint8_t>> chimeDuration,
+ std::unique_ptr<gui::AbstractSettingsModel<UTF8>> chimeTone,
+ std::unique_ptr<gui::AbstractSettingsModel<std::uint8_t>> chimeVolume,
+ std::unique_ptr<gui::AbstractSettingsModel<std::uint8_t>> lightDuration,
+ std::unique_ptr<gui::AbstractSettingsModel<frontlight_utils::Brightness>> frontlight)
: chimeDuration(std::move(chimeDuration)), chimeTone(std::move(chimeTone)),
- chimeVolume(std::move(chimeVolume)), lightDuration(std::move(lightDuration))
+ chimeVolume(std::move(chimeVolume)), lightDuration(std::move(lightDuration)),
+ frontlight(std::move(frontlight))
{}
virtual ~AbstractPrewakeUpSettingsModel() = default;
@@ 45,10 49,16 @@ namespace app::bell_settings
return *lightDuration;
}
+ gui::AbstractSettingsModel<frontlight_utils::Brightness> &getBrightness()
+ {
+ return *frontlight;
+ }
+
private:
std::unique_ptr<gui::AbstractSettingsModel<std::uint8_t>> chimeDuration;
std::unique_ptr<gui::AbstractSettingsModel<UTF8>> chimeTone;
std::unique_ptr<gui::AbstractSettingsModel<std::uint8_t>> chimeVolume;
std::unique_ptr<gui::AbstractSettingsModel<std::uint8_t>> lightDuration;
+ std::unique_ptr<gui::AbstractSettingsModel<frontlight_utils::Brightness>> frontlight;
};
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsListItemProvider.cpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsListItemProvider.cpp +48 -8
@@ 1,8 1,9 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "BellSettingsStyle.hpp"
#include "AlarmSettingsListItemProvider.hpp"
+#include <common/models/FrontlightModel.hpp>
#include <common/widgets/ListItems.hpp>
#include <common/widgets/list_items/Text.hpp>
#include <common/widgets/list_items/Numeric.hpp>
@@ 12,20 13,23 @@ namespace app::bell_settings
{
using namespace gui;
- AlarmSettingsListItemProvider::AlarmSettingsListItemProvider(AbstractAlarmSettingsModel &model,
+ AlarmSettingsListItemProvider::AlarmSettingsListItemProvider(AbstractAlarmSettingsModel &settingsModel,
std::vector<UTF8> alarmToneRange)
- : model{model}
+ : settingsModel{settingsModel}
{
buildListItems(std::move(alarmToneRange));
}
void AlarmSettingsListItemProvider::buildListItems(std::vector<UTF8> alarmTonesRange)
{
- constexpr auto itemCount = 4U;
+ constexpr auto brightnessMin = 1U;
+ constexpr auto brightnessMax = 10U;
+ constexpr auto brightnessStep = 1U;
+ constexpr auto itemCount = 5U;
internalData.reserve(itemCount);
auto alarmTone = new list_items::Text(std::move(alarmTonesRange),
- model.getAlarmTone(),
+ settingsModel.getAlarmTone(),
utils::translate("app_bell_settings_alarm_settings_tone"));
alarmTone->set_on_value_change_cb([this](const auto &val) {
if (onToneChange) {
@@ 49,7 53,7 @@ namespace app::bell_settings
constexpr auto volumeMax = 10U;
auto alarmVolume =
new list_items::Numeric(list_items::Numeric::spinner_type::range{volumeMin, volumeMax, volumeStep},
- model.getAlarmVolume(),
+ settingsModel.getAlarmVolume(),
utils::translate("app_bell_settings_alarm_settings_volume"));
alarmVolume->set_on_value_change_cb([this](const auto &val) {
if (onVolumeChange) {
@@ 69,8 73,44 @@ namespace app::bell_settings
internalData.emplace_back(alarmVolume);
- internalData.emplace_back(
- new OnOffListItem(model.getAlarmLightOnOff(), utils::translate("app_bell_settings_alarm_settings_light")));
+ auto onOffLight = new OnOffListItem(settingsModel.getAlarmLightOnOff(),
+ utils::translate("app_bell_settings_alarm_settings_light"));
+
+ internalData.emplace_back(onOffLight);
+
+ onOffLight->onProceed = [onOffLight, this]() {
+ if (!onOffLight->isActive()) {
+ this->onExit();
+ return true;
+ }
+ return false;
+ };
+
+ auto brightness = new list_items::Numeric(
+ list_items::Numeric::spinner_type::range{brightnessMin, brightnessMax, brightnessStep},
+ settingsModel.getBrightness(),
+ utils::translate("app_bell_settings_frontlight_top_message"));
+
+ brightness->set_on_value_change_cb([this](const auto &val) {
+ if (onFrontlightChange) {
+ onFrontlightChange(val);
+ }
+ });
+
+ brightness->onEnter = [this]() {
+ auto brightness = settingsModel.getBrightness().getValue();
+ if (onFrontlightEnter) {
+ onFrontlightEnter(brightness);
+ }
+ };
+
+ brightness->onExit = [this]() {
+ if (onFrontlightExit) {
+ onFrontlightExit();
+ }
+ };
+
+ internalData.emplace_back(brightness);
for (auto item : internalData) {
item->deleteByList = false;
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsListItemProvider.hpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsListItemProvider.hpp +4 -2
@@ 5,18 5,20 @@
#include "SettingsListItemProvider.hpp"
#include <common/models/AbstractAlarmSettingsModel.hpp>
+#include <common/models/AbstractSettingsModel.hpp>
namespace app::bell_settings
{
+ class AbstractFrontlightModel;
class AlarmSettingsListItemProvider : public SettingsListItemProvider
{
public:
- AlarmSettingsListItemProvider(AbstractAlarmSettingsModel &model, std::vector<UTF8> alarmToneRange);
+ AlarmSettingsListItemProvider(AbstractAlarmSettingsModel &settingsModel, std::vector<UTF8> alarmToneRange);
private:
void buildListItems(std::vector<UTF8> alarmTonesRange);
- AbstractAlarmSettingsModel &model;
+ AbstractAlarmSettingsModel &settingsModel;
};
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsModel.cpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsModel.cpp +12 -0
@@ 47,4 47,16 @@ namespace app::bell_settings
const auto str = settings.getValue(bell::settings::Alarm::lightActive, settings::SettingsScope::Global);
return std::stoi(str);
}
+
+ void AlarmFrontlightModel::setValue(frontlight_utils::Brightness value)
+ {
+ const auto valStr = std::to_string(value);
+ settings.setValue(bell::settings::Alarm::brightness, valStr, settings::SettingsScope::Global);
+ }
+
+ frontlight_utils::Brightness AlarmFrontlightModel::getValue() const
+ {
+ const auto str = settings.getValue(bell::settings::Alarm::brightness, settings::SettingsScope::Global);
+ return std::stoi(str);
+ }
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpListItemProvider.cpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpListItemProvider.cpp +47 -10
@@ 1,7 1,8 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "PrewakeUpListItemProvider.hpp"
+#include <common/models/FrontlightModel.hpp>
#include <common/widgets/list_items/NumberWithSuffix.hpp>
#include <common/widgets/list_items/Numeric.hpp>
#include <common/widgets/ListItems.hpp>
@@ 14,29 15,31 @@ namespace app::bell_settings
{
using namespace gui;
- PrewakeUpListItemProvider::PrewakeUpListItemProvider(AbstractPrewakeUpSettingsModel &model,
+ PrewakeUpListItemProvider::PrewakeUpListItemProvider(AbstractPrewakeUpSettingsModel &settingsModel,
std::vector<UTF8> chimeToneRange)
- : model{model}
+ : settingsModel{settingsModel}
{
buildListItems(std::move(chimeToneRange));
}
void PrewakeUpListItemProvider::buildListItems(std::vector<UTF8> chimeToneRange)
{
- constexpr auto itemCount = 4U;
+ constexpr auto brightnessMin = 1U;
+ constexpr auto brightnessMax = 10U;
+ constexpr auto brightnessStep = 1U;
+ constexpr auto itemCount = 5U;
internalData.reserve(itemCount);
const std::string minStr = utils::translate("common_minute_short");
auto chimeDuration = new list_items::NumberWithSuffix(
list_items::NumberWithSuffix::spinner_type::range{0, 5, 10, 15},
- model.getChimeDuration(),
+ settingsModel.getChimeDuration(),
utils::translate("app_bell_settings_alarm_settings_prewake_up_chime_top_description"),
utils::translate("app_bell_settings_alarm_settings_prewake_up_chime_bottom_description"));
chimeDuration->onProceed = [chimeDuration, this]() {
if (chimeDuration->value() == 0) {
- constexpr auto lightDurationListIndex = 3U;
- list->rebuildList(gui::listview::RebuildType::OnOffset, lightDurationListIndex);
+ this->onExit();
return true;
}
return false;
@@ 46,7 49,7 @@ namespace app::bell_settings
auto chimeTone =
new list_items::Text(std::move(chimeToneRange),
- model.getChimeTone(),
+ settingsModel.getChimeTone(),
utils::translate("app_bell_settings_alarm_settings_prewake_up_chime_tone"));
chimeTone->set_on_value_change_cb([this](const auto &val) {
if (onToneChange) {
@@ 70,7 73,7 @@ namespace app::bell_settings
constexpr auto volumeMax = 10U;
auto volume =
new list_items::Numeric(list_items::Numeric::spinner_type::range{volumeMin, volumeMax, volumeStep},
- model.getChimeVolume(),
+ settingsModel.getChimeVolume(),
utils::translate("app_bell_settings_alarm_settings_prewake_up_chime_volume"));
volume->set_on_value_change_cb([this](const auto &val) {
if (onVolumeChange) {
@@ 93,7 96,7 @@ namespace app::bell_settings
auto lightDuration = new list_items::NumberWithSuffix(
list_items::NumberWithSuffix::spinner_type::range{0, 5, 10, 15},
- model.getLightDuration(),
+ settingsModel.getLightDuration(),
utils::translate("app_bell_settings_alarm_settings_prewake_up_light_top_description"),
utils::translate("app_bell_settings_alarm_settings_prewake_up_light_bottom_description"));
@@ 105,8 108,42 @@ namespace app::bell_settings
return false;
};
+ lightDuration->onProceed = [lightDuration, this]() {
+ if (lightDuration->value() == 0) {
+ this->onExit();
+ return true;
+ }
+ return false;
+ };
+
internalData.emplace_back(lightDuration);
+ auto brightness = new list_items::Numeric(
+ list_items::Numeric::spinner_type::range{brightnessMin, brightnessMax, brightnessStep},
+ settingsModel.getBrightness(),
+ utils::translate("app_bell_settings_frontlight_top_message"));
+
+ brightness->set_on_value_change_cb([this](const auto &val) {
+ if (onFrontlightChange) {
+ onFrontlightChange(val);
+ }
+ });
+
+ brightness->onEnter = [this]() {
+ auto brightness = settingsModel.getBrightness().getValue();
+ if (onFrontlightEnter) {
+ onFrontlightEnter(brightness);
+ }
+ };
+
+ brightness->onExit = [this]() {
+ if (onFrontlightExit) {
+ onFrontlightExit();
+ }
+ };
+
+ internalData.emplace_back(brightness);
+
for (auto item : internalData) {
item->deleteByList = false;
}
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpListItemProvider.hpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpListItemProvider.hpp +5 -3
@@ 1,22 1,24 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include "SettingsListItemProvider.hpp"
#include "AbstractPrewakeUpSettingsModel.hpp"
+#include <common/models/AbstractSettingsModel.hpp>
namespace app::bell_settings
{
+ class AbstractFrontlightModel;
class PrewakeUpListItemProvider : public SettingsListItemProvider
{
public:
- PrewakeUpListItemProvider(AbstractPrewakeUpSettingsModel &model, std::vector<UTF8> chimeToneRange);
+ PrewakeUpListItemProvider(AbstractPrewakeUpSettingsModel &settingsModel, std::vector<UTF8> chimeToneRange);
private:
void buildListItems(std::vector<UTF8> preWakeupToneRange);
- AbstractPrewakeUpSettingsModel &model;
+ AbstractPrewakeUpSettingsModel &settingsModel;
};
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpSettingsModel.cpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpSettingsModel.cpp +12 -0
@@ 59,4 59,16 @@ namespace app::bell_settings
const auto str = settings.getValue(bell::settings::PrewakeUp::lightDuration, settings::SettingsScope::Global);
return std::stoi(str);
}
+
+ void PrewakeUpFrontlightModel::setValue(frontlight_utils::Brightness value)
+ {
+ const auto valStr = std::to_string(frontlight_utils::fixedValToPercentage(value));
+ settings.setValue(bell::settings::PrewakeUp::brightness, valStr, settings::SettingsScope::Global);
+ }
+
+ frontlight_utils::Brightness PrewakeUpFrontlightModel::getValue() const
+ {
+ const auto str = settings.getValue(bell::settings::PrewakeUp::brightness, settings::SettingsScope::Global);
+ return frontlight_utils::percentageToFixedVal(std::stoi(str));
+ }
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpSettingsModel.hpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpSettingsModel.hpp +15 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 6,6 6,7 @@
#include "AbstractPrewakeUpSettingsModel.hpp"
#include <common/models/SettingsModel.hpp>
#include <common/models/AudioModel.hpp>
+#include <common/data/FrontlightUtils.hpp>
namespace app::bell_settings
{
@@ 49,17 50,28 @@ namespace app::bell_settings
std::uint8_t getValue() const override;
};
+ class PrewakeUpFrontlightModel : public gui::SettingsModel<frontlight_utils::Brightness>
+ {
+ public:
+ using SettingsModel::SettingsModel;
+
+ void setValue(frontlight_utils::Brightness value) override;
+ frontlight_utils::Brightness getValue() const override;
+ };
+
class PrewakeUpSettingsModel : public AbstractPrewakeUpSettingsModel
{
public:
PrewakeUpSettingsModel(std::unique_ptr<PrewakeUpChimeDurationModel> chimeDurationModel,
std::unique_ptr<PrewakeUpChimeToneModel> chimeToneModel,
std::unique_ptr<PrewakeUpChimeVolumeModel> chimeVolumeModel,
- std::unique_ptr<PrewakeUpLightDurationModel> lightDurationModel)
+ std::unique_ptr<PrewakeUpLightDurationModel> lightDurationModel,
+ std::unique_ptr<PrewakeUpFrontlightModel> frontlightModel)
: AbstractPrewakeUpSettingsModel(std::move(chimeDurationModel),
std::move(chimeToneModel),
std::move(chimeVolumeModel),
- std::move(lightDurationModel))
+ std::move(lightDurationModel),
+ std::move(frontlightModel))
{}
};
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/SettingsListItemProvider.hpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/SettingsListItemProvider.hpp +9 -1
@@ 1,9 1,10 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include <common/widgets/BellSideListItemWithCallbacks.hpp>
+#include <common/data/FrontlightUtils.hpp>
#include <apps-common/InternalModel.hpp>
namespace app::bell_settings
@@ 18,6 19,9 @@ namespace app::bell_settings
/// Val contains currently chosen volume(1-10 range)
using VolumeCallback = std::function<void(const uint32_t &val)>;
using VolumeEnterCallback = ToneCallback;
+ using FrontlightCallback = std::function<void(const frontlight_utils::Brightness &val)>;
+ using FrontlightEnterCallback = FrontlightCallback;
+ using FrontlightExitCallback = std::function<void()>;
std::vector<gui::BellSideListItemWithCallbacks *> getListItems();
@@ 40,6 44,10 @@ namespace app::bell_settings
VolumeEnterCallback onVolumeEnter;
VolumeCallback onVolumeExit;
VolumeCallback onVolumeChange;
+
+ FrontlightEnterCallback onFrontlightEnter;
+ FrontlightExitCallback onFrontlightExit;
+ FrontlightCallback onFrontlightChange;
};
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.cpp => products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.cpp +18 -6
@@ 6,12 6,13 @@
namespace app::bell_settings
{
- AlarmSettingsPresenter::AlarmSettingsPresenter(std::shared_ptr<AlarmSettingsListItemProvider> provider,
- std::unique_ptr<AbstractAlarmSettingsModel> model,
+ AlarmSettingsPresenter::AlarmSettingsPresenter(std::unique_ptr<AlarmSettingsListItemProvider> &&provider,
+ std::unique_ptr<AbstractAlarmSettingsModel> &&settingsModel,
AbstractAudioModel &audioModel,
- std::unique_ptr<AbstractSoundsRepository> soundsRepository)
- : provider(provider),
- model(std::move(model)), audioModel{audioModel}, soundsRepository{std::move(soundsRepository)}
+ std::unique_ptr<AbstractSoundsRepository> &&soundsRepository,
+ std::unique_ptr<AbstractFrontlightModel> &&frontlight)
+ : provider{std::move(provider)}, settingsModel{std::move(settingsModel)}, audioModel{audioModel},
+ soundsRepository{std::move(soundsRepository)}, frontlight{std::move(frontlight)}
{
auto playSound = [this](const UTF8 &val) {
@@ 29,6 30,15 @@ namespace app::bell_settings
this->provider->onVolumeChange = [this](const auto &val) {
this->audioModel.setVolume(val, AbstractAudioModel::PlaybackType::Alarm, {});
};
+
+ auto setBrightness = [this](const auto &brightness) {
+ this->frontlight->setStatus(true);
+ this->frontlight->setBrightness(brightness);
+ };
+
+ this->provider->onFrontlightEnter = setBrightness;
+ this->provider->onFrontlightChange = setBrightness;
+ this->provider->onFrontlightExit = [this]() { this->frontlight->revertUnsavedChanges(); };
}
auto AlarmSettingsPresenter::saveData() -> void
@@ 54,10 64,12 @@ namespace app::bell_settings
{
provider->clearData();
}
+
void AlarmSettingsPresenter::stopSound()
{
this->audioModel.stopPlayedByThis({});
}
+
void AlarmSettingsPresenter::exitWithSave()
{
saveData();
@@ 67,7 79,7 @@ namespace app::bell_settings
void AlarmSettingsPresenter::exitWithRollback()
{
this->stopSound();
- model->getAlarmVolume().restoreDefault();
+ settingsModel->getAlarmVolume().restoreDefault();
eraseProviderData();
}
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.hpp => products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.hpp +9 -5
@@ 6,6 6,7 @@
#include <apps-common/BasePresenter.hpp>
#include <apps-common/AudioOperations.hpp>
#include <common/models/AbstractAudioModel.hpp>
+#include <common/models/FrontlightModel.hpp>
#include <common/SoundsRepository.hpp>
#include <memory>
@@ 35,6 36,7 @@ namespace app::bell_settings
virtual ~Presenter() noexcept = default;
virtual auto getPagesProvider() const -> std::shared_ptr<gui::ListItemProvider> = 0;
virtual auto loadData() -> void = 0;
+ virtual auto saveData() -> void = 0;
virtual auto eraseProviderData() -> void = 0;
virtual auto exitWithSave() -> void = 0;
virtual auto exitWithRollback() -> void = 0;
@@ 44,24 46,26 @@ namespace app::bell_settings
class AlarmSettingsPresenter : public AlarmSettingsWindowContract::Presenter
{
public:
- AlarmSettingsPresenter(std::shared_ptr<AlarmSettingsListItemProvider> provider,
- std::unique_ptr<AbstractAlarmSettingsModel> model,
+ AlarmSettingsPresenter(std::unique_ptr<AlarmSettingsListItemProvider> &&provider,
+ std::unique_ptr<AbstractAlarmSettingsModel> &&settingsModel,
AbstractAudioModel &audioModel,
- std::unique_ptr<AbstractSoundsRepository> soundsRepository);
+ std::unique_ptr<AbstractSoundsRepository> &&soundsRepository,
+ std::unique_ptr<AbstractFrontlightModel> &&frontlight);
auto getPagesProvider() const -> std::shared_ptr<gui::ListItemProvider> override;
auto loadData() -> void override;
+ auto saveData() -> void;
auto eraseProviderData() -> void override;
auto exitWithSave() -> void override;
auto exitWithRollback() -> void override;
private:
auto stopSound() -> void;
- auto saveData() -> void;
std::shared_ptr<AlarmSettingsListItemProvider> provider;
- std::unique_ptr<AbstractAlarmSettingsModel> model;
+ std::unique_ptr<AbstractAlarmSettingsModel> settingsModel;
AbstractAudioModel &audioModel;
std::unique_ptr<AbstractSoundsRepository> soundsRepository;
+ std::unique_ptr<AbstractFrontlightModel> frontlight;
};
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/PrewakeUpPresenter.cpp => products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/PrewakeUpPresenter.cpp +17 -6
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "PrewakeUpPresenter.hpp"
@@ 6,12 6,13 @@
namespace app::bell_settings
{
- PrewakeUpWindowPresenter::PrewakeUpWindowPresenter(std::shared_ptr<PrewakeUpListItemProvider> provider,
- std::unique_ptr<AbstractPrewakeUpSettingsModel> model,
+ PrewakeUpWindowPresenter::PrewakeUpWindowPresenter(std::unique_ptr<PrewakeUpListItemProvider> &&provider,
+ std::unique_ptr<AbstractPrewakeUpSettingsModel> &&model,
AbstractAudioModel &audioModel,
- std::unique_ptr<AbstractSoundsRepository> soundsRepository)
- : provider(std::move(provider)),
- model(std::move(model)), audioModel{audioModel}, soundsRepository{std::move(soundsRepository)}
+ std::unique_ptr<AbstractSoundsRepository> &&soundsRepository,
+ std::unique_ptr<AbstractFrontlightModel> &&frontlight)
+ : provider{std::move(provider)}, model{std::move(model)}, audioModel{audioModel},
+ soundsRepository{std::move(soundsRepository)}, frontlight{std::move(frontlight)}
{
auto playSound = [this](const UTF8 &val) {
currentSoundPath = val;
@@ 34,11 35,21 @@ namespace app::bell_settings
playSound(currentSoundPath);
}
};
+
+ auto setBrightness = [this](const auto &brightness) {
+ this->frontlight->setStatus(true);
+ this->frontlight->setBrightness(brightness);
+ };
+
+ this->provider->onFrontlightEnter = setBrightness;
+ this->provider->onFrontlightChange = setBrightness;
+ this->provider->onFrontlightExit = [this]() { this->frontlight->revertUnsavedChanges(); };
}
auto PrewakeUpWindowPresenter::saveData() -> void
{
for (const auto &item : provider->getListItems()) {
+
item->getValue();
}
}
M products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/PrewakeUpPresenter.hpp => products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/PrewakeUpPresenter.hpp +7 -4
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 7,6 7,7 @@
#include <apps-common/AudioOperations.hpp>
#include <models/alarm_settings/AbstractPrewakeUpSettingsModel.hpp>
#include <common/models/AbstractAudioModel.hpp>
+#include <common/models/FrontlightModel.hpp>
#include <common/SoundsRepository.hpp>
#include <memory>
@@ 44,10 45,11 @@ namespace app::bell_settings
class PrewakeUpWindowPresenter : public PrewakeUpWindowContract::Presenter
{
public:
- PrewakeUpWindowPresenter(std::shared_ptr<PrewakeUpListItemProvider> provider,
- std::unique_ptr<AbstractPrewakeUpSettingsModel> model,
+ PrewakeUpWindowPresenter(std::unique_ptr<PrewakeUpListItemProvider> &&provider,
+ std::unique_ptr<AbstractPrewakeUpSettingsModel> &&model,
AbstractAudioModel &audioModel,
- std::unique_ptr<AbstractSoundsRepository> soundsRepository);
+ std::unique_ptr<AbstractSoundsRepository> &&soundsRepository,
+ std::unique_ptr<AbstractFrontlightModel> &&frontlight);
auto getPagesProvider() const -> std::shared_ptr<gui::ListItemProvider> override;
auto saveData() -> void override;
@@ 62,6 64,7 @@ namespace app::bell_settings
std::unique_ptr<AbstractPrewakeUpSettingsModel> model;
AbstractAudioModel &audioModel;
std::unique_ptr<AbstractSoundsRepository> soundsRepository;
+ std::unique_ptr<AbstractFrontlightModel> frontlight;
UTF8 currentSoundPath;
};
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/windows/alarm_settings/BellSettingsAlarmSettingsWindow.cpp => products/BellHybrid/apps/application-bell-settings/windows/alarm_settings/BellSettingsAlarmSettingsWindow.cpp +2 -8
@@ 26,7 26,6 @@ namespace gui
{
erase();
buildInterface();
- isSaveNeeded = false;
}
void BellSettingsAlarmSettingsWindow::buildInterface()
@@ 51,7 50,6 @@ namespace gui
return true;
}
if (inputEvent.isShortRelease(KeyCode::KEY_ENTER)) {
- isSaveNeeded = true;
exit();
return true;
}
@@ 64,6 62,7 @@ namespace gui
void BellSettingsAlarmSettingsWindow::exit()
{
+ presenter->saveData();
application->switchWindow(
window::bell_finished::defaultName,
BellFinishedWindowData::Factory::create("circle_success_big", BellSettingsAlarmSettingsMenuWindow::name));
@@ 72,12 71,7 @@ namespace gui
void BellSettingsAlarmSettingsWindow::onClose(CloseReason reason)
{
if (reason != CloseReason::Popup) {
- if (isSaveNeeded) {
- presenter->exitWithSave();
- }
- else {
- presenter->exitWithRollback();
- }
+ presenter->eraseProviderData();
}
}
M products/BellHybrid/apps/application-bell-settings/windows/alarm_settings/BellSettingsAlarmSettingsWindow.hpp => products/BellHybrid/apps/application-bell-settings/windows/alarm_settings/BellSettingsAlarmSettingsWindow.hpp +0 -1
@@ 31,6 31,5 @@ namespace gui
private:
SideListView *sidelistview{};
std::unique_ptr<app::bell_settings::AlarmSettingsWindowContract::Presenter> presenter;
- bool isSaveNeeded{false};
};
} /* namespace gui */
M products/BellHybrid/apps/common/CMakeLists.txt => products/BellHybrid/apps/common/CMakeLists.txt +1 -0
@@ 75,6 75,7 @@ target_sources(application-bell-common
include/common/windows/SessionPausedWindow.hpp
include/common/TimeUtils.hpp
include/common/data/BatteryUtils.hpp
+ include/common/data/FrontlightUtils.hpp
include/common/models/AbstractAlarmModel.hpp
include/common/models/AbstractBedtimeModel.hpp
include/common/models/AbstractSettingsModel.hpp
A products/BellHybrid/apps/common/include/common/data/FrontlightUtils.hpp => products/BellHybrid/apps/common/include/common/data/FrontlightUtils.hpp +36 -0
@@ 0,0 1,36 @@
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#pragma once
+
+#include <cmath>
+#include <cstdint>
+
+namespace frontlight_utils
+{
+ namespace
+ {
+ static constexpr auto minPercent = 0.0f;
+ static constexpr auto maxPercent = 100.0f;
+ static constexpr auto minimumLightOnPercentOffsetValue = 16.0f;
+ static constexpr auto minBrightness = 1U;
+ static constexpr auto maxBrightness = 10U;
+ static constexpr float multiplier = (maxPercent - minimumLightOnPercentOffsetValue) / maxBrightness;
+ } // namespace
+
+ /// 1-10 range
+ using Brightness = std::uint8_t;
+
+ static inline float fixedValToPercentage(Brightness value)
+ {
+ float scaled = minimumLightOnPercentOffsetValue + (value - minBrightness) * multiplier;
+ return std::min(maxPercent, std::max(minPercent, scaled));
+ }
+
+ static inline Brightness percentageToFixedVal(float percent)
+ {
+ auto value = (percent - minimumLightOnPercentOffsetValue) / multiplier;
+ return std::round(value + minBrightness);
+ }
+
+} // namespace frontlight_utils
M products/BellHybrid/apps/common/include/common/models/AbstractAlarmSettingsModel.hpp => products/BellHybrid/apps/common/include/common/models/AbstractAlarmSettingsModel.hpp +14 -5
@@ 1,9 1,10 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include <common/models/AbstractSettingsModel.hpp>
+#include <common/data/FrontlightUtils.hpp>
#include <cstdint>
#include <utf8/UTF8.hpp>
@@ 13,11 14,13 @@ namespace app::bell_settings
class AbstractAlarmSettingsModel
{
public:
- AbstractAlarmSettingsModel(std::unique_ptr<gui::AbstractSettingsModel<UTF8>> alarmTone,
- std::unique_ptr<gui::AbstractSettingsModel<std::uint8_t>> alarmVolume,
- std::unique_ptr<gui::AbstractSettingsModel<bool>> alarmLightOnOff)
+ AbstractAlarmSettingsModel(
+ std::unique_ptr<gui::AbstractSettingsModel<UTF8>> alarmTone,
+ std::unique_ptr<gui::AbstractSettingsModel<std::uint8_t>> alarmVolume,
+ std::unique_ptr<gui::AbstractSettingsModel<bool>> alarmLightOnOff,
+ std::unique_ptr<gui::AbstractSettingsModel<frontlight_utils::Brightness>> alarmFrontlight)
: alarmTone(std::move(alarmTone)), alarmVolume(std::move(alarmVolume)),
- alarmLightOnOff(std::move(alarmLightOnOff))
+ alarmLightOnOff(std::move(alarmLightOnOff)), alarmFrontlight(std::move(alarmFrontlight))
{}
virtual ~AbstractAlarmSettingsModel() = default;
@@ 37,9 40,15 @@ namespace app::bell_settings
return *alarmLightOnOff;
}
+ gui::AbstractSettingsModel<frontlight_utils::Brightness> &getBrightness()
+ {
+ return *alarmFrontlight;
+ }
+
private:
std::unique_ptr<gui::AbstractSettingsModel<UTF8>> alarmTone;
std::unique_ptr<gui::AbstractSettingsModel<std::uint8_t>> alarmVolume;
std::unique_ptr<gui::AbstractSettingsModel<bool>> alarmLightOnOff;
+ std::unique_ptr<gui::AbstractSettingsModel<frontlight_utils::Brightness>> alarmFrontlight;
};
} // namespace app::bell_settings
M products/BellHybrid/apps/common/include/common/models/AlarmSettingsModel.hpp => products/BellHybrid/apps/common/include/common/models/AlarmSettingsModel.hpp +17 -4
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 6,6 6,7 @@
#include "AbstractAlarmSettingsModel.hpp"
#include <common/models/SettingsModel.hpp>
#include <common/models/AudioModel.hpp>
+#include <common/data/FrontlightUtils.hpp>
namespace app::bell_settings
{
@@ 40,14 41,26 @@ namespace app::bell_settings
bool getValue() const override;
};
+ class AlarmFrontlightModel : public gui::SettingsModel<frontlight_utils::Brightness>
+ {
+ public:
+ using SettingsModel::SettingsModel;
+
+ void setValue(frontlight_utils::Brightness value) override;
+ frontlight_utils::Brightness getValue() const override;
+ };
+
class AlarmSettingsModel : public AbstractAlarmSettingsModel
{
public:
AlarmSettingsModel(std::unique_ptr<AlarmToneModel> alarmToneModel,
std::unique_ptr<AlarmVolumeModel> alarmVolumeModel,
- std::unique_ptr<AlarmLightOnOffModel> alarmLightOnOffModel)
- : AbstractAlarmSettingsModel(
- std::move(alarmToneModel), std::move(alarmVolumeModel), std::move(alarmLightOnOffModel))
+ std::unique_ptr<AlarmLightOnOffModel> alarmLightOnOffModel,
+ std::unique_ptr<AlarmFrontlightModel> alarmFrontlightModel)
+ : AbstractAlarmSettingsModel(std::move(alarmToneModel),
+ std::move(alarmVolumeModel),
+ std::move(alarmLightOnOffModel),
+ std::move(alarmFrontlightModel))
{}
};
} // namespace app::bell_settings
M products/BellHybrid/apps/common/include/common/models/FrontlightModel.hpp => products/BellHybrid/apps/common/include/common/models/FrontlightModel.hpp +3 -4
@@ 5,6 5,7 @@
#include <apps-common/AsyncTask.hpp>
#include <common/models/SettingsModel.hpp>
+#include <common/data/FrontlightUtils.hpp>
#include <screen-light-control/ScreenLightControlParameters.hpp>
namespace app
@@ 17,10 18,8 @@ namespace app::bell_settings
class AbstractFrontlightModel
{
public:
- /// 1-10 range
- using Brightness = std::uint8_t;
virtual ~AbstractFrontlightModel() = default;
- virtual void setBrightness(Brightness value) = 0;
+ 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;
@@ 40,7 39,7 @@ namespace app::bell_settings
gui::AbstractSettingsModel<std::uint8_t> &getBrightnessModel() override;
gui::AbstractSettingsModel<UTF8> &getModeModel() override;
- void setBrightness(Brightness value) override;
+ void setBrightness(frontlight_utils::Brightness value) override;
void setMode(screen_light_control::ScreenLightMode mode) override;
void setStatus(bool onOff) override;
void revertUnsavedChanges() override;
M products/BellHybrid/services/db/include/db/SystemSettings.hpp => products/BellHybrid/services/db/include/db/SystemSettings.hpp +2 -0
@@ 21,12 21,14 @@ namespace bell::settings
constexpr inline auto duration = "prewake_up_duration";
constexpr inline auto tone = "prewake_up_tone";
constexpr inline auto lightDuration = "prewake_up_light_duration";
+ constexpr inline auto brightness = "prewake_up_brightness";
} // namespace PrewakeUp
namespace Alarm
{
constexpr inline auto tone = "alarm_tone";
constexpr inline auto lightActive = "alarm_light_active";
constexpr inline auto duration = "alarm_duration";
+ constexpr inline auto brightness = "alarm_brightness";
} // namespace Alarm
namespace Bedtime
{