~aleteoryx/muditaos

muditaos/module-apps/application-onboarding/windows/OnBoardingSimSelectWindow.cpp -rw-r--r-- 5.1 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
110
111
// 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 "OnBoardingSimSelectWindow.hpp"

#include <application-onboarding/ApplicationOnBoarding.hpp>
#include <application-onboarding/style/OnBoardingStyle.hpp>
#include <OptionSetting.hpp>

#include <header/IceAction.hpp>
#include <service-appmgr/Controller.hpp>
#include <apps-common/messages/DialogMetadataMessage.hpp>
#include <EventStore.hpp>

namespace app::onBoarding
{
    OnBoardingSimSelectWindow::OnBoardingSimSelectWindow(app::ApplicationCommon *app, std::string name)
        : BaseSettingsWindow(app, std::move(name))
    {
        buildInterface();
    }

    void OnBoardingSimSelectWindow::buildInterface()
    {
        setTitle(utils::translate("app_onboarding_select_sim"));
        if (Store::GSM::get()->simCardInserted()) {
            header->navigationIndicatorAdd(new gui::header::IceAction(), gui::header::BoxSelection::Left);
        }
        navBar->setText(gui::nav_bar::Side::Center, utils::translate(::style::strings::common::select));
        navBar->setText(gui::nav_bar::Side::Right, utils::translate(::style::strings::common::back));
        navBar->setText(gui::nav_bar::Side::Left, utils::translate(::style::strings::common::skip));

        descriptionText = new gui::Text(this,
                                        style::window::default_left_margin,
                                        style::onboarding::sim_select::description_y,
                                        style::window::default_body_width,
                                        style::onboarding::sim_select::description_h);
        descriptionText->setFont(style::window::font::medium);
        descriptionText->setAlignment(
            gui::Alignment{gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Top});
        descriptionText->setEdges(gui::RectangleEdge::Top);
        descriptionText->setPenWidth(style::window::default_border_rect_no_focus);
        descriptionText->setPadding(gui::Padding(0, style::onboarding::sim_select::description_top_padding, 0, 0));
        descriptionText->setRichText(utils::translate("app_onboarding_select_sim_description"));
    }

    auto OnBoardingSimSelectWindow::buildOptionsList() -> std::list<gui::Option>
    {
        std::list<gui::Option> options;

        options.emplace_back(std::make_unique<gui::option::OptionSettings>(
            "SIM1",
            [=](const gui::Item &item) {
                application->getSimLockSubject().setSim(cellular::api::SimSlot::SIM1);
                application->switchWindow(gui::popup::window::sim_switching_window);
                return true;
            },
            nullptr,
            this,
            gui::option::SettingRightItem::SIM1));

        options.emplace_back(std::make_unique<gui::option::OptionSettings>(
            "SIM2",
            [=](const gui::Item &item) {
                application->getSimLockSubject().setSim(cellular::api::SimSlot::SIM2);
                application->switchWindow(gui::popup::window::sim_switching_window);
                return true;
            },
            nullptr,
            this,
            gui::option::SettingRightItem::SIM2));

        return options;
    }

    bool OnBoardingSimSelectWindow::onInput(const gui::InputEvent &inputEvent)
    {
        if (inputEvent.isShortRelease(gui::KeyCode::KEY_LF)) {
            auto metaData = std::make_unique<gui::DialogMetadataMessage>(gui::DialogMetadata{
                utils::translate("app_onboarding_title"),
                "info_128px_W_G",
                utils::translate("app_onboarding_skip_confirm"),
                "",
                [=]() -> bool {
                    auto metaData = std::make_unique<gui::DialogMetadataMessage>(
                        gui::DialogMetadata{utils::translate("app_onboarding_no_sim_selected_title"),
                                            "sim_128px_W_G",
                                            utils::translate("app_onboarding_no_sim_selected_description"),
                                            "",
                                            [=]() -> bool { return true; }});

                    application->switchWindow(gui::window::name::onBoarding_no_sim_selected,
                                              gui::ShowMode::GUI_SHOW_INIT,
                                              std::move(metaData));
                    return true;
                }});

            application->switchWindow(
                gui::window::name::onBoarding_skip, gui::ShowMode::GUI_SHOW_INIT, std::move(metaData));
            return true;
        }
        else if (inputEvent.isShortRelease(gui::KeyCode::KEY_LEFT) && Store::GSM::get()->simCardInserted()) {
            app::manager::Controller::sendAction(application,
                                                 app::manager::actions::EmergencyDial,
                                                 std::make_unique<gui::SwitchData>(),
                                                 app::manager::OnSwitchBehaviour::RunInBackground);
            return true;
        }
        return AppWindow::onInput(inputEvent);
    }
} // namespace app::onBoarding