M products/BellHybrid/apps/application-bell-bedtime/windows/BellBedtimeWindow.cpp => products/BellHybrid/apps/application-bell-bedtime/windows/BellBedtimeWindow.cpp +7 -2
@@ 69,7 69,12 @@ namespace gui
void BellBedtimeWindow::exit()
{
presenter->saveData();
- application->switchWindow(gui::window::bell_finished::defaultName,
- BellFinishedWindowData::Factory::create("circle_success_big", "", "", true));
+ application->switchWindow(
+ gui::window::bell_finished::defaultName,
+ BellFinishedWindowData::Factory::create("circle_success_big",
+ "",
+ "",
+ BellFinishedWindowData::ExitBehaviour::CloseApplication,
+ std::chrono::seconds::zero()));
}
} /* namespace gui */
M products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.cpp => products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.cpp +15 -2
@@ 83,7 83,16 @@ namespace app::meditation
void MeditationProgressPresenter::abandon()
{
timer->stop();
- app->switchWindow(gui::name::window::main_window);
+ const auto elapsed = std::chrono::duration_cast<std::chrono::minutes>(timer->getElapsed());
+ const auto summaryText = utils::translate("app_meditation_summary") + std::to_string(elapsed.count()) + " " +
+ utils::language::getCorrectMinutesNumeralForm(elapsed.count());
+ app->switchWindow(
+ gui::window::bell_finished::defaultName,
+ gui::BellFinishedWindowData::Factory::create("big_namaste_W_G",
+ "MeditationTimerWindow",
+ summaryText,
+ gui::BellFinishedWindowData::ExitBehaviour::SwitchWindow,
+ endWindowTimeout));
}
void MeditationProgressPresenter::finish()
@@ 94,7 103,11 @@ namespace app::meditation
utils::language::getCorrectMinutesAccusativeForm(elapsed.count());
app->switchWindow(
gui::window::bell_finished::defaultName,
- gui::BellFinishedWindowData::Factory::create("big_namaste_W_G", "", summaryText, true, endWindowTimeout));
+ gui::BellFinishedWindowData::Factory::create("big_namaste_W_G",
+ "",
+ summaryText,
+ gui::BellFinishedWindowData::ExitBehaviour::ReturnToHomescreen,
+ endWindowTimeout));
}
void MeditationProgressPresenter::onProgressFinished()
M products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.cpp => products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.cpp +1 -1
@@ 109,7 109,7 @@ namespace gui
}
if (inputEvent.isShortRelease(gui::KeyCode::KEY_RF)) {
reinterpret_cast<app::Application *>(application)->resumeIdleTimer();
- presenter->finish();
+ presenter->abandon();
return true;
}
M products/BellHybrid/apps/application-bell-onboarding/ApplicationBellOnBoarding.cpp => products/BellHybrid/apps/application-bell-onboarding/ApplicationBellOnBoarding.cpp +7 -2
@@ 150,8 150,13 @@ namespace app
}
auto [icon, text] = getDisplayDataFromState();
- switchWindow(gui::window::name::informationOnBoardingWindow,
- gui::BellFinishedWindowData::Factory::create(icon, windowToReturn, utils::translate(text)));
+ switchWindow(
+ gui::window::name::informationOnBoardingWindow,
+ gui::BellFinishedWindowData::Factory::create(icon,
+ windowToReturn,
+ utils::translate(text),
+ gui::BellFinishedWindowData::ExitBehaviour::SwitchWindow,
+ std::chrono::seconds::zero()));
}
OnBoarding::InformationDisplay ApplicationBellOnBoarding::getDisplayDataFromState()
M products/BellHybrid/apps/common/include/common/data/BellFinishedWindowSwitchData.hpp => products/BellHybrid/apps/common/include/common/data/BellFinishedWindowSwitchData.hpp +21 -11
@@ 13,24 13,35 @@ namespace gui
struct BellFinishedWindowData : public gui::SwitchData
{
public:
+ enum class ExitBehaviour
+ {
+ SwitchWindow,
+ CloseApplication,
+ ReturnToHomescreen,
+ };
+
struct Factory
{
- static std::unique_ptr<BellFinishedWindowData> create(
- const UTF8 &icon,
- const std::string &windowToReturn,
- const UTF8 &text = "",
- bool closeApplication = false,
- const std::chrono::seconds timeout = std::chrono::seconds::zero())
+ static std::unique_ptr<BellFinishedWindowData> create(const UTF8 &icon,
+ const std::string &windowToReturn,
+ const UTF8 &text,
+ ExitBehaviour exitBehaviour,
+ std::chrono::seconds timeout)
{
return std::unique_ptr<BellFinishedWindowData>(
- new BellFinishedWindowData(icon, windowToReturn, text, closeApplication, timeout));
+ new BellFinishedWindowData(icon, windowToReturn, text, exitBehaviour, timeout));
+ }
+
+ static std::unique_ptr<BellFinishedWindowData> create(const UTF8 &icon, const std::string &windowToReturn)
+ {
+ return create(icon, windowToReturn, "", ExitBehaviour::SwitchWindow, std::chrono::seconds::zero());
}
};
UTF8 icon{};
std::string windowToReturn;
UTF8 text{};
- bool closeApplication;
+ ExitBehaviour exitBehaviour;
std::chrono::seconds timeout;
private:
@@ 39,10 50,9 @@ namespace gui
BellFinishedWindowData(const UTF8 &icon,
const std::string &windowToReturn,
const UTF8 &text = "",
- bool closeApplication = false,
+ const ExitBehaviour exitBehaviour = ExitBehaviour::SwitchWindow,
const std::chrono::seconds timeout = std::chrono::seconds::zero())
- : icon{icon}, windowToReturn{windowToReturn}, text{text}, closeApplication{closeApplication}, timeout{
- timeout}
+ : icon{icon}, windowToReturn{windowToReturn}, text{text}, exitBehaviour{exitBehaviour}, timeout{timeout}
{}
};
} // namespace gui
M products/BellHybrid/apps/common/include/common/windows/BellFinishedWindow.hpp => products/BellHybrid/apps/common/include/common/windows/BellFinishedWindow.hpp +2 -2
@@ 28,8 28,8 @@ namespace gui
void onBeforeShow(ShowMode mode, SwitchData *data) override;
Icon *icon{};
- std::string windowToReturn;
- bool closeApplication; // is close application is true windowToReturn variable is ignored
+ std::string windowToReturn{};
+ BellFinishedWindowData::ExitBehaviour exitBehaviour;
};
} // namespace gui
M products/BellHybrid/apps/common/src/windows/BellFinishedWindow.cpp => products/BellHybrid/apps/common/src/windows/BellFinishedWindow.cpp +9 -4
@@ 23,11 23,16 @@ namespace gui
void BellFinishedWindow::exit()
{
- if (closeApplication) {
+ switch (exitBehaviour) {
+ case BellFinishedWindowData::ExitBehaviour::CloseApplication:
app::manager::Controller::switchBack(application);
- }
- else {
+ break;
+ case BellFinishedWindowData::ExitBehaviour::SwitchWindow:
application->switchWindow(windowToReturn);
+ break;
+ case BellFinishedWindowData::ExitBehaviour::ReturnToHomescreen:
+ app::manager::Controller::sendAction(application, app::manager::actions::Home);
+ break;
}
}
@@ 64,7 69,7 @@ namespace gui
icon->text->setRichText(metadata->text);
icon->resizeItems();
windowToReturn = metadata->windowToReturn;
- closeApplication = metadata->closeApplication;
+ exitBehaviour = metadata->exitBehaviour;
if (metadata->timeout != std::chrono::seconds::zero()) {
resetTimer(metadata->timeout);
}