mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-05-24 16:47:00 -04:00
[BH-1933] Perform a deep refresh in settings
After passing to the next menu from list with labels the deep refresh must be performed to avoid ghosting on the screen.
This commit is contained in:
committed by
Marcin Łyda
parent
40afdb710d
commit
f361257528
@@ -137,7 +137,7 @@ namespace app
|
||||
std::move(songsModel));
|
||||
auto audioErrorModel = std::make_unique<bell_settings::AudioErrorModel>();
|
||||
auto presenter = std::make_unique<bell_settings::SettingsPresenter>(
|
||||
std::move(provider), bedtimeModel, *audioModel, std::move(audioErrorModel));
|
||||
app, std::move(provider), bedtimeModel, *audioModel, std::move(audioErrorModel));
|
||||
return std::make_unique<gui::BellSettingsBedtimeToneWindow>(app, std::move(presenter));
|
||||
});
|
||||
|
||||
@@ -192,7 +192,8 @@ namespace app
|
||||
auto frontlightModel = std::make_unique<bell_settings::FrontlightModel>(app);
|
||||
auto audioErrorModel = std::make_unique<bell_settings::AudioErrorModel>();
|
||||
auto presenter =
|
||||
std::make_unique<bell_settings::PrewakeUpWindowPresenter>(std::move(provider),
|
||||
std::make_unique<bell_settings::PrewakeUpWindowPresenter>(app,
|
||||
std::move(provider),
|
||||
std::move(prewakeUpSettingsModel),
|
||||
*audioModel,
|
||||
std::move(frontlightModel),
|
||||
@@ -230,7 +231,7 @@ namespace app
|
||||
auto audioErrorModel = std::make_unique<bell_settings::AudioErrorModel>();
|
||||
|
||||
auto presenter = std::make_unique<bell_settings::SnoozePresenter>(
|
||||
std::move(provider), std::move(snoozeSettingsModel), *audioModel, std::move(audioErrorModel));
|
||||
app, std::move(provider), std::move(snoozeSettingsModel), *audioModel, std::move(audioErrorModel));
|
||||
return std::make_unique<gui::BellSettingsAlarmSettingsSnoozeWindow>(app, std::move(presenter));
|
||||
});
|
||||
windowsFactory.attach(
|
||||
@@ -263,7 +264,8 @@ namespace app
|
||||
auto provider = std::make_unique<bell_settings::AlarmSettingsListItemProvider>(*alarmSettingsModel,
|
||||
std::move(songsModel));
|
||||
auto audioErrorModel = std::make_unique<bell_settings::AudioErrorModel>();
|
||||
auto presenter = std::make_unique<bell_settings::AlarmSettingsPresenter>(std::move(provider),
|
||||
auto presenter = std::make_unique<bell_settings::AlarmSettingsPresenter>(app,
|
||||
std::move(provider),
|
||||
std::move(alarmSettingsModel),
|
||||
*audioModel,
|
||||
std::move(frontlightModel),
|
||||
|
||||
@@ -5,12 +5,13 @@
|
||||
|
||||
namespace app::bell_settings
|
||||
{
|
||||
SettingsPresenter::SettingsPresenter(std::unique_ptr<BedtimeSettingsListItemProvider> &&provider,
|
||||
SettingsPresenter::SettingsPresenter(ApplicationCommon *app,
|
||||
std::unique_ptr<BedtimeSettingsListItemProvider> &&provider,
|
||||
std::shared_ptr<AbstractBedtimeModel> model,
|
||||
AbstractAudioModel &audioModel,
|
||||
std::unique_ptr<AudioErrorModel> &&audioErrorModel)
|
||||
: provider{std::move(provider)}, model{std::move(model)}, audioModel{audioModel}, audioErrorModel{std::move(
|
||||
audioErrorModel)}
|
||||
: app{app}, provider{std::move(provider)}, model{std::move(model)}, audioModel{audioModel},
|
||||
audioErrorModel{std::move(audioErrorModel)}
|
||||
{
|
||||
auto playSound = [this](const UTF8 &val) {
|
||||
auto onStartCallback = [this, val](audio::RetCode retCode) {
|
||||
@@ -38,7 +39,10 @@ namespace app::bell_settings
|
||||
this->provider->onToneChange = playSound;
|
||||
this->provider->onToneProceed = [this](const auto &path) { return validatePath(path); };
|
||||
|
||||
this->provider->onVolumeEnter = playSound;
|
||||
this->provider->onVolumeEnter = [this, playSound](const auto &val) {
|
||||
getView()->deepRefresh();
|
||||
playSound(val);
|
||||
};
|
||||
this->provider->onVolumeExit = [this](const auto &) { this->stopSound(); };
|
||||
this->provider->onVolumeChange = [this, playSound](const auto &val) {
|
||||
this->audioModel.setVolume(
|
||||
|
||||
@@ -26,6 +26,7 @@ namespace app::bell_settings
|
||||
public:
|
||||
virtual ~View() noexcept = default;
|
||||
virtual auto exit() -> void = 0;
|
||||
virtual auto deepRefresh() -> void = 0;
|
||||
virtual auto handleError() -> void = 0;
|
||||
virtual auto handleDeletedFile() -> void = 0;
|
||||
};
|
||||
@@ -45,7 +46,8 @@ namespace app::bell_settings
|
||||
class SettingsPresenter : public BedtimeSettingsWindowContract::Presenter
|
||||
{
|
||||
public:
|
||||
SettingsPresenter(std::unique_ptr<BedtimeSettingsListItemProvider> &&provider,
|
||||
SettingsPresenter(ApplicationCommon *app,
|
||||
std::unique_ptr<BedtimeSettingsListItemProvider> &&provider,
|
||||
std::shared_ptr<AbstractBedtimeModel> model,
|
||||
AbstractAudioModel &audioModel,
|
||||
std::unique_ptr<AudioErrorModel> &&audioErrorModel);
|
||||
@@ -62,6 +64,7 @@ namespace app::bell_settings
|
||||
auto showAudioError(gui::AudioErrorType errorType) const -> void;
|
||||
auto validatePath(const UTF8 &path) const -> bool;
|
||||
|
||||
ApplicationCommon *app;
|
||||
std::shared_ptr<BedtimeSettingsListItemProvider> provider;
|
||||
std::shared_ptr<AbstractBedtimeModel> model;
|
||||
AbstractAudioModel &audioModel;
|
||||
|
||||
@@ -6,12 +6,13 @@
|
||||
|
||||
namespace app::bell_settings
|
||||
{
|
||||
AlarmSettingsPresenter::AlarmSettingsPresenter(std::unique_ptr<AlarmSettingsListItemProvider> &&provider,
|
||||
AlarmSettingsPresenter::AlarmSettingsPresenter(ApplicationCommon *app,
|
||||
std::unique_ptr<AlarmSettingsListItemProvider> &&provider,
|
||||
std::unique_ptr<AbstractAlarmSettingsModel> &&settingsModel,
|
||||
AbstractAudioModel &audioModel,
|
||||
std::unique_ptr<AbstractFrontlightModel> &&frontlight,
|
||||
std::unique_ptr<AudioErrorModel> &&audioErrorModel)
|
||||
: provider{std::move(provider)}, settingsModel{std::move(settingsModel)}, audioModel{audioModel},
|
||||
: app{app}, provider{std::move(provider)}, settingsModel{std::move(settingsModel)}, audioModel{audioModel},
|
||||
frontlight{std::move(frontlight)}, audioErrorModel{std::move(audioErrorModel)}
|
||||
{
|
||||
|
||||
@@ -37,12 +38,15 @@ namespace app::bell_settings
|
||||
|
||||
this->provider->onExit = [this]() { getView()->exit(); };
|
||||
|
||||
this->provider->onToneEnter = playSound;
|
||||
this->provider->onToneExit = [this](const auto &) { stopSound(); };
|
||||
this->provider->onToneChange = playSound;
|
||||
this->provider->onToneEnter = playSound;
|
||||
this->provider->onToneExit = [this](const auto &) { stopSound(); };
|
||||
this->provider->onToneChange = playSound;
|
||||
this->provider->onToneProceed = [this](const auto &path) { return validatePath(path); };
|
||||
|
||||
this->provider->onVolumeEnter = playSound;
|
||||
this->provider->onVolumeEnter = [this, playSound](const auto &val) {
|
||||
getView()->deepRefresh();
|
||||
playSound(val);
|
||||
};
|
||||
this->provider->onVolumeExit = [this](const auto &) { stopSound(); };
|
||||
this->provider->onVolumeChange = [this, playSound](const auto &val) {
|
||||
this->audioModel.setVolume(
|
||||
|
||||
@@ -28,9 +28,10 @@ namespace app::bell_settings
|
||||
{
|
||||
public:
|
||||
virtual ~View() noexcept = default;
|
||||
virtual void exit() = 0;
|
||||
virtual void handleError() = 0;
|
||||
virtual void handleDeletedFile() = 0;
|
||||
virtual auto exit() -> void = 0;
|
||||
virtual auto deepRefresh() -> void = 0;
|
||||
virtual auto handleError() -> void = 0;
|
||||
virtual auto handleDeletedFile() -> void = 0;
|
||||
};
|
||||
|
||||
class Presenter : public BasePresenter<View>
|
||||
@@ -49,7 +50,8 @@ namespace app::bell_settings
|
||||
class AlarmSettingsPresenter : public AlarmSettingsWindowContract::Presenter
|
||||
{
|
||||
public:
|
||||
AlarmSettingsPresenter(std::unique_ptr<AlarmSettingsListItemProvider> &&provider,
|
||||
AlarmSettingsPresenter(ApplicationCommon *app,
|
||||
std::unique_ptr<AlarmSettingsListItemProvider> &&provider,
|
||||
std::unique_ptr<AbstractAlarmSettingsModel> &&settingsModel,
|
||||
AbstractAudioModel &audioModel,
|
||||
std::unique_ptr<AbstractFrontlightModel> &&frontlight,
|
||||
@@ -68,6 +70,7 @@ namespace app::bell_settings
|
||||
auto showAudioError(gui::AudioErrorType errorType) const -> void;
|
||||
auto validatePath(const UTF8 &path) const -> bool;
|
||||
|
||||
ApplicationCommon *app;
|
||||
std::shared_ptr<AlarmSettingsListItemProvider> provider;
|
||||
std::unique_ptr<AbstractAlarmSettingsModel> settingsModel;
|
||||
AbstractAudioModel &audioModel;
|
||||
|
||||
@@ -6,12 +6,13 @@
|
||||
|
||||
namespace app::bell_settings
|
||||
{
|
||||
PrewakeUpWindowPresenter::PrewakeUpWindowPresenter(std::unique_ptr<PrewakeUpListItemProvider> &&provider,
|
||||
PrewakeUpWindowPresenter::PrewakeUpWindowPresenter(ApplicationCommon *app,
|
||||
std::unique_ptr<PrewakeUpListItemProvider> &&provider,
|
||||
std::unique_ptr<AbstractPrewakeUpSettingsModel> &&model,
|
||||
AbstractAudioModel &audioModel,
|
||||
std::unique_ptr<AbstractFrontlightModel> &&frontlight,
|
||||
std::unique_ptr<AudioErrorModel> &&audioErrorModel)
|
||||
: provider{std::move(provider)}, model{std::move(model)}, audioModel{audioModel},
|
||||
: app{app}, provider{std::move(provider)}, model{std::move(model)}, audioModel{audioModel},
|
||||
frontlight{std::move(frontlight)}, audioErrorModel{std::move(audioErrorModel)}
|
||||
{
|
||||
auto playSound = [this](const UTF8 &val) {
|
||||
@@ -41,7 +42,10 @@ namespace app::bell_settings
|
||||
this->provider->onToneChange = playSound;
|
||||
this->provider->onToneProceed = [this](const auto &path) { return validatePath(path); };
|
||||
|
||||
this->provider->onVolumeEnter = playSound;
|
||||
this->provider->onVolumeEnter = [this, playSound](const auto &val) {
|
||||
getView()->deepRefresh();
|
||||
playSound(val);
|
||||
};
|
||||
this->provider->onVolumeExit = [this](const auto &) { stopSound(); };
|
||||
this->provider->onVolumeChange = [this, playSound](const auto &val) {
|
||||
this->audioModel.setVolume(
|
||||
|
||||
@@ -28,6 +28,7 @@ namespace app::bell_settings
|
||||
public:
|
||||
virtual ~View() noexcept = default;
|
||||
virtual auto exit() -> void = 0;
|
||||
virtual auto deepRefresh() -> void = 0;
|
||||
virtual auto handleError() -> void = 0;
|
||||
virtual auto handleDeletedFile() -> void = 0;
|
||||
};
|
||||
@@ -47,7 +48,8 @@ namespace app::bell_settings
|
||||
class PrewakeUpWindowPresenter : public PrewakeUpWindowContract::Presenter
|
||||
{
|
||||
public:
|
||||
PrewakeUpWindowPresenter(std::unique_ptr<PrewakeUpListItemProvider> &&provider,
|
||||
PrewakeUpWindowPresenter(ApplicationCommon *app,
|
||||
std::unique_ptr<PrewakeUpListItemProvider> &&provider,
|
||||
std::unique_ptr<AbstractPrewakeUpSettingsModel> &&model,
|
||||
AbstractAudioModel &audioModel,
|
||||
std::unique_ptr<AbstractFrontlightModel> &&frontlight,
|
||||
@@ -65,6 +67,7 @@ namespace app::bell_settings
|
||||
auto showAudioError(gui::AudioErrorType errorType) const -> void;
|
||||
auto validatePath(const UTF8 &path) const -> bool;
|
||||
|
||||
ApplicationCommon *app;
|
||||
std::shared_ptr<PrewakeUpListItemProvider> provider;
|
||||
std::unique_ptr<AbstractPrewakeUpSettingsModel> model;
|
||||
AbstractAudioModel &audioModel;
|
||||
|
||||
@@ -6,12 +6,13 @@
|
||||
|
||||
namespace app::bell_settings
|
||||
{
|
||||
SnoozePresenter::SnoozePresenter(std::unique_ptr<SnoozeListItemProvider> &&provider,
|
||||
SnoozePresenter::SnoozePresenter(ApplicationCommon *app,
|
||||
std::unique_ptr<SnoozeListItemProvider> &&provider,
|
||||
std::unique_ptr<AbstractSnoozeSettingsModel> &&snoozeSettingsModel,
|
||||
AbstractAudioModel &audioModel,
|
||||
std::unique_ptr<AudioErrorModel> &&audioErrorModel)
|
||||
: provider{std::move(provider)}, snoozeSettingsModel{std::move(snoozeSettingsModel)}, audioModel{audioModel},
|
||||
audioErrorModel{std::move(audioErrorModel)}
|
||||
: app{app}, provider{std::move(provider)}, snoozeSettingsModel{std::move(snoozeSettingsModel)},
|
||||
audioModel{audioModel}, audioErrorModel{std::move(audioErrorModel)}
|
||||
{
|
||||
auto playSound = [this](const UTF8 &val) {
|
||||
auto onStartCallback = [this, val](audio::RetCode retCode) {
|
||||
@@ -40,7 +41,10 @@ namespace app::bell_settings
|
||||
this->provider->onToneChange = playSound;
|
||||
this->provider->onToneProceed = [this](const auto &path) { return validatePath(path); };
|
||||
|
||||
this->provider->onVolumeEnter = playSound;
|
||||
this->provider->onVolumeEnter = [this, playSound](const auto &val) {
|
||||
getView()->deepRefresh();
|
||||
playSound(val);
|
||||
};
|
||||
this->provider->onVolumeExit = [this](const auto &) { stopSound(); };
|
||||
this->provider->onVolumeChange = [this, playSound](const auto &val) {
|
||||
this->audioModel.setVolume(
|
||||
|
||||
@@ -24,6 +24,7 @@ namespace app::bell_settings
|
||||
public:
|
||||
virtual ~View() noexcept = default;
|
||||
virtual auto exit() -> void = 0;
|
||||
virtual auto deepRefresh() -> void = 0;
|
||||
virtual auto handleError() -> void = 0;
|
||||
virtual auto handleDeletedFile() -> void = 0;
|
||||
};
|
||||
@@ -42,7 +43,8 @@ namespace app::bell_settings
|
||||
class SnoozePresenter : public AbstractSnoozePresenter
|
||||
{
|
||||
public:
|
||||
SnoozePresenter(std::unique_ptr<SnoozeListItemProvider> &&provider,
|
||||
SnoozePresenter(ApplicationCommon *app,
|
||||
std::unique_ptr<SnoozeListItemProvider> &&provider,
|
||||
std::unique_ptr<AbstractSnoozeSettingsModel> &&snoozeSettingsModel,
|
||||
AbstractAudioModel &audioModel,
|
||||
std::unique_ptr<AudioErrorModel> &&audioErrorModel);
|
||||
@@ -58,6 +60,7 @@ namespace app::bell_settings
|
||||
auto showAudioError(gui::AudioErrorType errorType) const -> void;
|
||||
auto validatePath(const UTF8 &path) const -> bool;
|
||||
|
||||
ApplicationCommon *app;
|
||||
std::shared_ptr<SnoozeListItemProvider> provider;
|
||||
std::unique_ptr<AbstractSnoozeSettingsModel> snoozeSettingsModel;
|
||||
AbstractAudioModel &audioModel;
|
||||
|
||||
@@ -72,6 +72,11 @@ namespace gui
|
||||
BellFinishedWindowData::Factory::create("circle_success_big", gui::name::window::main_window));
|
||||
}
|
||||
|
||||
void BellSettingsBedtimeToneWindow::deepRefresh()
|
||||
{
|
||||
getApplication()->render(gui::RefreshModes::GUI_REFRESH_DEEP);
|
||||
}
|
||||
|
||||
void BellSettingsBedtimeToneWindow::onClose(CloseReason reason)
|
||||
{
|
||||
if (reason != CloseReason::Popup) {
|
||||
|
||||
@@ -25,6 +25,7 @@ namespace gui
|
||||
bool onInput(const InputEvent &inputEvent) override;
|
||||
void rebuild() override;
|
||||
void exit() override;
|
||||
void deepRefresh() override;
|
||||
void handleError() override;
|
||||
void handleDeletedFile() override;
|
||||
|
||||
|
||||
@@ -77,6 +77,11 @@ namespace gui
|
||||
BellFinishedWindowData::Factory::create("circle_success_big", BellSettingsAlarmSettingsMenuWindow::name));
|
||||
}
|
||||
|
||||
void BellSettingsAlarmSettingsSnoozeWindow::deepRefresh()
|
||||
{
|
||||
getApplication()->render(gui::RefreshModes::GUI_REFRESH_DEEP);
|
||||
}
|
||||
|
||||
void BellSettingsAlarmSettingsSnoozeWindow::onClose(Window::CloseReason reason)
|
||||
{
|
||||
if (reason != CloseReason::Popup) {
|
||||
|
||||
@@ -25,6 +25,7 @@ namespace gui
|
||||
void onClose(CloseReason reason) override;
|
||||
void rebuild() override;
|
||||
void exit() override;
|
||||
void deepRefresh() override;
|
||||
void handleError() override;
|
||||
void handleDeletedFile() override;
|
||||
|
||||
|
||||
@@ -70,6 +70,11 @@ namespace gui
|
||||
BellFinishedWindowData::Factory::create("circle_success_big", BellSettingsAlarmSettingsMenuWindow::name));
|
||||
}
|
||||
|
||||
void BellSettingsAlarmSettingsWindow::deepRefresh()
|
||||
{
|
||||
getApplication()->render(gui::RefreshModes::GUI_REFRESH_DEEP);
|
||||
}
|
||||
|
||||
void BellSettingsAlarmSettingsWindow::onClose(CloseReason reason)
|
||||
{
|
||||
if (reason != CloseReason::Popup) {
|
||||
|
||||
@@ -27,6 +27,7 @@ namespace gui
|
||||
bool onInput(const InputEvent &inputEvent) override;
|
||||
void rebuild() override;
|
||||
void exit() override;
|
||||
void deepRefresh() override;
|
||||
void handleError() override;
|
||||
void handleDeletedFile() override;
|
||||
|
||||
|
||||
@@ -74,6 +74,11 @@ namespace gui
|
||||
BellFinishedWindowData::Factory::create("circle_success_big", BellSettingsAlarmSettingsMenuWindow::name));
|
||||
}
|
||||
|
||||
void BellSettingsPrewakeUpWindow::deepRefresh()
|
||||
{
|
||||
getApplication()->render(gui::RefreshModes::GUI_REFRESH_DEEP);
|
||||
}
|
||||
|
||||
void BellSettingsPrewakeUpWindow::onClose(CloseReason reason)
|
||||
{
|
||||
if (reason != CloseReason::Popup) {
|
||||
|
||||
@@ -26,6 +26,7 @@ namespace gui
|
||||
bool onInput(const InputEvent &inputEvent) override;
|
||||
void rebuild() override;
|
||||
void exit() override;
|
||||
void deepRefresh() override;
|
||||
void handleError() override;
|
||||
void handleDeletedFile() override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user