// 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