M products/BellHybrid/apps/application-bell-meditation-timer/ApplicationBellMeditationTimer.cpp => products/BellHybrid/apps/application-bell-meditation-timer/ApplicationBellMeditationTimer.cpp +5 -4
@@ 6,10 6,10 @@
#include "windows/MeditationRunningWindow.hpp"
#include "windows/MeditationTimerWindow.hpp"
#include "windows/ReadyGoingWindow.hpp"
-#include "windows/SessionPausedWindow.hpp"
#include <common/models/TimeModel.hpp>
#include <common/windows/BellFinishedWindow.hpp>
+#include <common/windows/SessionPausedWindow.hpp>
namespace app
{
@@ 57,9 57,10 @@ namespace app
app, settings.get(), std::move(timeModel));
return std::make_unique<gui::MeditationRunningWindow>(app, std::move(presenter));
});
- windowsFactory.attach(gui::name::window::sessionPaused, [](ApplicationCommon *app, const std::string &name) {
- return std::make_unique<gui::SessionPausedWindow>(app);
- });
+ windowsFactory.attach(gui::window::session_paused::sessionPaused,
+ [](ApplicationCommon *app, const std::string &name) {
+ return std::make_unique<gui::SessionPausedWindow>(app);
+ });
windowsFactory.attach(gui::window::bell_finished::defaultName,
[](ApplicationCommon *app, const std::string &name) {
return std::make_unique<gui::BellFinishedWindow>(app);
M products/BellHybrid/apps/application-bell-meditation-timer/CMakeLists.txt => products/BellHybrid/apps/application-bell-meditation-timer/CMakeLists.txt +0 -1
@@ 28,7 28,6 @@ target_sources(application-bell-meditation-timer
windows/MeditationRunningWindow.cpp
windows/MeditationTimerWindow.cpp
windows/ReadyGoingWindow.cpp
- windows/SessionPausedWindow.cpp
PUBLIC
include/application-bell-meditation-timer/ApplicationBellMeditationTimer.hpp
)
M products/BellHybrid/apps/application-bell-meditation-timer/include/application-bell-meditation-timer/ApplicationBellMeditationTimer.hpp => products/BellHybrid/apps/application-bell-meditation-timer/include/application-bell-meditation-timer/ApplicationBellMeditationTimer.hpp +0 -1
@@ 12,7 12,6 @@ namespace gui::name::window
inline constexpr auto meditationTimer = "MeditationTimerWindow";
inline constexpr auto readyGoing = "ReadyGoingWindow";
inline constexpr auto sessionEnded = "SessionEndedWindow";
- inline constexpr auto sessionPaused = "SensionPausedWindow";
} // namespace gui::name::window
namespace app
M products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.cpp => products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.cpp +2 -1
@@ 7,6 7,7 @@
#include <common/models/TimeModel.hpp>
#include <common/windows/BellFinishedWindow.hpp>
+#include <common/windows/SessionPausedWindow.hpp>
#include <service-appmgr/Controller.hpp>
#include <service-db/Settings.hpp>
@@ 57,7 58,7 @@ namespace app::meditation
void MeditationProgressPresenter::pause()
{
timer->stop();
- app->switchWindow(gui::name::window::sessionPaused);
+ app->switchWindow(gui::window::session_paused::sessionPaused);
}
void MeditationProgressPresenter::resume()
M products/BellHybrid/apps/application-bell-powernap/ApplicationBellPowerNap.cpp => products/BellHybrid/apps/application-bell-powernap/ApplicationBellPowerNap.cpp +5 -0
@@ 10,6 10,7 @@
#include "windows/PowerNapSessionEndedWindow.hpp"
#include <common/models/TimeModel.hpp>
#include <AlarmSoundPaths.hpp>
+#include <common/windows/SessionPausedWindow.hpp>
namespace app
{
@@ 50,6 51,10 @@ namespace app
app, settings.get(), std::move(soundsRepository), *audioModel, std::move(timeModel));
return std::make_unique<gui::PowerNapProgressWindow>(app, std::move(presenter));
});
+ windowsFactory.attach(gui::window::session_paused::sessionPaused,
+ [](ApplicationCommon *app, const std::string &name) {
+ return std::make_unique<gui::SessionPausedWindow>(app);
+ });
windowsFactory.attach(gui::window::name::powernapSessionEnded,
[](ApplicationCommon *app, const std::string &name) {
auto presenter = std::make_unique<powernap::PowerNapSessionEndPresenter>(app);
M products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.cpp => products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.cpp +16 -0
@@ 11,6 11,7 @@
#include <service-db/Settings.hpp>
#include <Timers/TimerFactory.hpp>
#include <Utils.hpp>
+#include <common/windows/SessionPausedWindow.hpp>
#include <gsl/assert>
@@ 44,9 45,11 @@ namespace app::powernap
{
Expects(timer != nullptr);
const auto value = settings->getValue(powernapDBRecordName);
+ reinterpret_cast<app::Application *>(app)->suspendIdleTimer();
timer->reset(std::chrono::minutes{utils::getNumericValue<int>(value)});
timer->start();
}
+
void PowerNapProgressPresenter::endNap()
{
napFinished = false;
@@ 54,6 57,18 @@ namespace app::powernap
napAlarmTimer.stop();
onNapAlarmFinished();
}
+
+ void PowerNapProgressPresenter::pause()
+ {
+ timer->stop();
+ app->switchWindow(gui::window::session_paused::sessionPaused);
+ }
+
+ void PowerNapProgressPresenter::resume()
+ {
+ timer->start();
+ }
+
void PowerNapProgressPresenter::onNapFinished()
{
const auto filePath = soundsRepository->titleToPath(
@@ 63,6 78,7 @@ namespace app::powernap
napAlarmTimer.start();
napFinished = true;
}
+
void PowerNapProgressPresenter::onNapAlarmFinished()
{
audioModel.stopPlayedByThis({});
M products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.hpp => products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.hpp +4 -0
@@ 43,6 43,8 @@ namespace app::powernap
public:
virtual void activate() = 0;
virtual void endNap() = 0;
+ virtual void pause() = 0;
+ virtual void resume() = 0;
virtual void setTimer(std::unique_ptr<app::TimerWithCallbacks> &&timer) = 0;
virtual void handleUpdateTimeEvent() = 0;
virtual bool isNapFinished() = 0;
@@ 63,6 65,8 @@ namespace app::powernap
void activate() override;
void endNap() override;
+ void pause() override;
+ void resume() override;
void setTimer(std::unique_ptr<app::TimerWithCallbacks> &&_timer) override;
void handleUpdateTimeEvent() override;
bool isNapFinished() override;
M products/BellHybrid/apps/application-bell-powernap/windows/PowerNapProgressWindow.cpp => products/BellHybrid/apps/application-bell-powernap/windows/PowerNapProgressWindow.cpp +12 -1
@@ 68,7 68,7 @@ namespace gui
buildLayout();
configureTimer();
- presenter->activate();
+ // presenter->activate();
}
void PowerNapProgressWindow::buildLayout()
{
@@ 108,6 108,10 @@ namespace gui
presenter->endNap();
return true;
}
+ else if (not presenter->isNapFinished() && key == KeyMap::LightPress) {
+ presenter->pause();
+ return true;
+ }
else if (not presenter->isNapFinished() && key == KeyMap::Back) {
reinterpret_cast<app::Application *>(application)->resumeIdleTimer();
presenter->endNap();
@@ 146,5 150,12 @@ namespace gui
{
presenter->onBeforeShow();
updateTime();
+
+ if (mode == ShowMode::GUI_SHOW_INIT) {
+ presenter->activate();
+ }
+ else {
+ presenter->resume();
+ }
}
} // namespace gui
M products/BellHybrid/apps/common/CMakeLists.txt => products/BellHybrid/apps/common/CMakeLists.txt +2 -0
@@ 21,6 21,7 @@ target_sources(application-bell-common
src/windows/BellFinishedWindow.cpp
src/windows/BellTurnOffWindow.cpp
src/windows/BellWelcomeWindow.cpp
+ src/windows/SessionPausedWindow.cpp
src/BellSideListItemWithCallbacks.cpp
src/TimeUtils.cpp
src/TimeUtils.cpp
@@ 50,6 51,7 @@ target_sources(application-bell-common
include/common/windows/BellFinishedWindow.hpp
include/common/windows/BellTurnOffWindow.hpp
include/common/windows/BellWelcomeWindow.hpp
+ include/common/windows/SessionPausedWindow.hpp
include/common/TimeUtils.hpp
include/common/models/AbstractAlarmModel.hpp
include/common/models/AbstractBedtimeModel.hpp
M products/BellHybrid/apps/common/include/common/data/StyleCommon.hpp => products/BellHybrid/apps/common/include/common/data/StyleCommon.hpp +16 -0
@@ 18,3 18,19 @@ namespace gui::bell_style
inline constexpr auto popup_icon_y_alignment = 22;
} // namespace gui::bell_style
+
+namespace itStyle
+{
+ namespace icon
+ {
+ constexpr inline auto imageLogo = "bell_big_logo";
+ constexpr inline auto imagePause = "big_pause";
+ constexpr inline auto imageTopMargin = 112;
+ constexpr inline auto imageBottomMargin = 30;
+ } // namespace icon
+
+ namespace text
+ {
+ constexpr inline auto font = style::window::font::verybiglight;
+ } // namespace text
+} // namespace itStyle
R products/BellHybrid/apps/application-bell-meditation-timer/windows/SessionPausedWindow.hpp => products/BellHybrid/apps/common/include/common/windows/SessionPausedWindow.hpp +6 -0
@@ 10,6 10,12 @@
namespace gui
{
+
+ namespace window::session_paused
+ {
+ inline constexpr auto sessionPaused = "SessionPausedWindow";
+ } // namespace window::session_paused
+
class SessionPausedWindow : public AppWindow
{
public:
R products/BellHybrid/apps/application-bell-meditation-timer/windows/SessionPausedWindow.cpp => products/BellHybrid/apps/common/src/windows/SessionPausedWindow.cpp +4 -6
@@ 1,14 1,13 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-#include "ApplicationBellMeditationTimer.hpp"
-#include "MeditationStyle.hpp"
-#include "SessionPausedWindow.hpp"
+#include <common/data/StyleCommon.hpp>
+#include "windows/SessionPausedWindow.hpp"
namespace gui
{
SessionPausedWindow::SessionPausedWindow(app::ApplicationCommon *app)
- : AppWindow(app, gui::name::window::sessionPaused)
+ : AppWindow(app, gui::window::session_paused::sessionPaused)
{
buildInterface();
}
@@ 32,12 31,11 @@ namespace gui
navBar->setVisible(false);
if (icon == nullptr) {
- using namespace app::meditationStyle;
icon = new Icon(this, 0, 0, style::window_width, style::window_height, {}, {});
icon->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
icon->image->setMargins({0, itStyle::icon::imageTopMargin, 0, itStyle::icon::imageBottomMargin});
- icon->image->set(app::meditationStyle::itStyle::icon::imagePause, ImageTypeSpecifier::W_G);
+ icon->image->set(itStyle::icon::imagePause, ImageTypeSpecifier::W_G);
icon->text->setFont(itStyle::text::font);
icon->text->setRichText(utils::translate("common_paused"));
}