Add context menu to filebrowser

This commit is contained in:
jpirnay
2026-05-16 09:21:49 +02:00
parent 1395676674
commit 9bcc7b5e4f
32 changed files with 470 additions and 56 deletions
@@ -17,8 +17,23 @@
void SdFirmwareUpdateActivity::onEnter() {
Activity::onEnter();
LOG_INF("FW", "SdFirmwareUpdateActivity build=%s %s recovery=%d", __DATE__, __TIME__, recoveryMode ? 1 : 0);
state = State::PICKING;
launchPicker();
if (!firmwarePath.empty()) {
// Pre-selected path: skip picker and go straight to validation.
{
RenderLock lock(*this);
state = State::VALIDATING;
}
requestUpdateAndWait();
if (!validateFirmware()) {
state = State::FAILED;
requestUpdate();
return;
}
promptConfirmation();
} else {
state = State::PICKING;
launchPicker();
}
}
void SdFirmwareUpdateActivity::launchPicker() {
@@ -31,6 +31,12 @@ class SdFirmwareUpdateActivity : public Activity {
explicit SdFirmwareUpdateActivity(GfxRenderer& renderer, MappedInputManager& mappedInput, bool recoveryMode = false)
: Activity("SdFirmwareUpdate", renderer, mappedInput), recoveryMode(recoveryMode) {}
// Start with a pre-selected firmware path — skips the file picker.
explicit SdFirmwareUpdateActivity(GfxRenderer& renderer, MappedInputManager& mappedInput, std::string preSelectedPath)
: Activity("SdFirmwareUpdate", renderer, mappedInput),
recoveryMode(false),
firmwarePath(std::move(preSelectedPath)) {}
void onEnter() override;
void loop() override;
void render(RenderLock&&) override;