feat: Hidden wifi ssid support (#2360)
This commit is contained in:
@@ -301,3 +301,5 @@ STR_STEP_HINT_SIDE: "Бакавыя кнопкі:"
|
||||
STR_AUTO_TURN_ENABLED: "Аўтаперагортванне: "
|
||||
STR_AUTO_TURN_PAGES_PER_MIN: "Аўтаперагортванне (старонак за хвіліну)"
|
||||
STR_TILT_PAGE_TURN: "Перагортванне нахілам"
|
||||
STR_ADD_HIDDEN_NETWORK: "Дадаць схаваную сетку..."
|
||||
STR_ENTER_WIFI_SSID: "Увядзіце назву сеткі (SSID)"
|
||||
|
||||
@@ -390,3 +390,5 @@ STR_FIRMWARE_WRITE_FAILED: "Ha fallat l'escriptura del firmware"
|
||||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "No apaguis el dispositiu!"
|
||||
STR_RECOVERY_MODE: "Mode de recuperació"
|
||||
STR_RECOVERY_MODE_HINT: "Posa firmware.bin a l'arrel de la targeta SD i selecciona'l"
|
||||
STR_ADD_HIDDEN_NETWORK: "Afegeix una xarxa oculta..."
|
||||
STR_ENTER_WIFI_SSID: "Introdueix el nom de la xarxa (SSID)"
|
||||
|
||||
@@ -276,3 +276,5 @@ STR_SLEEP_NEVER: "Nikdy"
|
||||
STR_STEP_HINT_FRONT: "Přední tlačítka:"
|
||||
STR_STEP_HINT_SIDE: "Boční tlačítka:"
|
||||
STR_TILT_PAGE_TURN: "Otáčení stránek nakloněním"
|
||||
STR_ADD_HIDDEN_NETWORK: "Přidat skrytou síť..."
|
||||
STR_ENTER_WIFI_SSID: "Zadejte název sítě (SSID)"
|
||||
|
||||
@@ -304,3 +304,5 @@ STR_SCREENSHOT_BUTTON: "Tag skærmbillede"
|
||||
STR_AUTO_TURN_ENABLED: "Automatisk sidevendning aktiveret: "
|
||||
STR_AUTO_TURN_PAGES_PER_MIN: "Automatisk vending (sider per minut)"
|
||||
STR_TILT_PAGE_TURN: "Vip for at vende side"
|
||||
STR_ADD_HIDDEN_NETWORK: "Tilføj skjult netværk..."
|
||||
STR_ENTER_WIFI_SSID: "Indtast netværksnavn (SSID)"
|
||||
|
||||
@@ -304,3 +304,5 @@ STR_SCREENSHOT_BUTTON: "Screenshot maken"
|
||||
STR_AUTO_TURN_ENABLED: "Automatisch omslaan ingeschakeld: "
|
||||
STR_AUTO_TURN_PAGES_PER_MIN: "Autom. omslaan (pagina's per minuut)"
|
||||
STR_TILT_PAGE_TURN: "Kantel om te bladeren"
|
||||
STR_ADD_HIDDEN_NETWORK: "Verborgen netwerk toevoegen..."
|
||||
STR_ENTER_WIFI_SSID: "Voer netwerknaam in (SSID)"
|
||||
|
||||
@@ -53,6 +53,8 @@ STR_NETWORK_LEGEND: "* = Encrypted | + = Saved"
|
||||
STR_MAC_ADDRESS: "MAC address:"
|
||||
STR_CHECKING_WIFI: "Checking Wi-Fi..."
|
||||
STR_ENTER_WIFI_PASSWORD: "Enter Wi-Fi password"
|
||||
STR_ADD_HIDDEN_NETWORK: "Add hidden network..."
|
||||
STR_ENTER_WIFI_SSID: "Enter network name (SSID)"
|
||||
STR_TO_PREFIX: "to "
|
||||
STR_CALIBRE_RECEIVING: "Receiving: "
|
||||
STR_CALIBRE_RECEIVED: "Received: "
|
||||
|
||||
@@ -274,3 +274,5 @@ STR_SLEEP_NEVER: "Ei koskaan"
|
||||
STR_STEP_HINT_FRONT: "Etupainikkeet:"
|
||||
STR_STEP_HINT_SIDE: "Sivupainikkeet:"
|
||||
STR_TILT_PAGE_TURN: "Sivunkääntö kallistamalla"
|
||||
STR_ADD_HIDDEN_NETWORK: "Lisää piilotettu verkko..."
|
||||
STR_ENTER_WIFI_SSID: "Anna verkon nimi (SSID)"
|
||||
|
||||
@@ -305,3 +305,5 @@ STR_SCREENSHOT_BUTTON: "Capture d'écran"
|
||||
STR_AUTO_TURN_ENABLED: "Tourne-page auto : "
|
||||
STR_AUTO_TURN_PAGES_PER_MIN: "Tourne-page auto (pages par minute)"
|
||||
STR_TILT_PAGE_TURN: "Tourner par inclinaison"
|
||||
STR_ADD_HIDDEN_NETWORK: "Ajouter un réseau masqué..."
|
||||
STR_ENTER_WIFI_SSID: "Saisir le nom du réseau (SSID)"
|
||||
|
||||
@@ -381,3 +381,5 @@ STR_FIRMWARE_WRITE_FAILED: "Schreiben der Firmware-Datei ist fehlgeschlagen"
|
||||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "Nicht ausschalten!"
|
||||
STR_RECOVERY_MODE: "Wiederherstellungsmodus"
|
||||
STR_RECOVERY_MODE_HINT: "Lege firmware.bin im SD-Kartenwurzelverzeichnis ab und wähle es aus"
|
||||
STR_ADD_HIDDEN_NETWORK: "Verstecktes Netzwerk hinzufügen..."
|
||||
STR_ENTER_WIFI_SSID: "Netzwerknamen eingeben (SSID)"
|
||||
|
||||
@@ -392,3 +392,5 @@ STR_SLEEP_TIMER_VALUE_FORMAT: "%u דקות"
|
||||
STR_SLEEP_NEVER: "אף פעם"
|
||||
STR_STEP_HINT_FRONT: "לחצנים קדמיים:"
|
||||
STR_STEP_HINT_SIDE: "לחצני צד:"
|
||||
STR_ADD_HIDDEN_NETWORK: "הוסף רשת מוסתרת..."
|
||||
STR_ENTER_WIFI_SSID: "הזן שם רשת (SSID)"
|
||||
|
||||
@@ -49,6 +49,8 @@ STR_NETWORK_LEGEND: "* = Titkosított | + = Mentett"
|
||||
STR_MAC_ADDRESS: "MAC-cím:"
|
||||
STR_CHECKING_WIFI: "Wi-Fi ellenőrzése..."
|
||||
STR_ENTER_WIFI_PASSWORD: "Add meg a Wi-Fi jelszót"
|
||||
STR_ADD_HIDDEN_NETWORK: "Rejtett hálózat hozzáadása..."
|
||||
STR_ENTER_WIFI_SSID: "Add meg a hálózat nevét (SSID)"
|
||||
STR_TO_PREFIX: "- "
|
||||
STR_CALIBRE_RECEIVING: "Fogadás: "
|
||||
STR_CALIBRE_RECEIVED: "Fogadva: "
|
||||
@@ -301,3 +303,93 @@ STR_SCREENSHOT_BUTTON: "Képernyőkép készítése"
|
||||
STR_AUTO_TURN_ENABLED: "Automatikus lapozás bekapcsolva: "
|
||||
STR_AUTO_TURN_PAGES_PER_MIN: "Automatikus lapozás (oldal/perc)"
|
||||
STR_TILT_PAGE_TURN: "Döntéses lapozás"
|
||||
STR_ADD_SERVER: "Szerver hozzáadása"
|
||||
STR_BOOKMARKS: "Könyvjelzők"
|
||||
STR_BOOKMARK_ADDED: "Könyvjelző hozzáadva."
|
||||
STR_BOOKMARK_OPTION: "Könyvjelző"
|
||||
STR_BOTTOM: "Alul"
|
||||
STR_CLOCK: "Óra"
|
||||
STR_CLOCK_FORMAT: "Óraformátum"
|
||||
STR_CLOCK_FORMAT_12H: "12 órás"
|
||||
STR_CLOCK_FORMAT_24H: "24 órás"
|
||||
STR_CLOCK_SYNC: "Óra szinkronizálása"
|
||||
STR_CLOCK_SYNCED: "Óra szinkronizálva"
|
||||
STR_CLOCK_SYNCING: "Szinkronizálás NTP-ről..."
|
||||
STR_CLOCK_SYNC_FAIL: "Szinkronizálás sikertelen"
|
||||
STR_CLOCK_SYNC_NOW: "Óra szinkronizálása most"
|
||||
STR_CLOCK_SYNC_NO_WIFI: "Wi-Fi nincs csatlakoztatva"
|
||||
STR_CLOCK_SYNC_NO_WIFI_HINT: "Először csatlakozz Wi-Fi-hez, majd próbáld újra."
|
||||
STR_CLOCK_SYNC_OK: "Óra szinkronizálva"
|
||||
STR_CLOCK_UTC_OFFSET: "Óra UTC eltolás"
|
||||
STR_CONFIRM_DELETE_BOOKMARK: "Törlöd ezt a könyvjelzőt?"
|
||||
STR_CONNECTING_SAVED_WIFI: "Csatlakozás mentett Wi-Fi-hez..."
|
||||
STR_CRASH_DESCRIPTION: "A részletes jelentés a crash_report.txt fájlba lett mentve. Kérjük, csatold ezt a fájlt a hibajelentéshez."
|
||||
STR_CRASH_NO_REASON: "(Nem került rögzítésre ok)"
|
||||
STR_CRASH_REASON: "Összeomlás oka:"
|
||||
STR_CRASH_TITLE: "Rendszerösszeomlás"
|
||||
STR_CURRENT_TIME: "Aktuális idő:"
|
||||
STR_DELETE_SERVER: "Szerver törlése"
|
||||
STR_DISABLED: "Letiltva"
|
||||
STR_DOWNLOAD_ALL: "Összes letöltése"
|
||||
STR_EOB_CONTINUE_WITH: "Folytatás ezzel"
|
||||
STR_EOB_HOME: "Kezdőképernyő"
|
||||
STR_FINDING_SAVED_WIFI: "Mentett Wi-Fi keresése..."
|
||||
STR_FIRMWARE_FILE_OPEN_FAILED: "A fájl nem nyitható meg"
|
||||
STR_FIRMWARE_TOO_LARGE: "A firmware túl nagy a partícióhoz"
|
||||
STR_FIRMWARE_TOO_SMALL: "A firmware fájl túl kicsi"
|
||||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "Ne kapcsold ki!"
|
||||
STR_FIRMWARE_UPDATE_PROMPT: "Frissíted a firmware-t?"
|
||||
STR_FIRMWARE_WRITE_FAILED: "A firmware írása sikertelen"
|
||||
STR_FONT_BROWSER: "Betűtípus-böngésző"
|
||||
STR_FONT_INSTALLED: "Betűtípus telepítve!"
|
||||
STR_FONT_INSTALL_FAILED: "A betűtípus telepítése sikertelen"
|
||||
STR_FORCE_REFRESH: "Képernyő frissítése"
|
||||
STR_INDEX_FAILED: "Indexelés sikertelen – érvénytelen könyv"
|
||||
STR_INSTALLED: "Telepítve"
|
||||
STR_INVALID_FIRMWARE: "Érvénytelen firmware fájl"
|
||||
STR_KB_HINT_CLEAR_TEXT: "Tartsd nyomva a DEL-t az összes szöveg törléséhez"
|
||||
STR_KB_HINT_EDIT_ENTRY: "Tartsd nyomva a FEL-t a bejegyzés szerkesztéséhez"
|
||||
STR_KB_HINT_EXIT_URL_MODE: "Nyomd meg az ABC-t az URL mód elhagyásához"
|
||||
STR_KB_HINT_HIDE_PASSWORD: "Tartsd nyomva a JOBBRA-t, majd nyomd meg a [***]-ot a jelszó elrejtéséhez"
|
||||
STR_KB_HINT_LOWER_SECONDARY: "Tartsd nyomva a SELECT-et kisbetűért vagy másodlagos karakterért"
|
||||
STR_KB_HINT_MOVE_CURSOR: "Nyomd meg a BALRA vagy JOBBRA gombot a kurzor mozgatásához"
|
||||
STR_KB_HINT_RETURN_CURSOR: "Nyomd meg a BALRA-t a kurzorpozícióhoz való visszatéréshez"
|
||||
STR_KB_HINT_RETURN_KEYBOARD: "Nyomd meg a LE-t a billentyűzethez való visszatéréshez"
|
||||
STR_KB_HINT_SECONDARY_CHAR: "Tartsd nyomva a SELECT-et másodlagos karakterért"
|
||||
STR_KB_HINT_SHOW_PASSWORD: "Tartsd nyomva a JOBBRA-t, majd nyomd meg az [abc]-t a jelszó megjelenítéséhez"
|
||||
STR_KB_HINT_TOGGLE_HIDE_PASSWORD: "Nyomd meg a [***]-ot a jelszó elrejtéséhez"
|
||||
STR_KB_HINT_TOGGLE_SHOW_PASSWORD: "Nyomd meg az [abc]-t a jelszó megjelenítéséhez"
|
||||
STR_KB_HINT_UPPER_SECONDARY: "Tartsd nyomva a SELECT-et NAGYBETŰÉRT vagy másodlagos karakterért"
|
||||
STR_KB_HINT_URL_SNIPPETS: "Nyomd meg az URL-t az URL-részletekért"
|
||||
STR_KB_TIPS: "Tippek:"
|
||||
STR_KOSYNC: "KOSync"
|
||||
STR_LOADING_FONT_LIST: "Betűtípuslista betöltése..."
|
||||
STR_LONG_PRESS_BEHAVIOR: "Hosszú gombnyomás viselkedése"
|
||||
STR_LONG_PRESS_BEHAVIOR_OFF: "KI"
|
||||
STR_LONG_PRESS_BEHAVIOR_ORIENTATION: "Tájolásváltás"
|
||||
STR_LONG_PRESS_BEHAVIOR_SKIP: "Fejezetugrás"
|
||||
STR_LONG_PRESS_MENU: "Hosszú nyomás – Menü"
|
||||
STR_MANAGE_FONTS: "Betűtípusok kezelése"
|
||||
STR_NEXT_FIELD: "Következő"
|
||||
STR_NEXT_PAGE: "Következő oldal »"
|
||||
STR_NO_BIN_FILES: "Nincs .bin fájl"
|
||||
STR_NO_FONTS_AVAILABLE: "Nincs elérhető betűtípus"
|
||||
STR_NO_SERVERS: "Nincs beállított OPDS szerver"
|
||||
STR_OPDS_SERVERS: "OPDS szerverek"
|
||||
STR_PREV_PAGE: "« Előző oldal"
|
||||
STR_PWR_BTN_FOOTNOTE_BACK: "Gyors visszatérés lábjegyzetből"
|
||||
STR_RECOVERY_MODE: "Helyreállítási mód"
|
||||
STR_RECOVERY_MODE_HINT: "Helyezd a firmware.bin fájlt az SD-kártya gyökerébe, majd válaszd ki"
|
||||
STR_RESTARTING_HINT: "Újraindítás... Ha az eszköz nem indul újra, tartsd nyomva a bekapcsológombot néhány másodpercig."
|
||||
STR_SD_FIRMWARE_UPDATE: "Firmware frissítés SD-kártyáról"
|
||||
STR_SEARCH: "Keresés"
|
||||
STR_SELECT_FIRMWARE_FILE: "Válassz firmware fájlt (.bin)"
|
||||
STR_SERVER_NAME: "Szerver neve"
|
||||
STR_SET_SLEEP_COVER: "Borító beállítása"
|
||||
STR_SHOW_NETWORKS: "Megjelenítés"
|
||||
STR_THEME_ROUNDEDRAFF: "RoundedRaff"
|
||||
STR_TOP: "Felül"
|
||||
STR_UPDATE_ALL: "Összes frissítése"
|
||||
STR_UPDATE_AVAILABLE: "Frissítés"
|
||||
STR_VALIDATING_FIRMWARE: "Firmware ellenőrzése..."
|
||||
STR_XTC_STATUS_BAR: "XTC állapotsáv"
|
||||
|
||||
@@ -387,3 +387,5 @@ STR_PWR_BTN_FOOTNOTE_BACK: "Rientro rapido dalle note"
|
||||
STR_EOB_CONTINUE_WITH: "Continua con"
|
||||
STR_EOB_HOME: "Home"
|
||||
STR_INDEX_FAILED: "Indicizzazione fallita - libro non valido"
|
||||
STR_ADD_HIDDEN_NETWORK: "Aggiungi rete nascosta..."
|
||||
STR_ENTER_WIFI_SSID: "Inserisci il nome della rete (SSID)"
|
||||
|
||||
@@ -300,3 +300,5 @@ STR_SCREENSHOT_BUTTON: "Скриншот түсіру"
|
||||
STR_AUTO_TURN_ENABLED: "Автоматты бет аудару қосулы: "
|
||||
STR_AUTO_TURN_PAGES_PER_MIN: "Автоматты бет аудару (минутына бет саны)"
|
||||
STR_TILT_PAGE_TURN: "Еңкейту арқылы бет аудару"
|
||||
STR_ADD_HIDDEN_NETWORK: "Жасырын желіні қосу..."
|
||||
STR_ENTER_WIFI_SSID: "Желі атауын енгізіңіз (SSID)"
|
||||
|
||||
@@ -301,3 +301,5 @@ STR_SCREENSHOT_BUTTON: "Ekrano nuotrauka"
|
||||
STR_AUTO_TURN_ENABLED: "Auto-vertimas: "
|
||||
STR_AUTO_TURN_PAGES_PER_MIN: "Auto-vertimas (psl/min)"
|
||||
STR_TILT_PAGE_TURN: "Puslapio vertimas pakreipiant"
|
||||
STR_ADD_HIDDEN_NETWORK: "Pridėti paslėptą tinklą..."
|
||||
STR_ENTER_WIFI_SSID: "Įveskite tinklo pavadinimą (SSID)"
|
||||
|
||||
@@ -361,3 +361,5 @@ STR_FIRMWARE_WRITE_FAILED: "Zapis oprogramowania nieudany"
|
||||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "Nie wyłączać!"
|
||||
STR_RECOVERY_MODE: "Tryb przywracania"
|
||||
STR_RECOVERY_MODE_HINT: "Umieść firmware.bin w głównym katalogu karty SD i wybierz go"
|
||||
STR_ADD_HIDDEN_NETWORK: "Dodaj ukrytą sieć..."
|
||||
STR_ENTER_WIFI_SSID: "Wprowadź nazwę sieci (SSID)"
|
||||
|
||||
@@ -384,3 +384,5 @@ STR_FIRMWARE_WRITE_FAILED: "Falha na gravação do firmware"
|
||||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "Não desligue o dispositivo!"
|
||||
STR_RECOVERY_MODE: "Modo de Recuperação"
|
||||
STR_RECOVERY_MODE_HINT: "Coloque o arquivo firmware.bin na raiz do cartão SD e selecione-o"
|
||||
STR_ADD_HIDDEN_NETWORK: "Adicionar rede oculta..."
|
||||
STR_ENTER_WIFI_SSID: "Insira o nome da rede (SSID)"
|
||||
|
||||
@@ -304,3 +304,5 @@ STR_SCREENSHOT_BUTTON: "Captură ecran"
|
||||
STR_AUTO_TURN_ENABLED: "Răsfoire automată: "
|
||||
STR_AUTO_TURN_PAGES_PER_MIN: "Pagini pe minut"
|
||||
STR_TILT_PAGE_TURN: "Întoarcere pagină prin înclinare"
|
||||
STR_ADD_HIDDEN_NETWORK: "Adaugă rețea ascunsă..."
|
||||
STR_ENTER_WIFI_SSID: "Introduceți numele rețelei (SSID)"
|
||||
|
||||
@@ -384,3 +384,5 @@ STR_FIRMWARE_WRITE_FAILED: "Ошибка записи прошивки"
|
||||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "Не выключайте питание!"
|
||||
STR_RECOVERY_MODE: "Режим восстановления"
|
||||
STR_RECOVERY_MODE_HINT: "Поместите firmware.bin в корень SD-карты и выберите его"
|
||||
STR_ADD_HIDDEN_NETWORK: "Добавить скрытую сеть..."
|
||||
STR_ENTER_WIFI_SSID: "Введите имя сети (SSID)"
|
||||
|
||||
@@ -380,3 +380,5 @@ STR_FIRMWARE_WRITE_FAILED: "Zápis firmvéru zlyhal"
|
||||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "Nevypínajte zariadenie!"
|
||||
STR_RECOVERY_MODE: "Režim obnovenia"
|
||||
STR_RECOVERY_MODE_HINT: "Umiestnite firmware.bin do koreňového adresára SD karty a vyberte ho"
|
||||
STR_ADD_HIDDEN_NETWORK: "Pridať skrytú sieť..."
|
||||
STR_ENTER_WIFI_SSID: "Zadajte názov siete (SSID)"
|
||||
|
||||
@@ -301,3 +301,5 @@ STR_SCREENSHOT_BUTTON: "Naredi posnetek zaslona"
|
||||
STR_AUTO_TURN_ENABLED: "Samodejno obračanje: "
|
||||
STR_AUTO_TURN_PAGES_PER_MIN: "Samodejno obračanje (strani na minuto)"
|
||||
STR_TILT_PAGE_TURN: "Obračanje s priklonom"
|
||||
STR_ADD_HIDDEN_NETWORK: "Dodaj skrito omrežje..."
|
||||
STR_ENTER_WIFI_SSID: "Vnesite ime omrežja (SSID)"
|
||||
|
||||
@@ -390,3 +390,5 @@ STR_FIRMWARE_WRITE_FAILED: "Falló la escritura del firmware"
|
||||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "¡No apague el dispositivo!"
|
||||
STR_RECOVERY_MODE: "Modo de recuperación"
|
||||
STR_RECOVERY_MODE_HINT: "Ponga firmware.bin en la raíz de la tarj. SD y selecciónelo"
|
||||
STR_ADD_HIDDEN_NETWORK: "Añadir red oculta..."
|
||||
STR_ENTER_WIFI_SSID: "Introduce el nombre de la red (SSID)"
|
||||
|
||||
@@ -387,3 +387,5 @@ STR_FIRMWARE_WRITE_FAILED: "Skrivning till firmware misslyckades"
|
||||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "Stäng inte av!"
|
||||
STR_RECOVERY_MODE: "Återställningsläge"
|
||||
STR_RECOVERY_MODE_HINT: "Placera firmware.bin i SD-kortroten och välj den"
|
||||
STR_ADD_HIDDEN_NETWORK: "Lägg till dolt nätverk..."
|
||||
STR_ENTER_WIFI_SSID: "Ange nätverksnamn (SSID)"
|
||||
|
||||
@@ -304,3 +304,5 @@ STR_SELECTED: "Seçili"
|
||||
STR_SHOW: "Göster"
|
||||
STR_TITLE: "Başlık"
|
||||
STR_TILT_PAGE_TURN: "Eğerek sayfa çevirme"
|
||||
STR_ADD_HIDDEN_NETWORK: "Gizli ağ ekle..."
|
||||
STR_ENTER_WIFI_SSID: "Ağ adını girin (SSID)"
|
||||
|
||||
@@ -381,3 +381,5 @@ STR_FIRMWARE_WRITE_FAILED: "Помилка запису прошивки"
|
||||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "Не вимикайте пристрій!"
|
||||
STR_RECOVERY_MODE: "Режим відновлення"
|
||||
STR_RECOVERY_MODE_HINT: "Помістіть firmware.bin у корінь SD-карти та виберіть його"
|
||||
STR_ADD_HIDDEN_NETWORK: "Додати приховану мережу..."
|
||||
STR_ENTER_WIFI_SSID: "Введіть назву мережі (SSID)"
|
||||
|
||||
@@ -390,3 +390,5 @@ STR_FIRMWARE_WRITE_FAILED: "Ha fallat l'escriptura del firmware"
|
||||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "No apagues el dispositiu!"
|
||||
STR_RECOVERY_MODE: "Mode de recuperació"
|
||||
STR_RECOVERY_MODE_HINT: "Posa firmware.bin a l'arrel de la targeta SD i selecciona'l"
|
||||
STR_ADD_HIDDEN_NETWORK: "Afig una xarxa oculta..."
|
||||
STR_ENTER_WIFI_SSID: "Introduïx el nom de la xarxa (SSID)"
|
||||
|
||||
@@ -380,3 +380,5 @@ STR_FIRMWARE_WRITE_FAILED: "Ghi firmware thất bại"
|
||||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "Không được tắt nguồn!"
|
||||
STR_RECOVERY_MODE: "Chế độ phục hồi"
|
||||
STR_RECOVERY_MODE_HINT: "Đặt firmware.bin ở thư mục gốc thẻ SD rồi chọn"
|
||||
STR_ADD_HIDDEN_NETWORK: "Thêm mạng ẩn..."
|
||||
STR_ENTER_WIFI_SSID: "Nhập tên mạng (SSID)"
|
||||
|
||||
@@ -28,6 +28,7 @@ void WifiSelectionActivity::onEnter() {
|
||||
// Reset state
|
||||
selectedNetworkIndex = 0;
|
||||
networks.clear();
|
||||
realNetworkCount = 0;
|
||||
state = WifiSelectionState::SCANNING;
|
||||
selectedSSID.clear();
|
||||
connectedIP.clear();
|
||||
@@ -114,9 +115,13 @@ void WifiSelectionActivity::processWifiScanResults() {
|
||||
}
|
||||
|
||||
if (scanResult == WIFI_SCAN_FAILED) {
|
||||
networks.clear();
|
||||
realNetworkCount = 0;
|
||||
appendHiddenNetworkEntry();
|
||||
autoConnecting = false;
|
||||
manualNetworkListRequested = false;
|
||||
state = WifiSelectionState::NETWORK_LIST;
|
||||
selectedNetworkIndex = 0;
|
||||
requestUpdate();
|
||||
return;
|
||||
}
|
||||
@@ -158,6 +163,9 @@ void WifiSelectionActivity::processWifiScanResults() {
|
||||
return a.rssi > b.rssi;
|
||||
});
|
||||
|
||||
realNetworkCount = networks.size();
|
||||
appendHiddenNetworkEntry();
|
||||
|
||||
WiFi.scanDelete();
|
||||
|
||||
if (autoConnecting && !manualNetworkListRequested && tryNextSavedNetworkFromScan()) {
|
||||
@@ -171,12 +179,30 @@ void WifiSelectionActivity::processWifiScanResults() {
|
||||
requestUpdate();
|
||||
}
|
||||
|
||||
void WifiSelectionActivity::appendHiddenNetworkEntry() {
|
||||
// Synthetic list entry that lets the user type an SSID that is not broadcast.
|
||||
// ESP32 can join hidden APs as long as the SSID is supplied to WiFi.begin().
|
||||
WifiNetworkInfo placeholder;
|
||||
placeholder.rssi = 0;
|
||||
placeholder.isEncrypted = true; // Treated as encrypted; an empty password still connects open APs
|
||||
placeholder.hasSavedPassword = false;
|
||||
placeholder.isHiddenPlaceholder = true;
|
||||
networks.push_back(std::move(placeholder));
|
||||
}
|
||||
|
||||
void WifiSelectionActivity::selectNetwork(const int index) {
|
||||
if (index < 0 || index >= static_cast<int>(networks.size())) {
|
||||
return;
|
||||
}
|
||||
|
||||
const auto& network = networks[index];
|
||||
|
||||
// Synthetic "Add hidden network..." entry: prompt the user to type the SSID first
|
||||
if (network.isHiddenPlaceholder) {
|
||||
promptHiddenSsid();
|
||||
return;
|
||||
}
|
||||
|
||||
selectedSSID = network.ssid;
|
||||
selectedRequiresPassword = network.isEncrypted;
|
||||
usedSavedPassword = false;
|
||||
@@ -195,27 +221,57 @@ void WifiSelectionActivity::selectNetwork(const int index) {
|
||||
}
|
||||
|
||||
if (selectedRequiresPassword) {
|
||||
// Show password entry
|
||||
state = WifiSelectionState::PASSWORD_ENTRY;
|
||||
// Don't allow screen updates while changing activity
|
||||
startActivityForResult(std::make_unique<KeyboardEntryActivity>(renderer, mappedInput, tr(STR_ENTER_WIFI_PASSWORD),
|
||||
"", // No initial text
|
||||
64, // Max password length
|
||||
InputType::Password),
|
||||
[this](const ActivityResult& result) {
|
||||
if (result.isCancelled) {
|
||||
state = WifiSelectionState::NETWORK_LIST;
|
||||
} else {
|
||||
enteredPassword = std::get<KeyboardResult>(result.data).text;
|
||||
// state will be updated in next loop iteration
|
||||
}
|
||||
});
|
||||
promptPasswordEntry();
|
||||
} else {
|
||||
// Connect directly for open networks
|
||||
attemptConnection();
|
||||
}
|
||||
}
|
||||
|
||||
void WifiSelectionActivity::promptPasswordEntry() {
|
||||
// Show password entry
|
||||
state = WifiSelectionState::PASSWORD_ENTRY;
|
||||
// Don't allow screen updates while changing activity
|
||||
startActivityForResult(std::make_unique<KeyboardEntryActivity>(renderer, mappedInput, tr(STR_ENTER_WIFI_PASSWORD),
|
||||
"", // No initial text
|
||||
64, // Max password length
|
||||
InputType::Password),
|
||||
[this](const ActivityResult& result) {
|
||||
if (result.isCancelled) {
|
||||
state = WifiSelectionState::NETWORK_LIST;
|
||||
} else {
|
||||
enteredPassword = std::get<KeyboardResult>(result.data).text;
|
||||
// state will be updated in next loop iteration
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void WifiSelectionActivity::promptHiddenSsid() {
|
||||
selectedSSID.clear();
|
||||
selectedRequiresPassword = true; // Hidden networks are usually encrypted; empty password still joins open APs
|
||||
usedSavedPassword = false;
|
||||
enteredPassword.clear();
|
||||
autoConnecting = false;
|
||||
|
||||
// Suppress rendering during the activity transition (see render()).
|
||||
state = WifiSelectionState::HIDDEN_SSID_ENTRY;
|
||||
startActivityForResult(std::make_unique<KeyboardEntryActivity>(renderer, mappedInput, tr(STR_ENTER_WIFI_SSID),
|
||||
"", // No initial text
|
||||
32, // Max SSID length (IEEE 802.11: 32 bytes)
|
||||
InputType::Text),
|
||||
[this](const ActivityResult& result) {
|
||||
if (result.isCancelled) {
|
||||
state = WifiSelectionState::NETWORK_LIST;
|
||||
return;
|
||||
}
|
||||
selectedSSID = std::get<KeyboardResult>(result.data).text;
|
||||
if (selectedSSID.empty()) {
|
||||
state = WifiSelectionState::NETWORK_LIST;
|
||||
}
|
||||
// Otherwise stay in HIDDEN_SSID_ENTRY; loop() continues the flow.
|
||||
});
|
||||
}
|
||||
|
||||
bool WifiSelectionActivity::hasAttemptedAutoSsid(const std::string& ssid) const {
|
||||
return std::find(autoAttemptedSsids.begin(), autoAttemptedSsids.end(), ssid) != autoAttemptedSsids.end();
|
||||
}
|
||||
@@ -422,6 +478,22 @@ void WifiSelectionActivity::loop() {
|
||||
return;
|
||||
}
|
||||
|
||||
// Reached once the hidden-network SSID has been entered (and was non-empty).
|
||||
if (state == WifiSelectionState::HIDDEN_SSID_ENTRY) {
|
||||
const auto* savedCred = WIFI_STORE.findCredential(selectedSSID);
|
||||
if (savedCred && !savedCred->password.empty()) {
|
||||
// We already know this hidden network - connect with the saved password
|
||||
enteredPassword = savedCred->password;
|
||||
usedSavedPassword = true;
|
||||
LOG_DBG("WiFi", "Using saved password for hidden network %s", selectedSSID.c_str());
|
||||
attemptConnection();
|
||||
} else {
|
||||
// Prompt for the password (empty password connects to open hidden APs)
|
||||
promptPasswordEntry();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (state == WifiSelectionState::PASSWORD_ENTRY) {
|
||||
// Reach here once password entry finished in subactivity
|
||||
attemptConnection();
|
||||
@@ -582,9 +654,9 @@ std::string WifiSelectionActivity::getSignalStrengthIndicator(const int32_t rssi
|
||||
}
|
||||
|
||||
void WifiSelectionActivity::render(RenderLock&&) {
|
||||
// Don't render if we're in PASSWORD_ENTRY state - we're just transitioning
|
||||
// Don't render if we're in a keyboard-entry state - we're just transitioning
|
||||
// from the keyboard subactivity back to the main activity
|
||||
if (state == WifiSelectionState::PASSWORD_ENTRY) {
|
||||
if (state == WifiSelectionState::PASSWORD_ENTRY || state == WifiSelectionState::HIDDEN_SSID_ENTRY) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -596,7 +668,7 @@ void WifiSelectionActivity::render(RenderLock&&) {
|
||||
|
||||
// Draw header
|
||||
char countStr[32];
|
||||
snprintf(countStr, sizeof(countStr), tr(STR_NETWORKS_FOUND), networks.size());
|
||||
snprintf(countStr, sizeof(countStr), tr(STR_NETWORKS_FOUND), realNetworkCount);
|
||||
GUI.drawHeader(renderer, Rect{screen.x, screen.y + metrics.topPadding, screen.width, metrics.headerHeight},
|
||||
tr(STR_WIFI_NETWORKS), countStr);
|
||||
GUI.drawSubHeader(
|
||||
@@ -614,6 +686,9 @@ void WifiSelectionActivity::render(RenderLock&&) {
|
||||
case WifiSelectionState::NETWORK_LIST:
|
||||
renderNetworkList(&screen, &metrics);
|
||||
break;
|
||||
case WifiSelectionState::HIDDEN_SSID_ENTRY:
|
||||
// Transitioning to/from the SSID keyboard subactivity - nothing to draw
|
||||
break;
|
||||
case WifiSelectionState::CONNECTING:
|
||||
renderConnecting(&screen, &metrics);
|
||||
break;
|
||||
@@ -647,9 +722,17 @@ void WifiSelectionActivity::renderNetworkList(const Rect* screen, const ThemeMet
|
||||
int contentHeight = screen->height - contentTop - metrics->verticalSpacing * 2;
|
||||
GUI.drawList(
|
||||
renderer, Rect{screen->x, contentTop, screen->width, contentHeight}, static_cast<int>(networks.size()),
|
||||
selectedNetworkIndex, [this](int index) { return networks[index].ssid; }, nullptr, nullptr,
|
||||
selectedNetworkIndex,
|
||||
[this](int index) {
|
||||
auto network = networks[index];
|
||||
const auto& network = networks[index];
|
||||
return network.isHiddenPlaceholder ? std::string(tr(STR_ADD_HIDDEN_NETWORK)) : network.ssid;
|
||||
},
|
||||
nullptr, nullptr,
|
||||
[this](int index) {
|
||||
const auto& network = networks[index];
|
||||
if (network.isHiddenPlaceholder) {
|
||||
return std::string();
|
||||
}
|
||||
return std::string(network.hasSavedPassword ? "+ " : "") + (network.isEncrypted ? "* " : "") +
|
||||
getSignalStrengthIndicator(network.rssi);
|
||||
});
|
||||
|
||||
@@ -18,7 +18,8 @@ struct WifiNetworkInfo {
|
||||
std::string ssid;
|
||||
int32_t rssi;
|
||||
bool isEncrypted;
|
||||
bool hasSavedPassword; // Whether we have saved credentials for this network
|
||||
bool hasSavedPassword; // Whether we have saved credentials for this network
|
||||
bool isHiddenPlaceholder = false; // Synthetic "Add hidden network..." list entry
|
||||
};
|
||||
|
||||
// WiFi selection states
|
||||
@@ -26,6 +27,7 @@ enum class WifiSelectionState {
|
||||
AUTO_CONNECTING, // Trying to connect to the last known network
|
||||
SCANNING, // Scanning for networks
|
||||
NETWORK_LIST, // Displaying available networks
|
||||
HIDDEN_SSID_ENTRY, // Entering SSID for a hidden network
|
||||
PASSWORD_ENTRY, // Entering password for selected network
|
||||
CONNECTING, // Attempting to connect
|
||||
CONNECTED, // Successfully connected
|
||||
@@ -51,6 +53,8 @@ class WifiSelectionActivity final : public Activity {
|
||||
WifiSelectionState state = WifiSelectionState::SCANNING;
|
||||
size_t selectedNetworkIndex = 0;
|
||||
std::vector<WifiNetworkInfo> networks;
|
||||
// Number of real (scanned) networks, excluding the synthetic hidden-network entry
|
||||
size_t realNetworkCount = 0;
|
||||
|
||||
// Selected network for connection
|
||||
std::string selectedSSID;
|
||||
@@ -100,7 +104,10 @@ class WifiSelectionActivity final : public Activity {
|
||||
|
||||
void startWifiScan(bool autoScan = false);
|
||||
void processWifiScanResults();
|
||||
void appendHiddenNetworkEntry();
|
||||
void selectNetwork(int index);
|
||||
void promptHiddenSsid();
|
||||
void promptPasswordEntry();
|
||||
void attemptConnection();
|
||||
void checkConnectionStatus();
|
||||
bool tryAutoConnectCredential(const WifiCredential& cred);
|
||||
|
||||
Reference in New Issue
Block a user