~aleteoryx/muditaos

ref: 4410f4228911ed13a269ae3c21bdd923ae99f6ef muditaos/module-gui/gui/widgets/TopBar/BatteryWidget.cpp -rw-r--r-- 2.2 KiB
4410f422 — Przemyslaw Brudny [EGD-5774] Fixed text char removal crash 5 years 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
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "BatteryWidget.hpp"

namespace gui
{
    namespace
    {
        constexpr auto batteryLow           = "battery_low_W_M";
        constexpr auto batteryCharging      = "battery_charging_W_M";
        constexpr auto batteryChargingReady = "battery_charging_ready_W_M";
        constexpr auto battery1             = "battery1_W_M";
        constexpr auto battery2             = "battery2_W_M";
        constexpr auto battery3             = "battery3_W_M";
        constexpr auto battery4             = "battery4_W_M";
        constexpr auto battery5             = "battery5_W_M";

        constexpr auto level1Threshold = 5;
        constexpr auto level2Threshold = 27;
        constexpr auto level3Threshold = 50;
        constexpr auto level4Threshold = 73;
        constexpr auto level5Threshold = 95;
    } // namespace

    BatteryWidget::BatteryWidget(Item *parent, uint32_t x, uint32_t y) : Image(parent, x, y, 0, 0)
    {
        set(battery1);
    }

    void BatteryWidget::show(const Store::Battery batteryContext, bool shown)
    {
        if (shown) {
            switch (batteryContext.state) {
            case Store::Battery::State::Discharging:
                showBatteryBars(batteryContext.level);
                break;
            case Store::Battery::State::Charging:
                set(batteryCharging);
                break;
            case Store::Battery::State::PluggedNotCharging:
                set(batteryChargingReady);
                break;
            }
        }
        else {
            setVisible(false);
        }
    }

    void BatteryWidget::showBatteryBars(std::uint32_t percentage)
    {
        if (percentage <= level1Threshold)
            set(batteryLow);
        else if (percentage <= level2Threshold)
            set(battery1);
        else if (percentage <= level3Threshold)
            set(battery2);
        else if (percentage <= level4Threshold)
            set(battery3);
        else if (percentage <= level5Threshold)
            set(battery4);
        else
            set(battery5);
    }

} // namespace gui