~aleteoryx/muditaos

muditaos/module-services/service-appmgr/Controller.cpp -rw-r--r-- 4.4 KiB
a405cad6Aleteoryx trim readme 6 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md

#include "Controller.hpp"

#include "FinishRequest.hpp"
#include "GetAllNotificationsRequest.hpp"

#include <Service/Service.hpp>
#include <service-appmgr/ServiceApplicationManagerName.hpp>

#include <utility>

namespace app::manager
{
    namespace
    {
        void setOnSwitchBehaviour(actions::ActionParamsPtr &data, OnSwitchBehaviour onSwitchBehaviour) noexcept
        {
            if (data) {
                data->disableAppClose = (onSwitchBehaviour == OnSwitchBehaviour::RunInBackground);
            }
        }
    } // namespace

    auto Controller::applicationInitialised(sys::Service *sender,
                                            StartupStatus status,
                                            StartInBackground startInBackground) -> bool
    {
        auto msg = std::make_shared<app::manager::ApplicationInitialised>(sender->GetName(), status, startInBackground);
        return sender->bus.sendUnicast(msg, service::name::appmgr);
    }

    auto Controller::finish(sys::Service *sender) -> bool
    {
        auto msg = std::make_shared<app::manager::FinishRequest>(sender->GetName());
        return sender->bus.sendUnicast(std::move(msg), service::name::appmgr);
    }

    auto Controller::sendAction(sys::Service *sender,
                                actions::ActionId actionId,
                                actions::ActionParamsPtr &&data,
                                OnSwitchBehaviour onSwitchBehaviour) -> bool
    {
        setOnSwitchBehaviour(data, onSwitchBehaviour);
        auto msg = std::make_shared<app::manager::ActionRequest>(sender->GetName(), actionId, std::move(data));
        return sender->bus.sendUnicast(std::move(msg), service::name::appmgr);
    }

    auto Controller::switchBack(sys::Service *sender, std::unique_ptr<SwitchBackRequest> msg) -> bool
    {
        auto switchMsg = msg ? std::move(msg) : std::make_shared<app::manager::SwitchBackRequest>(sender->GetName());
        return sender->bus.sendUnicast(switchMsg, service::name::appmgr);
    }

    auto Controller::confirmSwitch(sys::Service *sender) -> bool
    {
        auto msg = std::make_shared<app::manager::SwitchConfirmation>(sender->GetName());
        return sender->bus.sendUnicast(msg, service::name::appmgr);
    }

    auto Controller::closeApplication(sys::Service *sender, const ApplicationName &name) -> bool
    {
        auto msg = std::make_shared<app::manager::ApplicationCloseRequest>(sender->GetName(), name);
        return sender->bus.sendUnicast(msg, service::name::appmgr);
    }

    auto Controller::confirmClose(sys::Service *sender) -> bool
    {
        auto msg = std::make_shared<app::manager::CloseConfirmation>(sender->GetName());
        return sender->bus.sendUnicast(msg, service::name::appmgr);
    }

    auto Controller::finalizingClose(sys::Service *sender) -> bool
    {
        auto msg = std::make_shared<app::manager::FinalizingClose>(sender->GetName());
        return sender->bus.sendUnicast(msg, service::name::appmgr);
    }

    auto Controller::changeDisplayLanguage(sys::Service *sender, const Language &language) -> bool
    {
        auto msg = std::make_shared<app::manager::DisplayLanguageChangeRequest>(sender->GetName(), language);
        return sender->bus.sendUnicast(msg, service::name::appmgr);
    }

    auto Controller::changeInputLanguage(sys::Service *sender, const Language &language) -> bool
    {
        auto msg = std::make_shared<app::manager::InputLanguageChangeRequest>(sender->GetName(), language);
        return sender->bus.sendUnicast(msg, service::name::appmgr);
    }

    auto Controller::preventBlockingDevice(sys::Service *sender) -> bool
    {
        auto msg = std::make_shared<app::manager::PreventBlockingRequest>(sender->GetName());
        return sender->bus.sendUnicast(msg, service::name::appmgr);
    }

    auto Controller::changePowerSaveMode(sys::Service *sender) -> bool
    {
        auto msg = std::make_shared<app::manager::PowerSaveModeInitRequest>(sender->GetName());
        return sender->bus.sendUnicast(msg, service::name::appmgr);
    }

    auto Controller::requestNotifications(sys::Service *sender) -> bool
    {
        auto msg = std::make_shared<app::manager::GetAllNotificationsRequest>();
        return sender->bus.sendUnicast(std::move(msg), service::name::appmgr);
    }
} // namespace app::manager