Replaces the repeated-tap timeout cycling (0-10, one tap per minute) with a dedicated screen and slider (1-15 minutes, then "Never"). The screensaver toggle moves from its own System-menu row into this screen, directly below the slider, since it only determines what happens when the timeout fires. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
364 lines
11 KiB
C++
364 lines
11 KiB
C++
#pragma once
|
|
#include <Arduino.h>
|
|
|
|
enum class StringId : uint8_t {
|
|
OK = 0,
|
|
CANCEL,
|
|
BACK,
|
|
BACK_ARROW,
|
|
LOADING,
|
|
ADD,
|
|
|
|
ON,
|
|
OFF,
|
|
NEVER,
|
|
|
|
SPLASH_SD_OK,
|
|
SPLASH_CONNECTING_WIFI,
|
|
SPLASH_WIFI_OK_PREFIX,
|
|
SPLASH_WIFI_FAILED,
|
|
SPLASH_GETTING_LOCATION,
|
|
SPLASH_READY,
|
|
|
|
SD_REQUIRED_LINE1,
|
|
SD_REQUIRED_LINE2,
|
|
SD_REQUIRED_LINE3,
|
|
SD_REQUIRED_HINT,
|
|
|
|
CALIB_TITLE,
|
|
CALIB_PROMPT,
|
|
CALIB_TOP_LEFT,
|
|
CALIB_TOP_RIGHT,
|
|
CALIB_BOTTOM_RIGHT,
|
|
CALIB_BOTTOM_LEFT,
|
|
CALIB_SAVED,
|
|
|
|
WIFI_SCANNING,
|
|
WIFI_NO_NETWORKS,
|
|
WIFI_SELECT,
|
|
WIFI_CONNECTED_BANG,
|
|
WIFI_CONNECTION_FAILED,
|
|
WIFI_BACK_TO_LIST_MSG,
|
|
WIFI_PASSWORD_LABEL,
|
|
WIFI_SPACE,
|
|
WIFI_CONNECT,
|
|
WIFI_BACK_TO_LIST_BTN,
|
|
WIFI_ALREADY_3,
|
|
WIFI_REMOVE_ONE_FIRST,
|
|
WIFI_CONNECTING,
|
|
WIFI_LABEL_PREFIX,
|
|
|
|
MENU_SETTINGS,
|
|
MENU_SETTINGS_PAGE2,
|
|
MENU_CALIBRATE,
|
|
MENU_DISPLAY_INVERTED,
|
|
MENU_DISPLAY_NORMAL,
|
|
MENU_MANAGE_WIFI,
|
|
MENU_LOCATION_PRESETS,
|
|
MENU_SCREEN_TIMEOUT_PREFIX,
|
|
MENU_NIGHT_DIMMING,
|
|
MENU_STATISTICS,
|
|
MENU_STATS_HISTORY,
|
|
MENU_LOGBOOK_FILES,
|
|
MENU_MORE_SETTINGS,
|
|
MENU_EMERGENCY_ALERT,
|
|
MENU_PROXIMITY_LED,
|
|
MENU_LED_HEARTBEAT,
|
|
MENU_FLIGHT_LOGBOOK,
|
|
MENU_HIDE_GROUND,
|
|
MENU_AIRLINE_FILTER,
|
|
MENU_WATCHLIST,
|
|
MENU_WATCHLIST_ALERT,
|
|
MENU_BACKUP,
|
|
MENU_RESTORE,
|
|
MENU_BACKUP_SAVED,
|
|
MENU_BACKUP_FAILED,
|
|
MENU_RESTORED,
|
|
MENU_RESTORE_FAILED,
|
|
MENU_LANGUAGE,
|
|
MENU_UNITS,
|
|
|
|
AIRLINE_FILTER_TITLE,
|
|
AIRLINE_FILTER_DESC1,
|
|
AIRLINE_FILTER_DESC2,
|
|
AIRLINE_FILTER_ADD,
|
|
AIRLINE_ADD_TITLE,
|
|
|
|
WATCHLIST_TITLE,
|
|
WATCHLIST_DESC1,
|
|
WATCHLIST_DESC2,
|
|
WATCHLIST_ADD,
|
|
WATCHLIST_ADD_TITLE,
|
|
WATCHLIST_EMPTY,
|
|
WATCHLIST_INFO_TITLE,
|
|
WATCHLIST_INFO_PARA1,
|
|
WATCHLIST_INFO_PARA2,
|
|
|
|
LOCATION_TITLE,
|
|
LOCATION_AUTO,
|
|
LOCATION_PRESET,
|
|
LOCATION_PRESET_EMPTY,
|
|
LOCATION_ADD,
|
|
LOCATION_LAT_PROMPT,
|
|
LOCATION_LON_PROMPT,
|
|
LOCATION_NEAREST_AIRPORT_PREFIX,
|
|
LOCATION_INFO_TITLE,
|
|
LOCATION_INFO_PARA1,
|
|
LOCATION_INFO_PARA2,
|
|
LOCATION_INFO_PARA3,
|
|
LOCATION_INFO_PARA4,
|
|
|
|
STATS_TITLE,
|
|
STATS_TODAY,
|
|
STATS_ALLTIME,
|
|
STATS_DAYS,
|
|
STATS_AVG,
|
|
STATS_RESET_BTN,
|
|
STATS_RESET_CONFIRM,
|
|
STATS_RESET_DONE,
|
|
STATS_UPTIME_PREFIX,
|
|
STATS_TOP_ALTITUDE_PREFIX,
|
|
STATS_HISTORY_TITLE,
|
|
STATS_HISTORY_EMPTY,
|
|
STATS_HISTORY_INFO_TITLE,
|
|
STATS_HISTORY_INFO_PARA1,
|
|
|
|
LOGFILES_TITLE,
|
|
LOGFILES_EMPTY,
|
|
LOGFILES_SHOWING_PREFIX,
|
|
LOGFILES_OF,
|
|
LOGFILES_DAYS_SUFFIX,
|
|
LOGFILES_AIRCRAFT_SUFFIX,
|
|
LOGFILES_INFO_TITLE,
|
|
LOGFILES_INFO_PARA1,
|
|
LOGFILES_INFO_PARA2,
|
|
|
|
RADAR_TAP_FOR_DETAILS,
|
|
RADAR_EMPTY_SKY_PREFIX,
|
|
|
|
DETAIL_MODEL,
|
|
DETAIL_TYPE,
|
|
DETAIL_LOADING_DOTS,
|
|
DETAIL_UNKNOWN,
|
|
DETAIL_ALT,
|
|
DETAIL_SPEED,
|
|
DETAIL_DIST,
|
|
DETAIL_HDG,
|
|
DETAIL_SEATS_EST,
|
|
DETAIL_SEATS_UNKNOWN,
|
|
DETAIL_TAP_CLOSE,
|
|
DETAIL_CLIMB,
|
|
DETAIL_DESCENT,
|
|
DETAIL_LEVEL,
|
|
DETAIL_SQUAWK,
|
|
|
|
UNITS_TITLE,
|
|
UNITS_AUTO,
|
|
UNITS_METRIC,
|
|
UNITS_IMPERIAL,
|
|
|
|
LANGUAGE_TITLE,
|
|
|
|
MENU_CATEGORY_REGION,
|
|
MENU_CATEGORY_WIFI,
|
|
MENU_CATEGORY_SYSTEM,
|
|
MENU_CATEGORY_FLIGHT,
|
|
|
|
WIFI_NETWORKS_TITLE,
|
|
WIFI_ADD_NETWORK,
|
|
WIFI_EMPTY_SLOT,
|
|
WIFI_INFO_TITLE,
|
|
WIFI_INFO_PARA1,
|
|
WIFI_INFO_PARA2,
|
|
WIFI_INFO_PARA3,
|
|
|
|
MENU_AIRCRAFT_LIST,
|
|
AIRCRAFT_LIST_TITLE,
|
|
AIRCRAFT_LIST_EMPTY,
|
|
AIRCRAFT_LIST_SORT_PREFIX,
|
|
AIRCRAFT_LIST_SORT_DISTANCE,
|
|
AIRCRAFT_LIST_SORT_ALTITUDE,
|
|
AIRCRAFT_LIST_SORT_CALLSIGN,
|
|
|
|
MENU_ABOUT,
|
|
ABOUT_DESC1,
|
|
ABOUT_DESC2,
|
|
ABOUT_VERSION_PREFIX,
|
|
|
|
MENU_BRIGHTNESS_PREFIX,
|
|
BRIGHTNESS_TITLE,
|
|
|
|
// Grosse Warn-Ueberlage beim Einschalten des Flugbuchs (Menue >
|
|
// Flugoptionen > Flugbuch), erklaert die 24h-Sicherheitsabschaltung.
|
|
MENU_LOGBOOK_WARNING_TITLE,
|
|
MENU_LOGBOOK_WARNING_BODY,
|
|
|
|
// Preset-Name beim Anlegen (optional), "Presets voll"-Hinweis beim
|
|
// Antippen der Naechster-Flughafen-Laufschrift, sowie ein zusaetzlicher
|
|
// Info-Absatz dazu (Menue > Flugoptionen > Standort-Presets > "?").
|
|
LOCATION_NAME_PROMPT,
|
|
LOCATION_NAME_SKIP,
|
|
LOCATION_PRESETS_FULL,
|
|
LOCATION_INFO_PARA5,
|
|
|
|
// Neuer, direkt im System-Menue erreichbarer Punkt "Logbuch/WebUI"
|
|
// (statt nur ueber das versteckte "?" im Logbuch-Dateien-Screen) -
|
|
// zeigt IP + Erklaerung der Weboberflaeche (Flugbuch
|
|
// ansehen/herunterladen/loeschen). Die urspruenglich hier mit
|
|
// enthaltene Screenshot-Verwaltung wurde wieder entfernt, siehe
|
|
// Entfernung von SCREENSHOT_SAVED_PREFIX/SCREENSHOT_FAILED oben - das
|
|
// Bildschirm-Auslesen (SPI-Readback) funktioniert auf diesem
|
|
// CYD-Board hardwareseitig nicht (TFT_MISO nicht angebunden).
|
|
MENU_LOGBOOK_WEBUI,
|
|
WEBUI_TITLE,
|
|
WEBUI_INFO_PARA1,
|
|
WEBUI_INFO_PARA2,
|
|
|
|
// Kleines Info-Fenster, das beim Antippen des Wetter-Icons im Header
|
|
// erscheint (siehe main.cpp/showWeatherInfo()) - erklaert, dass das
|
|
// Wetter zum aktuell aktiven Standort (bzw. aktivem Standort-Preset)
|
|
// gehoert.
|
|
WEATHER_INFO_TITLE,
|
|
WEATHER_INFO_BODY,
|
|
|
|
// Adresssuche (AddressSearchScreen) - Standort per Adresseingabe statt
|
|
// manueller Koordinaten, per kostenlosem Nominatim-Geokodierungsdienst.
|
|
// Erreichbar sowohl beim Ersteinrichten (nach der Sprachauswahl) als
|
|
// auch jederzeit ueber Standort-Presets > "+".
|
|
LOCATION_ADD_CHOICE_TITLE,
|
|
LOCATION_ADD_BY_COORDS,
|
|
LOCATION_ADD_BY_ADDRESS,
|
|
ADDRESS_SEARCH_TITLE,
|
|
ADDRESS_SEARCH_SEARCHING,
|
|
ADDRESS_SEARCH_NO_RESULTS,
|
|
ADDRESS_SEARCH_ERROR,
|
|
ADDRESS_SEARCH_CONFIRM_TITLE,
|
|
ADDRESS_SEARCH_USE_THIS,
|
|
ADDRESS_SEARCH_TRY_AGAIN,
|
|
ADDRESS_SEARCH_CANCEL,
|
|
|
|
// Grosser Hinweis-Screen beim allerersten Start (nur einmalig, nach der
|
|
// Sprachauswahl) - erklaert den Genauigkeitsvorteil eines per Adresse
|
|
// gesetzten Standorts gegenueber der automatischen IP-Standort-
|
|
// bestimmung, mit direktem Einstieg in die Adresssuche. Ueberspringbar.
|
|
FIRST_RUN_LOCATION_TITLE,
|
|
FIRST_RUN_LOCATION_BODY,
|
|
FIRST_RUN_LOCATION_SET_BTN,
|
|
FIRST_RUN_LOCATION_SKIP_BTN,
|
|
|
|
// Zusaetzlicher Info-Absatz im Standort-Presets-Screen (Menue >
|
|
// Flugoptionen > Standort-Presets > "?") - weist auf den "Per Adresse
|
|
// suchen"-Weg beim "+"-Button hin (deutlich genauer als die
|
|
// automatische IP-Standortbestimmung). Ergaenzt die knappe Erwaehnung
|
|
// in LOCATION_INFO_PARA3 um denselben anschaulichen Vergleich wie im
|
|
// Ersteinrichtungs-Screen (FIRST_RUN_LOCATION_BODY) und im README.
|
|
LOCATION_INFO_PARA6,
|
|
|
|
// Format-Hinweis unter dem Titel der Adresssuche (AddressSearchScreen)
|
|
// - ein Beispiel im lokalen Format (Strasse Hausnr., PLZ Ort), da das
|
|
// einzelne Freitextfeld sonst ohne jeden Hinweis war und Nutzer nicht
|
|
// wussten, was/in welcher Reihenfolge sie eingeben sollen.
|
|
ADDRESS_SEARCH_HINT,
|
|
|
|
// Letzter Screen der Ersteinrichtung (nach der Standort-Adresssuche,
|
|
// main.cpp) - bestaetigt den Abschluss der Einrichtung, nennt den
|
|
// SD-Karten-Ordner, in dem alle Daten liegen, und weist darauf hin,
|
|
// dass sich das WLAN ab dem naechsten Start automatisch verbindet.
|
|
FIRST_RUN_COMPLETE_TITLE,
|
|
FIRST_RUN_COMPLETE_BODY1,
|
|
FIRST_RUN_COMPLETE_BODY2,
|
|
|
|
// Hinweis mit Beispielnamen unter dem Titel der Namens-Tastatur
|
|
// (location_presets_screen.cpp::runPresetNameKeypad UND
|
|
// address_search_screen.cpp::runNameKeypad, beide spiegeln sich) -
|
|
// ohne jeden Hinweis wussten Einsteiger nicht, was fuer ein Name hier
|
|
// gemeint ist (Preset-Name wie "Zuhause", nicht z.B. ein Ort/Adresse).
|
|
LOCATION_NAME_HINT,
|
|
|
|
// Legenden-Eintrag auf dem Radar-Screen (radar_screen.cpp::drawLegend)
|
|
// fuer die blauen Quadrat-Marker der Bodenfahrzeuge - nur sichtbar,
|
|
// wenn "Bodenfahrzeuge ausblenden" AUS ist (Flugoptionen), da die
|
|
// Fahrzeuge dann als eigene Legenden-Zeile unter den drei
|
|
// Hoehen-Farbstufen erscheinen.
|
|
LEGEND_GROUND_VEHICLE,
|
|
|
|
// Neue "Sicherung & Reset"-Unterseite im System-Menue (fasst die
|
|
// bisher einzeln im System-Menue stehenden Backup/Restore-Buttons
|
|
// zusammen und ergaenzt einen dritten Punkt "Einstellungen
|
|
// zuruecksetzen" - ein kompletter Werksreset fuer Entwickler/Tester,
|
|
// der den gesamten Flightradar-Ordner von der SD-Karte loescht und
|
|
// neu startet, siehe settings_backup.cpp::factoryReset()). Titel und
|
|
// Button-Label teilen sich MENU_BACKUP_RESET, genau wie
|
|
// MENU_CATEGORY_SYSTEM sowohl fuer den Menue-Button als auch den
|
|
// Bildschirmtitel der System-Seite verwendet wird.
|
|
MENU_BACKUP_RESET,
|
|
MENU_FACTORY_RESET,
|
|
MENU_FACTORY_RESET_WARNING_BODY,
|
|
MENU_FACTORY_RESET_DELETING,
|
|
MENU_FACTORY_RESET_FAILED,
|
|
|
|
// Small, centered hint below the countdown button on the "Setup
|
|
// complete" screen (first_run_complete_screen.cpp) - makes it visible
|
|
// that tapping the button skips the 7-second countdown immediately
|
|
// instead of waiting it out.
|
|
FIRST_RUN_COMPLETE_TAP_TO_SKIP,
|
|
|
|
// Zeilenpraefix im Radar-Detailpanel (radar_screen.cpp::drawDetailPanel)
|
|
// fuer die Flugroute (Start- -> Zielflughafen, ICAO-Code), abgefragt
|
|
// ueber AircraftDetails per Rufzeichen. Faellt wie MODEL/TYPE/SQUAWK auf
|
|
// DETAIL_UNKNOWN zurueck, wenn kein Rufzeichen bekannt ist oder keine
|
|
// Route gefunden wurde.
|
|
DETAIL_ROUTE,
|
|
|
|
// Hinweiszeile ueber dem QR-Code auf dem neuen QR-Unterscreen der
|
|
// Logbuch/WebUI-Seite (webui_screen.cpp::runQrScreen) - der WEBUI_TITLE-
|
|
// String wird fuer die Kopfzeile wiederverwendet, kein eigener Titel
|
|
// noetig.
|
|
WEBUI_QR_HINT,
|
|
|
|
// Ruhebildschirm bei Inaktivitaets-Timeout (Menue > System >
|
|
// "Ruhebildschirm", siehe SettingsStore::screensaverEnabled() und
|
|
// main.cpp).
|
|
MENU_SCREENSAVER,
|
|
|
|
// OTA-Firmware-Update ueber WLAN (Menue > System > "Nach Update
|
|
// suchen", siehe menu_screen.cpp::runOtaUpdateScreen() und
|
|
// ota_update.h/.cpp).
|
|
MENU_CHECK_UPDATE,
|
|
OTA_CHECKING,
|
|
OTA_CHECK_FAILED,
|
|
OTA_UP_TO_DATE_PREFIX,
|
|
OTA_UPDATE_AVAILABLE_PREFIX,
|
|
OTA_CONFIRM_BODY,
|
|
OTA_INSTALLING_PREFIX,
|
|
OTA_UPDATE_FAILED,
|
|
OTA_UPDATE_SUCCESS,
|
|
|
|
// Erfolgs-/Fehler-Ergebnis nach Download+Flash wird jetzt als
|
|
// dauerhafter Info-Screen mit explizitem Button angezeigt (statt
|
|
// automatischem Neustart bzw. kurzer, automatisch verschwindender
|
|
// Meldung) - der Nutzer muss bei einer sicherheitsrelevanten Aktion wie
|
|
// einem Firmware-Update IMMER aktiv informiert werden und selbst
|
|
// bestaetigen, siehe menu_screen.cpp::infoScreen().
|
|
OTA_SUCCESS_BODY,
|
|
OTA_RESTART_BUTTON,
|
|
OTA_FAILED_BODY,
|
|
|
|
// Eigener Bildschirm-Timeout-Screen (Menue > System > Bildschirm-
|
|
// Timeout, siehe timeout_screen.cpp) mit Schieberegler statt des
|
|
// vorherigen Durchklickens per wiederholtem Antippen - der
|
|
// Ruhebildschirm-Umschalter (vorher eigene Zeile im System-Menue,
|
|
// MENU_SCREENSAVER) zieht mit auf diesen Screen um, da er inhaltlich
|
|
// eng mit dem Timeout zusammenhaengt und hier genug Platz fuer eine
|
|
// kurze Erklaerung ist.
|
|
TIMEOUT_SCREEN_TITLE,
|
|
TIMEOUT_SCREENSAVER_DESC,
|
|
|
|
COUNT
|
|
};
|
|
|
|
namespace I18n {
|
|
constexpr uint8_t LANG_COUNT = 6;
|
|
const char* t(StringId id);
|
|
const char* languageName(uint8_t index);
|
|
} |