M => +4 -4
@@ 25,13 25,13 @@ namespace gui
};
}
void WindowWithTimer::resetTimer()
void WindowWithTimer::resetTimer(const std::chrono::seconds newTimeout)
{
timeout = newTimeout;
if (!popupTimer.isValid()) {
popupTimer = app::GuiTimerFactory::createSingleShotTimer(application, this, popup::timerName, timeout);
popupTimer = app::GuiTimerFactory::createSingleShotTimer(application, this, popup::timerName, newTimeout);
}
popupTimer.stop();
popupTimer.start();
popupTimer.restart(newTimeout);
}
void WindowWithTimer::detachTimerIfExists()
M => +2 -2
@@ 13,7 13,7 @@ namespace gui
{
private:
sys::TimerHandle popupTimer;
const std::chrono::milliseconds timeout;
std::chrono::milliseconds timeout;
public:
explicit WindowWithTimer(app::ApplicationCommon *app,
@@ 27,6 27,6 @@ namespace gui
protected:
void detachTimerIfExists();
void resetTimer();
void resetTimer(const std::chrono::seconds newTimeout = defautTimeout);
};
} // namespace gui
M products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.cpp => products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.cpp +3 -2
@@ 76,8 76,9 @@ namespace app::meditation
void MeditationProgressPresenter::finish()
{
timer->stop();
- app->switchWindow(gui::window::bell_finished::defaultName,
- gui::BellFinishedWindowData::Factory::create("big_namaste_W_G", "", "", true));
+ app->switchWindow(
+ gui::window::bell_finished::defaultName,
+ gui::BellFinishedWindowData::Factory::create("big_namaste_W_G", "", "", true, endWindowTimeout));
}
void MeditationProgressPresenter::onProgressFinished()
M products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.hpp => products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.hpp +2 -0
@@ 64,6 64,8 @@ namespace app::meditation
std::chrono::minutes duration;
std::chrono::minutes interval;
+ static constexpr auto endWindowTimeout = std::chrono::seconds{5};
+
void onProgressFinished();
void onIntervalReached();
M products/BellHybrid/apps/common/include/common/data/BellFinishedWindowSwitchData.hpp => products/BellHybrid/apps/common/include/common/data/BellFinishedWindowSwitchData.hpp +15 -8
@@ 6,6 6,8 @@
#include <SwitchData.hpp>
#include <utf8/UTF8.hpp>
+#include <chrono>
+
namespace gui
{
struct BellFinishedWindowData : public gui::SwitchData
@@ 13,13 15,15 @@ namespace gui
public:
struct Factory
{
- static std::unique_ptr<BellFinishedWindowData> create(const UTF8 &icon,
- const std::string &windowToReturn,
- const UTF8 &text = "",
- bool closeApplication = false)
+ 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())
{
return std::unique_ptr<BellFinishedWindowData>(
- new BellFinishedWindowData(icon, windowToReturn, text, closeApplication));
+ new BellFinishedWindowData(icon, windowToReturn, text, closeApplication, timeout));
}
};
@@ 27,15 31,18 @@ namespace gui
std::string windowToReturn;
UTF8 text{};
bool closeApplication;
+ std::chrono::seconds timeout;
private:
BellFinishedWindowData() = default;
BellFinishedWindowData(const UTF8 &icon,
const std::string &windowToReturn,
- const UTF8 &text = "",
- bool closeApplication = false)
- : icon{icon}, windowToReturn{windowToReturn}, text{text}, closeApplication{closeApplication}
+ const UTF8 &text = "",
+ bool closeApplication = false,
+ const std::chrono::seconds timeout = std::chrono::seconds::zero())
+ : icon{icon}, windowToReturn{windowToReturn}, text{text}, closeApplication{closeApplication}, timeout{
+ timeout}
{}
};
} // namespace gui
M products/BellHybrid/apps/common/src/windows/BellFinishedWindow.cpp => products/BellHybrid/apps/common/src/windows/BellFinishedWindow.cpp +3 -0
@@ 63,6 63,9 @@ namespace gui
icon->resizeItems();
windowToReturn = metadata->windowToReturn;
closeApplication = metadata->closeApplication;
+ if (metadata->timeout != std::chrono::seconds::zero()) {
+ resetTimer(metadata->timeout);
+ }
}
}