~aleteoryx/muditaos

fc3b83706b92b08190ddb63dca458fc34c263797 — Bartosz Cichocki 3 years ago 08a7102
[MOS-302] Fix application switching

During the incoming call apps apps instead of going to
background were closed, thus phone lock context
were lost. Now apps are being moved to the
background as they supposed to be
6 files changed, 5 insertions(+), 46 deletions(-)

M module-services/service-appmgr/CMakeLists.txt
M module-services/service-appmgr/include/service-appmgr/Controller.hpp
M module-services/service-appmgr/include/service-appmgr/model/ApplicationManagerCommon.hpp
D module-services/service-appmgr/include/service-appmgr/model/OnActionPolicy.hpp
M module-services/service-appmgr/model/ApplicationManagerCommon.cpp
D module-services/service-appmgr/model/OnActionPolicy.cpp
M module-services/service-appmgr/CMakeLists.txt => module-services/service-appmgr/CMakeLists.txt +0 -2
@@ 29,7 29,6 @@ target_sources(service-appmgr
        model/ApplicationManagerCommon.cpp
        model/ApplicationStack.cpp
        model/ApplicationsRegistry.cpp
        model/OnActionPolicy.cpp
    PUBLIC
        include/service-appmgr/Actions.hpp
        include/service-appmgr/ApplicationManifest.hpp


@@ 67,7 66,6 @@ target_sources(service-appmgr
        include/service-appmgr/model/ApplicationManagerCommon.hpp
        include/service-appmgr/model/ApplicationStack.hpp
        include/service-appmgr/model/ApplicationsRegistry.hpp
        include/service-appmgr/model/OnActionPolicy.hpp
)

target_link_libraries(service-appmgr

M module-services/service-appmgr/include/service-appmgr/Controller.hpp => module-services/service-appmgr/include/service-appmgr/Controller.hpp +2 -2
@@ 1,4 1,4 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once


@@ 40,7 40,7 @@ namespace app::manager
        static auto sendAction(sys::Service *sender,
                               actions::ActionId actionId,
                               actions::ActionParamsPtr &&data     = nullptr,
                               OnSwitchBehaviour onSwitchBehaviour = OnSwitchBehaviour::Close) -> bool;
                               OnSwitchBehaviour onSwitchBehaviour = OnSwitchBehaviour::RunInBackground) -> bool;
        static auto switchBack(sys::Service *sender, std::unique_ptr<SwitchBackRequest> msg = nullptr) -> bool;
        static auto confirmSwitch(sys::Service *sender) -> bool;
        static auto closeApplication(sys::Service *sender, const ApplicationName &name) -> bool;

M module-services/service-appmgr/include/service-appmgr/model/ApplicationManagerCommon.hpp => module-services/service-appmgr/include/service-appmgr/model/ApplicationManagerCommon.hpp +0 -3
@@ 7,7 7,6 @@
#include "ApplicationsRegistry.hpp"
#include "ActionsRegistry.hpp"
#include "ApplicationStack.hpp"
#include "OnActionPolicy.hpp"
#include <service-appmgr/messages/Message.hpp>

#include <apps-common/ApplicationLauncher.hpp>


@@ 151,8 150,6 @@ namespace app::manager
        void onFinalizingClose();
        auto onCloseConfirmed(ApplicationHandle &app) -> bool;

        OnActionPolicy actionPolicy;

        void displayLanguageChanged(std::string value);
        void inputLanguageChanged(std::string value);
    };

D module-services/service-appmgr/include/service-appmgr/model/OnActionPolicy.hpp => module-services/service-appmgr/include/service-appmgr/model/OnActionPolicy.hpp +0 -21
@@ 1,21 0,0 @@
// 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 <service-appmgr/Actions.hpp>

namespace app::manager
{
    enum class Reaction
    {
        None,
        KeepFocusedAppInBackground
    };

    class OnActionPolicy
    {
      public:
        Reaction operator()(actions::Action action) const noexcept;
    };
} // namespace app::manager

M module-services/service-appmgr/model/ApplicationManagerCommon.cpp => module-services/service-appmgr/model/ApplicationManagerCommon.cpp +3 -3
@@ 561,11 561,11 @@ namespace app::manager
        // Inform that target app switch is caused by Action
        targetApp->startupReason = StartupReason::OnAction;

        const auto focusedAppClose = !(actionPolicy(action.actionId) == Reaction::KeepFocusedAppInBackground ||
                                       (actionParams && actionParams->disableAppClose));
        const auto closeFocusedApp = !(actionParams && actionParams->disableAppClose);

        SwitchRequest switchRequest(
            service::name::appmgr, targetApp->name(), targetApp->switchWindow, std::move(targetApp->switchData));
        handleSwitchApplication(&switchRequest, focusedAppClose);
        handleSwitchApplication(&switchRequest, closeFocusedApp);

        return ActionProcessStatus::Skipped;
    }

D module-services/service-appmgr/model/OnActionPolicy.cpp => module-services/service-appmgr/model/OnActionPolicy.cpp +0 -15
@@ 1,15 0,0 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "OnActionPolicy.hpp"

namespace app::manager
{
    Reaction OnActionPolicy::operator()(actions::Action action) const noexcept
    {
        if (action == actions::HandleIncomingCall) {
            return Reaction::KeepFocusedAppInBackground;
        }
        return Reaction::None;
    }
} // namespace app::manager