// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include #include #include #include #include #include #include #include #include #include #include #include #include namespace app { void Application::attachPopups(const std::vector &popupsList) { using namespace gui::popup; for (auto popup : popupsList) { switch (popup) { case ID::AlarmActivated: windowsFactory.attach( window::alarm_activated_window, [](app::ApplicationCommon *app, const std::string &name) { auto alarmModel = std::make_shared(app); auto presenter = std::make_unique(alarmModel); return std::make_unique(app, std::move(presenter)); }); break; case ID::AlarmDeactivated: windowsFactory.attach( window::alarm_deactivated_window, [](app::ApplicationCommon *app, const std::string &name) { auto alarmModel = std::make_shared(app); auto presenter = std::make_unique(alarmModel); return std::make_unique(app, std::move(presenter)); }); break; case ID::PowerOff: windowsFactory.attach(window::power_off_window, [](ApplicationCommon *app, const std::string &name) { return std::make_unique(app, window::power_off_window); }); windowsFactory.attach(gui::BellTurnOffWindow::name, [](ApplicationCommon *app, const std::string &name) { return std::make_unique( app, std::make_unique(app)); }); windowsFactory.attach(gui::BellWelcomeWindow::defaultName, [](ApplicationCommon *app, const std::string &name) { return std::make_unique(app); }); break; case ID::Reboot: windowsFactory.attach(window::reboot_window, [](ApplicationCommon *app, const std::string &name) { return std::make_unique(app, std::make_unique(app)); }); break; case ID::BedtimeNotification: windowsFactory.attach(window::bedtime_notification_window, [](app::ApplicationCommon *app, const std::string &name) { return std::make_unique(app); }); break; default: break; } } } bool Application::isPopupPermitted(gui::popup::ID) const { return not((isCurrentWindow(gui::popup::resolveWindowName(gui::popup::ID::Reboot))) || (isCurrentWindow(gui::popup::resolveWindowName(gui::popup::ID::PowerOff))) || (isCurrentWindow(gui::BellTurnOffWindow::name))); } sys::MessagePointer Application::handleKBDKeyEvent(sys::Message *msgl) { onKeyPressed(); return ApplicationCommon::handleKBDKeyEvent(msgl); } sys::MessagePointer Application::handleApplicationSwitch(sys::Message *msgl) { onStart(); return ApplicationCommon::handleApplicationSwitch(msgl); } sys::MessagePointer Application::handleAppClose(sys::Message *msgl) { onStop(); return ApplicationCommon::handleAppClose(msgl); } sys::MessagePointer Application::handleAppFocusLost(sys::Message *msgl) { onStop(); return ApplicationCommon::handleAppFocusLost(msgl); } void Application::onKeyPressed() { restartIdleTimer(); } void Application::onStart() { startIdleTimer(); } void Application::onStop() { stopIdleTimer(); } void Application::startIdleTimer() { bus.sendUnicast(std::make_shared(), service::name::appmgr); } void Application::restartIdleTimer() { bus.sendUnicast(std::make_shared(), service::name::appmgr); } void Application::stopIdleTimer() { bus.sendUnicast(std::make_shared(), service::name::appmgr); } } // namespace app