mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-08-27 11:39:46 +00:00
Add charging indicator to companion_radio battery icon
Show a small lightning-bolt icon to the left of the battery indicator on the ui-new home screen while the device is externally powered, and a plug icon once the battery reads full. The bolt/plug sits beside the battery so the fill bar stays clean and uninterrupted. When a buzzer is present, the mute icon shifts one slot further left so the two never overlap. Charging state is derived from board.isExternalPowered(), so this works on any board that reports external power (e.g. the nRF52 VBUS-detect path). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
67d6d42a4c
commit
3a440ac41a
@@ -146,11 +146,21 @@ class HomeScreen : public UIScreen {
|
||||
int fillWidth = (batteryPercentage * (iconWidth - 4)) / 100;
|
||||
display.fillRect(iconX + 2, iconY + 2, fillWidth, iconHeight - 4);
|
||||
|
||||
// show muted icon if buzzer is muted
|
||||
// while charging, show a bolt (or a plug once full) just left of the battery,
|
||||
// keeping the fill bar itself clean and uninterrupted
|
||||
bool charging = board.isExternalPowered();
|
||||
if (charging) {
|
||||
const uint8_t* symbol = (batteryPercentage < 100) ? charging_icon : plug_icon;
|
||||
display.setColor(UIColor::title_txt);
|
||||
display.drawXbm(iconX - 9, iconY + 1, symbol, 8, 8);
|
||||
}
|
||||
|
||||
// show muted icon if buzzer is muted (shifted further left when the charging
|
||||
// icon already occupies the slot immediately left of the battery)
|
||||
#ifdef PIN_BUZZER
|
||||
if (_task->isBuzzerQuiet()) {
|
||||
display.setColor(UIColor::warning_txt);
|
||||
display.drawXbm(iconX - 9, iconY + 1, muted_icon, 8, 8);
|
||||
display.drawXbm(iconX - (charging ? 18 : 9), iconY + 1, muted_icon, 8, 8);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -119,4 +119,14 @@ static const uint8_t advert_icon[] = {
|
||||
|
||||
static const uint8_t muted_icon[] = {
|
||||
0x20, 0x6a, 0xea, 0xe4, 0xe4, 0xea, 0x6a, 0x20
|
||||
};
|
||||
|
||||
// small lightning bolt, 8x8px, shown next to the battery icon while charging
|
||||
static const uint8_t charging_icon[] = {
|
||||
0x18, 0x30, 0x60, 0xFC, 0x18, 0x30, 0x60, 0xC0
|
||||
};
|
||||
|
||||
// small power plug, 8x8px, shown next to the battery icon once fully charged
|
||||
static const uint8_t plug_icon[] = {
|
||||
0x24, 0x24, 0x7E, 0x7E, 0x7E, 0x3C, 0x18, 0x18
|
||||
};
|
||||
Reference in New Issue
Block a user