Add welcome screen at the start of first-time setup, before touch calibration

Shows a new FirstRunWelcomeScreen right at the very beginning of the
first-time setup flow (isFirstRun), before touch calibration even
runs: hard-coded English title (no language chosen yet at this point),
the splash screen's radar reticle centered below it, and a large
black/green-outlined "Start" button whose text breathes between a
darker and a lighter, slightly whitish green (~2.5s cycle) so it's the
one element that visibly stands out against the otherwise uniform
green UI. The button intentionally stays unfilled (black) so the
twinkling MenuStars background shows through it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Eiswolf-BG
2026-08-12 05:38:11 +02:00
parent 9d2930bd8b
commit ba1c062ef1
3 changed files with 173 additions and 0 deletions

View File

@@ -29,6 +29,7 @@
#include "flight_logbook.h"
#include "weather.h"
#include "i18n.h"
#include "first_run_welcome_screen.h"
#include "first_run_language_screen.h"
#include "first_run_location_screen.h"
#include "first_run_complete_screen.h"
@@ -481,6 +482,15 @@ void setup() {
MenuStars::update(tft);
SplashScreen::setStatusLine(tft, 0, I18n::t(StringId::SPLASH_SD_OK), TFT_WHITE);
// Willkommens-Screen laeuft nur beim allerersten Start (isFirstRun) und
// bewusst VOR der Touch-Kalibrierung - der erste Eindruck, bevor man
// ueberhaupt zum Kalibrieren aufgefordert wird. Englisch hart kodiert,
// da die Sprachauswahl (FirstRunLanguageScreen) erst danach kommt,
// siehe first_run_welcome_screen.cpp.
if (isFirstRun) {
FirstRunWelcomeScreen::run(tft);
}
if (!TouchInput::loadCalibration()) {
CalibrationScreen::run(tft);
}