M module-apps/application-meditation/windows/MeditationTimerWindow.cpp => module-apps/application-meditation/windows/MeditationTimerWindow.cpp +14 -1
@@ 8,6 8,7 @@
#include "application-meditation/data/MeditationTimerData.hpp"
#include "Names.hpp"
+#include <Timers/TimerFactory.hpp>
#include <cassert>
#include <i18n/i18n.hpp>
@@ 16,7 17,17 @@
using namespace gui;
-MeditationTimerWindow::MeditationTimerWindow(app::Application *app) : AppWindow{app, name::window::main_window}
+namespace
+{
+ constexpr std::chrono::seconds endScreenTimeoutTime{5};
+} // namespace
+
+MeditationTimerWindow::MeditationTimerWindow(app::Application *app)
+ : AppWindow{app, name::window::main_window},
+ endScreenTimeout{sys::TimerFactory::createSingleShotTimer(
+ app, "MeditationEndScreenTimeout", endScreenTimeoutTime, [this](sys::Timer &) {
+ application->switchWindow(app::window::name::meditation_main_window);
+ })}
{
MeditationTimerWindow::buildInterface();
}
@@ 86,6 97,7 @@ auto MeditationTimerWindow::onInput(const InputEvent &inputEvent) -> bool
{
if (inputEvent.isShortPress()) {
if (finished) {
+ endScreenTimeout.stop();
application->switchWindow(app::window::name::meditation_main_window);
return true;
}
@@ 158,6 170,7 @@ void MeditationTimerWindow::setVisibleMeditationEnd()
meditationInfo->setText(std::move(textParsed));
meditationInfo->setVisible(true);
bottomBar->setVisible(false);
+ endScreenTimeout.start();
}
void MeditationTimerWindow::invalidate() noexcept
M module-apps/application-meditation/windows/MeditationTimerWindow.hpp => module-apps/application-meditation/windows/MeditationTimerWindow.hpp +3 -1
@@ 1,10 1,11 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include "AppWindow.hpp"
+#include <module-sys/Timers/TimerHandle.hpp>
#include <chrono>
namespace gui
@@ 19,6 20,7 @@ namespace gui
bool finished = false;
std::chrono::seconds meditationTime{0};
std::chrono::seconds meditationIntervalPeriod{0};
+ sys::TimerHandle endScreenTimeout;
void setWidgetVisible(bool topBar, bool bottomBar, bool counter);
void setVisibleRunning();