mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-06-07 16:14:47 -04:00
94 lines
2.6 KiB
C++
94 lines
2.6 KiB
C++
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include "ApplicationHandle.hpp"
|
|
|
|
#include <apps-common/ApplicationLauncher.hpp>
|
|
|
|
namespace app::manager
|
|
{
|
|
ApplicationHandle::ApplicationHandle(std::unique_ptr<app::ApplicationLauncher> &&_launcher)
|
|
: launcher{std::move(_launcher)}
|
|
{
|
|
if (!launcher) {
|
|
throw std::invalid_argument{"The application launcher must not be null."};
|
|
}
|
|
}
|
|
|
|
auto ApplicationHandle::valid() const noexcept -> bool
|
|
{
|
|
return launcher && launcher->handle;
|
|
}
|
|
|
|
auto ApplicationHandle::name() const -> ApplicationName
|
|
{
|
|
return launcher->getName();
|
|
}
|
|
|
|
auto ApplicationHandle::state() const noexcept -> State
|
|
{
|
|
return valid() ? launcher->handle->getState() : State::NONE;
|
|
}
|
|
|
|
void ApplicationHandle::setState(State state) noexcept
|
|
{
|
|
if (valid()) {
|
|
launcher->handle->setState(state);
|
|
}
|
|
}
|
|
|
|
auto ApplicationHandle::preventsAutoLocking() const noexcept -> bool
|
|
{
|
|
return launcher->preventsAutoLocking();
|
|
}
|
|
|
|
auto ApplicationHandle::checkBlockClosing() const noexcept -> bool
|
|
{
|
|
return launcher->handle->getState() == ApplicationCommon::State::FINALIZING_CLOSE;
|
|
}
|
|
|
|
auto ApplicationHandle::closeable() const noexcept -> bool
|
|
{
|
|
return launcher->isCloseable() && !checkBlockClosing();
|
|
}
|
|
|
|
auto ApplicationHandle::started() const noexcept -> bool
|
|
{
|
|
const auto appState = state();
|
|
return appState == State::ACTIVE_FORGROUND || appState == State::ACTIVE_BACKGROUND ||
|
|
appState == State::ACTIVATING;
|
|
}
|
|
|
|
auto ApplicationHandle::handles(actions::ActionId action) const noexcept -> bool
|
|
{
|
|
const auto manifest = getManifest();
|
|
return manifest.contains(action);
|
|
}
|
|
|
|
auto ApplicationHandle::actionFlag(actions::ActionId action) const noexcept -> actions::ActionFlag
|
|
{
|
|
const auto manifest = getManifest();
|
|
return manifest.getActionFlag(action);
|
|
}
|
|
|
|
void ApplicationHandle::run(StatusIndicators statusIndicators, sys::Service *caller)
|
|
{
|
|
launcher->run(statusIndicators, caller);
|
|
}
|
|
|
|
void ApplicationHandle::runInBackground(StatusIndicators statusIndicators, sys::Service *caller)
|
|
{
|
|
launcher->runBackground(statusIndicators, caller);
|
|
}
|
|
|
|
void ApplicationHandle::close() noexcept
|
|
{
|
|
launcher->handle = nullptr;
|
|
}
|
|
|
|
auto ApplicationHandle::getManifest() const -> const ApplicationManifest &
|
|
{
|
|
return launcher->getManifest();
|
|
}
|
|
} // namespace app::manager
|