feat: add 2m, 10m presets and custom duration for slideshow interval

Presets are now [1, 2, 5, 10, 15, 30, 60] minutes. A 'Custom' button
reveals a number input clamped to 1–60 minutes. Backend also clamps
the received value with constrain(v, 1, 60) for safety.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-03 21:14:19 -04:00
parent 103f8000f3
commit 21b3e40992
2 changed files with 21 additions and 4 deletions

View File

@@ -310,7 +310,10 @@ void AppWebServer::handlePostSettings(AsyncWebServerRequest* request,
Settings s = _settings->get();
if (!doc["interval_min"].isNull()) s.interval_min = doc["interval_min"];
if (!doc["interval_min"].isNull()) {
uint8_t v = doc["interval_min"];
s.interval_min = constrain(v, 1, 60);
}
if (!doc["cycle_mode"].isNull()) s.cycle_mode = static_cast<CycleMode>((uint8_t)doc["cycle_mode"]);
if (!doc["img_quality"].isNull()) s.img_quality = static_cast<ImageQuality>((uint8_t)doc["img_quality"]);
if (!doc["meta_flags"].isNull()) s.meta_flags = doc["meta_flags"];