Max17055 improvements (#2197)

* fixes

* more fixes

* more fixes

* fix

* more fixes

* fix icon updates

* fix init unk error

* simplify

* improve icon init

* code format

* Update ui_battinfo.cpp
This commit is contained in:
Totoo 2024-07-17 11:18:57 +02:00 committed by GitHub
parent 19eb6b44d5
commit 2bedb5f09f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 112 additions and 63 deletions

View file

@ -2048,7 +2048,7 @@ bool TextField::on_touch(TouchEvent event) {
BatteryIcon::BatteryIcon(Rect parent_rect, uint8_t percent)
: Widget(parent_rect) {
this->set_battery(percent, false);
this->set_battery(percent <= 100 ? 1 : 0, percent, false);
set_focusable(true);
}
@ -2059,10 +2059,12 @@ void BatteryIcon::getWidgetName(std::string& result) {
result = "Battery percent";
}
void BatteryIcon::set_battery(uint8_t percentage, bool charge) {
if (charge == charge_ && percent_ == percentage) return;
void BatteryIcon::set_battery(uint8_t valid_mask, uint8_t percentage, bool charge) {
if (charge == charge_ && percent_ == percentage && valid_ == valid_mask) return;
percent_ = percentage;
charge_ = charge;
valid_ = valid_mask;
if ((valid_mask & battery::BatteryManagement::BATT_VALID_VOLTAGE) != battery::BatteryManagement::BATT_VALID_VOLTAGE) percent_ = 102; // to indicate error
set_dirty();
}
@ -2121,7 +2123,7 @@ void BatteryIcon::paint(Painter& painter) {
BatteryTextField::BatteryTextField(Rect parent_rect, uint8_t percent)
: Widget(parent_rect) {
this->set_battery(percent, false);
this->set_battery(percent <= 100 ? 1 : 0, percent, false);
set_focusable(true);
}
@ -2146,10 +2148,12 @@ void BatteryTextField::getWidgetName(std::string& result) {
result = "Battery percent";
}
void BatteryTextField::set_battery(uint8_t percentage, bool charge) {
if (charge == charge_ && percent_ == percentage) return;
void BatteryTextField::set_battery(uint8_t valid_mask, uint8_t percentage, bool charge) {
if (charge == charge_ && percent_ == percentage && valid_ == valid_mask) return;
charge_ = charge;
percent_ = percentage;
valid_ = valid_mask;
if ((valid_mask & battery::BatteryManagement::BATT_VALID_VOLTAGE) != battery::BatteryManagement::BATT_VALID_VOLTAGE) percent_ = 102; // to indicate error
set_dirty();
}