Add extra bar indicator for near-complete progress

Draws a small additional bar segment when progress reaches 95% or higher, positioned at x+14 within the progress bar cavity. The extra bar is capped at 3 pixels wide to fit within the available space.
This commit is contained in:
Justin Mitchell
2026-06-20 00:14:48 -04:00
parent a242397fa0
commit beb4e82c9c
3 changed files with 16 additions and 9 deletions
+3 -9
View File
@@ -300,13 +300,6 @@ void HalGPIO::verifyPowerButtonWakeup(uint16_t requiredDurationMs, bool shortPre
// Fast path - no duration check needed
return;
}
// TODO: Intermittent edge case remains: a single tap followed by another single tap
// can still power on the device. Tighten wake debounce/state handling here.
// Calibrate: subtract boot time already elapsed, assuming button held since boot
const uint16_t calibration = millis();
const uint16_t calibratedDuration = (calibration < requiredDurationMs) ? (requiredDurationMs - calibration) : 1;
const auto start = millis();
inputMgr.update();
// inputMgr.isPressed() may take up to ~500ms to return correct state
@@ -315,11 +308,12 @@ void HalGPIO::verifyPowerButtonWakeup(uint16_t requiredDurationMs, bool shortPre
inputMgr.update();
}
if (inputMgr.isPressed(BTN_POWER)) {
const auto holdStart = millis();
do {
delay(10);
inputMgr.update();
} while (inputMgr.isPressed(BTN_POWER) && inputMgr.getPowerButtonHeldTime() < calibratedDuration);
if (inputMgr.getPowerButtonHeldTime() < calibratedDuration) {
} while (inputMgr.isPressed(BTN_POWER) && millis() - holdStart < requiredDurationMs);
if (millis() - holdStart < requiredDurationMs) {
startDeepSleep();
}
} else {
+8
View File
@@ -1,5 +1,6 @@
#pragma once
#include <BoardConfig.h>
#include <HalClock.h>
#include <HalGPIO.h>
#include <HalTiltSensor.h>
@@ -268,6 +269,13 @@ inline std::vector<SettingInfo> getSettingsList(const SdCardFontRegistry* regist
}
}
}
if (BoardConfig::hasTouch()) {
v.erase(std::remove_if(v.begin(), v.end(),
[](const SettingInfo& s) {
return s.nameId == StrId::STR_FRONT_BTN_FOLLOW_ORIENTATION;
}),
v.end());
}
// Only show tilt page turn setting when the QMI8658 IMU is present (X3)
if (halTiltSensor.isAvailable()) {
+5
View File
@@ -101,6 +101,11 @@ void LyraTheme::fillBatteryIcon(const GfxRenderer& renderer, Rect rect, uint16_t
if (percentage > 70) {
renderer.fillRect(rect.x + 10, rect.y + 2, 3, rect.height - 4);
}
const int extraBarX = rect.x + 14;
const int cavityRight = rect.x + 2 + (rect.width - 5);
if (percentage >= 95 && extraBarX < cavityRight) {
renderer.fillRect(extraBarX, rect.y + 2, std::min(3, cavityRight - extraBarX), rect.height - 4);
}
}
}