M module-apps/Application.cpp => module-apps/Application.cpp +5 -9
@@ 126,7 126,7 @@ namespace app
if (state == State::ACTIVE_FORGROUND) {
auto window = getCurrentWindow();
if (Store::Battery::get().state == Store::Battery::State::Charging) {
- window->batteryCharging(true);
+ window->batteryChargingChange(true);
}
else {
window->updateBatteryLevel(Store::Battery::get().level);
@@ 298,7 298,7 @@ namespace app
sys::MessagePointer Application::handleBatteryLevel(sys::Message *msgl)
{
auto msg = static_cast<sevm::BatteryLevelMessage *>(msgl);
- LOG_INFO("Application battery level: %d", msg->levelPercents);
+ LOG_INFO("Battery level: %d", msg->levelPercents);
if (getCurrentWindow()->updateBatteryLevel(msg->levelPercents)) {
refreshWindow(gui::RefreshModes::GUI_REFRESH_FAST);
@@ 310,16 310,12 @@ namespace app
{
auto *msg = static_cast<sevm::BatteryPlugMessage *>(msgl);
if (msg->plugged == true) {
- LOG_INFO("Application charger connected");
- getCurrentWindow()->batteryCharging(true);
- refreshWindow(gui::RefreshModes::GUI_REFRESH_FAST);
+ LOG_INFO("Charger connected");
}
else {
- LOG_INFO("Application charger disconnected");
- getCurrentWindow()->batteryCharging(false);
- refreshWindow(gui::RefreshModes::GUI_REFRESH_FAST);
+ LOG_INFO("Charger disconnected");
}
-
+ getCurrentWindow()->batteryChargingChange(msg->plugged);
refreshWindow(gui::RefreshModes::GUI_REFRESH_FAST);
return msgHandled();
}
M module-apps/windows/AppWindow.cpp => module-apps/windows/AppWindow.cpp +3 -3
@@ 55,9 55,9 @@ namespace gui
topBar->setActive(TopBar::Elements::SIGNAL, false);
}
- bool AppWindow::batteryCharging(bool charging)
+ bool AppWindow::batteryChargingChange(bool charging)
{
- topBar->setBatteryCharging(charging);
+ topBar->setBatteryChargingChange(charging);
return true;
}
@@ 73,7 73,7 @@ namespace gui
// get old value of battery level, calcualte new level and comapre both
// if they are different make a change and return true, otherwise return false;
if (topBar != nullptr) {
- return topBar->setBatteryLevel(percentage);
+ return topBar->setBatteryBars(percentage);
}
return false;
}
M module-apps/windows/AppWindow.hpp => module-apps/windows/AppWindow.hpp +1 -1
@@ 60,7 60,7 @@ namespace gui
};
virtual bool onDatabaseMessage(sys::Message *msg);
- bool batteryCharging(bool charging);
+ bool batteryChargingChange(bool charging);
bool setSIM();
// updates battery level in the window
bool updateBatteryLevel(uint32_t percentage);
M module-gui/gui/widgets/TopBar.cpp => module-gui/gui/widgets/TopBar.cpp +50 -36
@@ 43,16 43,16 @@ namespace gui
void TopBar::batteryShowBars(uint32_t val)
{
- if (val > battery.size()) {
+ if (val > batteryBars.size()) {
LOG_ERROR("Trying to set battery level out of scope");
- val = battery.size();
+ val = batteryBars.size();
}
- for (unsigned int i = 0; i < battery.size(); ++i) {
+ for (unsigned int i = 0; i < batteryBars.size(); ++i) {
if (elements.battery) {
- battery[i]->setVisible(val >= i);
+ batteryBars[i]->setVisible(i == val);
}
else {
- battery[i]->setVisible(false);
+ batteryBars[i]->setVisible(false);
}
}
}
@@ 69,7 69,7 @@ namespace gui
updateSignalStrength();
// icons for battery
- battery = {
+ batteryBars = {
new gui::Image(this, batteryOffset, 15, 0, 0, "battery_low_W_M"),
new gui::Image(this, batteryOffset, 15, 0, 0, "battery1_W_M"),
new gui::Image(this, batteryOffset, 15, 0, 0, "battery2_W_M"),
@@ 79,12 79,13 @@ namespace gui
};
batteryShowBars(0);
- charging = new Label(this, batteryOffset, 15, 30, this->drawArea.h);
- charging->setFilled(false);
- charging->setBorderColor(gui::ColorNoColor);
- charging->setFont(style::header::font::title);
- charging->setText("Z");
- charging->setVisible(false);
+ batteryChargings[Store::Battery::State::Charging] =
+ new gui::Image(this, batteryOffset, 15, 0, 0, "battery_charging_W_M");
+ batteryChargings[Store::Battery::State::PluggedNotCharging] =
+ new gui::Image(this, batteryOffset, 15, 0, 0, "battery_charging_ready_W_M");
+ for (auto &el : batteryChargings) {
+ el.second->setVisible(false);
+ }
const auto design_sim_offset = 376; // this offset is not final, but it is pixel Purefect
sim = new SIM(this, design_sim_offset, 12);
@@ 123,15 124,17 @@ namespace gui
case Elements::BATTERY: {
elements.battery = active;
if (Store::Battery::get().state == Store::Battery::State::Discharging) {
- setBatteryLevel(active ? Store::Battery::get().level : 0);
+ setBatteryBars(active ? Store::Battery::get().level : 0);
}
else {
+ // plugged
if (active) {
- setBatteryCharging(true);
+ setBatteryChargingChange(true);
}
else {
- charging->setVisible(false);
- setBatteryLevel(0);
+ for (auto &el : batteryChargings) {
+ el.second->setVisible(false);
+ }
}
}
} break;
@@ 162,10 165,10 @@ namespace gui
};
}
- uint32_t calculateBatteryLavel(uint32_t percentage)
+ uint32_t calculateBatteryBars(uint32_t percentage)
{
uint32_t level = 0;
- if (percentage <= 5)
+ if (percentage <= 5) // level critical
level = 0;
else if (percentage <= 27)
level = 1;
@@ 178,38 181,49 @@ namespace gui
else
level = 5;
- if (level >= batteryLevelCount) {
+ if (level >= batteryBarsCount) {
LOG_ERROR("Battery level calculations are done wrong!");
- return batteryLevelCount - 1;
+ return batteryBarsCount - 1;
}
return level;
}
- bool TopBar::setBatteryLevel(uint32_t percent)
+ bool TopBar::setBatteryBars(uint32_t percent)
{
if (Store::Battery::get().state != Store::Battery::State::Discharging) {
+
return false;
}
- charging->setVisible(false);
- batteryShowBars(calculateBatteryLavel(percent));
+ for (auto &el : batteryChargings) {
+ el.second->setVisible(false);
+ }
+ batteryShowBars(calculateBatteryBars(percent));
return true;
}
- void TopBar::setBatteryCharging(bool plugged)
+ void TopBar::setBatteryChargingChange(bool plugged)
{
- if (plugged) {
- batteryShowBars(0);
- }
- if (charging == nullptr)
- return;
- if (plugged) {
- charging->setVisible(true);
- batteryShowBars(0);
- }
- else {
- charging->setVisible(false);
- setBatteryLevel(Store::Battery::get().level);
+ switch (Store::Battery::get().state) {
+
+ case Store::Battery::State::Discharging:
+ setBatteryBars(Store::Battery::get().level);
+ break;
+ case Store::Battery::State::Charging:
+ break;
+ case Store::Battery::State::PluggedNotCharging:
+ break;
}
+ if (plugged) {}
+ // if (battery == nullptr)
+ // return;
+ // if (plugged) {
+ // chargingPending->setVisible(true);
+ // batteryShowBars(0);
+ // }
+ // else {
+ // chargingPending->setVisible(false);
+ //
+ // }
}
bool TopBar::updateSignalStrength()
M module-gui/gui/widgets/TopBar.hpp => module-gui/gui/widgets/TopBar.hpp +8 -6
@@ 9,11 9,12 @@
#include "Rect.hpp"
#include "TopBar/SIM.hpp"
#include <common_data/EventStore.hpp>
+#include <map>
namespace gui
{
- static const uint32_t batteryLevelCount = 6;
+ static const uint32_t batteryBarsCount = 6;
static const uint32_t signalImgCount = 6;
/// Header of most of design Windows
@@ 55,9 56,10 @@ namespace gui
Label *networkAccessTechnologyLabel = nullptr;
Image *signal[static_cast<size_t>(Store::RssiBar::noOfSupprtedBars)];
Image *lock;
- std::array<Image *, batteryLevelCount> battery = {nullptr};
- Label *charging = nullptr;
- gui::SIM *sim = nullptr;
+ std::array<Image *, batteryBarsCount> batteryBars = {nullptr};
+ std::map<const Store::Battery::State, Image *> batteryChargings = {
+ {Store::Battery::State::Charging, nullptr}, {Store::Battery::State::PluggedNotCharging, nullptr}};
+ gui::SIM *sim = nullptr;
void prepareWidget();
static TimeMode timeMode;
@@ 89,9 91,9 @@ namespace gui
* displayed.
* @return if display should be refreshed or not
*/
- bool setBatteryLevel(uint32_t percent);
+ bool setBatteryBars(uint32_t percent);
- void setBatteryCharging(bool plugged);
+ void setBatteryChargingChange(bool plugged);
/**
* @brief updates signal strength. This will cause appropriate image to be displayed.
M module-utils/common_data/EventStore.hpp => module-utils/common_data/EventStore.hpp +1 -0
@@ 25,6 25,7 @@ namespace Store
{
Discharging,
Charging,
+ PluggedNotCharging,
} state = State::Discharging;
unsigned int level = 0;