~aleteoryx/muditaos

12bbabc93e75a4c0434f847e8ccd2b8ecb01263d — Wojtek Rzepecki 4 years ago 80c5d5b
[EGD-6254] Add meditation end timeout

Added timeout on meditation end screen
to automatically return to main screen
of meditation app.
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();