~aleteoryx/muditaos

muditaos/module-apps/application-desktop/windows/DeadBatteryInfoWindow.cpp -rw-r--r-- 2.7 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
// 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 "DeadBatteryInfoWindow.hpp"
#include "DeadBatteryInfoWindowData.hpp"

#include <i18n/i18n.hpp>
#include <Image.hpp>

namespace
{
    using namespace std::chrono_literals;
    constexpr auto windowTimeout = 5s;
} // namespace

namespace gui
{
    DeadBatteryInfoWindow::DeadBatteryInfoWindow(app::ApplicationCommon *app, const std::string &name)
        : WindowWithTimer(app, name, windowTimeout)
    {
        buildInterface();
        preventsAutoLock = true;
    }

    DeadBatteryInfoWindow::~DeadBatteryInfoWindow()
    {
        destroyInterface();
    }

    status_bar::Configuration DeadBatteryInfoWindow::configureStatusBar(status_bar::Configuration appConfiguration)
    {
        appConfiguration.enable(status_bar::Indicator::Time);
        appConfiguration.disable(status_bar::Indicator::NetworkAccessTechnology);
        appConfiguration.disable(status_bar::Indicator::PhoneMode);
        appConfiguration.disable(status_bar::Indicator::Signal);
        return appConfiguration;
    }

    void DeadBatteryInfoWindow::rebuild()
    {
        destroyInterface();
        buildInterface();
    }

    void DeadBatteryInfoWindow::buildInterface()
    {
        AppWindow::buildInterface();

        navBar->setActive(nav_bar::Side::Left, false);
        navBar->setActive(nav_bar::Side::Center, false);
        navBar->setActive(nav_bar::Side::Right, false);

        icon = new Icon(this,
                        style::window::default_left_margin,
                        style::window::default_vertical_pos,
                        style::window::default_body_width,
                        style::window::default_body_height,
                        "info_128px_W_G",
                        "");
        icon->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
        icon->image->setMargins(Margins(0, icon::image_top_margin, 0, icon::image_bottom_margin));

        setTitle(utils::translate("app_desktop_info"));
    }

    void DeadBatteryInfoWindow::destroyInterface()
    {
        erase();
    }

    void DeadBatteryInfoWindow::onBeforeShow([[maybe_unused]] gui::ShowMode mode, gui::SwitchData *data)
    {
        WindowWithTimer::onBeforeShow(mode, data);
        if (const auto switchData = dynamic_cast<DeadBatteryInfoWindowData *>(data); switchData != nullptr) {
            icon->text->setText(switchData->getMessageText());
        }
    }

    bool DeadBatteryInfoWindow::onInput([[maybe_unused]] const gui::InputEvent &inputEvent)
    {
        return true; // Ignore all inputs
    }
} // namespace gui