From 0b580f31f2bc6ccc0880f51a6afb30f8ce61edb5 Mon Sep 17 00:00:00 2001 From: mrdude2478 Date: Sun, 24 Sep 2023 02:45:37 +0100 Subject: [PATCH] theme stuff added --- include/ui/MainApplication.hpp | 2 + include/util/config.hpp | 1 + romfs/lang/de.json | 14 +++- romfs/lang/en.json | 28 ++++--- romfs/lang/es.json | 14 +++- romfs/lang/fr.json | 14 +++- romfs/lang/it.json | 14 +++- romfs/lang/jp.json | 14 +++- romfs/lang/ru.json | 14 +++- romfs/lang/tw.json | 14 +++- source/ui/MainApplication.cpp | 2 + source/ui/optionsPage.cpp | 136 ++++++++++++++++++++------------- source/util/config.cpp | 4 + 13 files changed, 194 insertions(+), 77 deletions(-) diff --git a/include/ui/MainApplication.hpp b/include/ui/MainApplication.hpp index cf5dfa9..da20a63 100644 --- a/include/ui/MainApplication.hpp +++ b/include/ui/MainApplication.hpp @@ -2,6 +2,7 @@ #include #include "ui/mainPage.hpp" #include "ui/netInstPage.hpp" +#include "ui/ThemeInstPage.hpp" #include "ui/sdInstPage.hpp" #include "ui/HDInstPage.hpp" #include "ui/usbInstPage.hpp" @@ -16,6 +17,7 @@ namespace inst::ui { void OnLoad() override; MainPage::Ref mainPage; netInstPage::Ref netinstPage; + ThemeInstPage::Ref ThemeinstPage; sdInstPage::Ref sdinstPage; HDInstPage::Ref HDinstPage; usbInstPage::Ref usbinstPage; diff --git a/include/util/config.hpp b/include/util/config.hpp index 4b8d759..e67abb1 100644 --- a/include/util/config.hpp +++ b/include/util/config.hpp @@ -11,6 +11,7 @@ namespace inst::config { extern std::string sigPatchesUrl; extern std::string httpIndexUrl; extern std::string httplastUrl; + extern std::string httplastUrl2; extern std::vector updateInfo; extern int languageSetting; extern bool ignoreReqVers; diff --git a/romfs/lang/de.json b/romfs/lang/de.json index 808fa7d..dbee1c4 100644 --- a/romfs/lang/de.json +++ b/romfs/lang/de.json @@ -52,8 +52,10 @@ }, "url": { "hint": "Gib eine URL zu einer Datei ein", + "hint_theme": "Enter a valid address to download a theme", "invalid": "Die eingegebene URL ist ungültig", "nolinks": "No XCI, XCZ, NSP, NSZ links found!\nDid you use the correct URL?", + "no_themes": "No themes found!\nDid you use the correct URL?", "source_string": " per URL", "listwait": "Das Auffüllen der Liste über eine URL kann einige Zeit dauern.\nDas Standardlimit der Liste ist absichtlich auf eingestellt ", "listwait2": " artikel.\nDrücken Sie OK, um die Liste zu laden." @@ -66,14 +68,19 @@ "sd": "Freier Speicherplatz auf der SD-Karte: ", "nand": "Freier Speicherplatz auf NAND: ", "index_error": "Keine Spiele gefunden!", + "theme_error": "No themes found!", "index_error_info": "Hast du die richtige URL eingegeben?", + "theme_error_info": "Did you enter the correct theme server source URL in the config page?", "top_info": "Wähle Dateien zur Installation vom Server aus und drücke dann \ue0b3 !", + "theme_top_info": "Select which theme you want to install, then press the \ue0ef button!", "top_info1": "Warte auf eine Verbindung... Die IP Adresse deiner Switch ist: ", "failed": "Ferninstallation fehlgeschlagen!", "transfer_interput": "Bei der Dateiübertragung ist ein Fehler aufgetreten.", "source_string": " über das Netzwerk", "buttons": "\ue0e3 Installation über das Internet \ue0e2 Hilfe \ue0e1 Abbrechen", - "buttons1": "\ue0e0 Datei auswählen \ue0e3 Alle auswählen \ue0ef Datei(en) installieren \ue0e1 Abbrechen" + "buttons1": "\ue0e0 Datei auswählen \ue0e3 Alle auswählen \ue0ef Datei(en) installieren \ue0e1 Abbrechen", + "buttons2": "\ue0e0 Select File \ue0ef Install File \ue0e1 Cancel", + "please_wait": "Please wait - I'm trying to connect to the server!" }, "sd": { "help": { @@ -184,9 +191,12 @@ "usehttpkeyboard": "Verwenden Sie die Tastatur während der Installation des HTTP-Servers", "sig_url": "Signatur Patches URL: ", "http_url": "Quell-URL des HTTP-Servers: ", + "theme_url": "Theme server source URL: ", "language": "Sprache: ", "check_update": "Suche nach Updates für TinWoo Installer", - "credits": "Danksagung" + "credits": "Danksagung", + "theme_menu": "Download themes", + "theme_fail": "Did you enter a correct theme URL?" }, "nca_warn": { "title": "Warnung!", diff --git a/romfs/lang/en.json b/romfs/lang/en.json index 5195667..6dea00a 100644 --- a/romfs/lang/en.json +++ b/romfs/lang/en.json @@ -52,8 +52,10 @@ }, "url": { "hint": "Enter the Internet address of a file", + "hint_theme": "Enter a valid address to download a theme", "invalid": "The URL specified is invalid!", "nolinks": "No XCI, XCZ, NSP, NSZ links found!\nDid you use the correct URL?", + "no_themes": "No themes found!\nDid you use the correct URL?", "source_string": " from URL", "listwait": "Populating the list from a url can take some time.\nThe list default limit is purposely set to ", "listwait2": " items.\nPress OK to load the list." @@ -66,21 +68,26 @@ "sd": "Free space on sd card: ", "nand": "Free space on nand: ", "index_error": "No games found!", + "theme_error": "No themes found!", "index_error_info": "Did you enter the correct HTTP server source URL in the config page?", - "top_info": "Select what files you want to install from the server, then press the Plus button!", + "theme_error_info": "Did you enter the correct theme server source URL in the config page?", + "top_info": "Select which files you want to install from the server, then press the \ue0ef button!", + "theme_top_info": "Select which theme you want to install, then press the \ue0ef button!", "top_info1": "Waiting for a connection... Your Switch's IP Address is: ", "failed": "Failed to perform remote install!", "transfer_interput": "An error occured during data transfer. Check your network connection.", "source_string": " over a network", "buttons": "\ue0e3 Install Over Internet \ue0f0 Install From HTTP Directory \ue0e2 Help \ue0e1 Cancel", - "buttons1": "\ue0e0 Select File \ue0e3 Select All \ue0ef Install File(s) \ue0e1 Cancel" + "buttons1": "\ue0e0 Select File \ue0e3 Select All \ue0ef Install File(s) \ue0e1 Cancel", + "buttons2": "\ue0e0 Select File \ue0ef Install File \ue0e1 Cancel", + "please_wait": "Please wait - I'm trying to connect to the server!" }, "sd": { "help": { "title": "Help", - "desc": "Copy your NSP, NSZ, XCI, or XCZ files to your SD card, browse to and\nselect the ones you want to install, then press the Plus button." + "desc": "Copy your NSP, NSZ, XCI, or XCZ files to your SD card, browse to and\nselect the ones you want to install, then press the \ue0ef button." }, - "top_info": "Select what files you want to install, then press the Plus button!", + "top_info": "Select what files you want to install, then press the \ue0ef button!", "source_string": " from SD card", "delete_info": "installed, Delete it from the SD card?", "delete_info_multi": " files installed successfully!\n\nDelete them from the SD card?", @@ -90,9 +97,9 @@ "hd": { "help": { "title": "Help", - "desc": "Copy your NSP, NSZ, XCI, or XCZ files to your hard drive, browse to and\nselect the ones you want to install, then press the Plus button." + "desc": "Copy your NSP, NSZ, XCI, or XCZ files to your hard drive, browse to and\nselect the ones you want to install, then press the \ue0ef button." }, - "top_info": "Select the files you want to install, then press the Plus button!", + "top_info": "Select the files you want to install, then press the \ue0ef button!", "source_string": " from hard drive", "delete_info": " installed\nDelete it from the hard drive?", "delete_info_multi": " files installed successfully!\nDelete them from the hard drive?", @@ -105,7 +112,7 @@ "desc": "Files can be installed over USB from other devices using tools such as\nNS-USBloader in Tinfoil mode. To send files to your Switch, open one of\nthese pieces of software on your PC, select your files, then upload to\nyour console!\n\nUnfortunately USB installations require a specific setup on some\nplatforms, and can be rather buggy at times. If you can't figure it out,\ngive LAN/internet installs a try, or copy your files to your SD card and\ntry the \"Install from SD Card\" option on the main menu!" }, "top_info": "USB connection successful! Waiting for list of files to be sent...", - "top_info2": "Select what files you want to install over USB, then press the Plus button!", + "top_info2": "Select what files you want to install over USB, then press the \ue0ef button!", "error": "USB transfer timed out or failed", "source_string": " over USB", "buttons": "\ue0e2 (Hold) Help \ue0e1 (Hold) Cancel", @@ -183,10 +190,13 @@ "listoveride": "Disable URL list warning and file limit", "usehttpkeyboard": "Use keyboard during http server installs", "sig_url": "Signature patches source URL: ", - "http_url": "Http server source URL: ", + "http_url": "Network server source URL: ", + "theme_url": "Theme server source URL: ", "language": "Language: ", "check_update": "Check for updates to TinWoo Installer", - "credits": "Credits" + "credits": "Credits", + "theme_menu": "Download themes", + "theme_fail": "Did you enter a correct theme URL?" }, "nca_warn": { "title": "Warning!", diff --git a/romfs/lang/es.json b/romfs/lang/es.json index 1a0e1ae..567269d 100644 --- a/romfs/lang/es.json +++ b/romfs/lang/es.json @@ -52,8 +52,10 @@ }, "url": { "hint": "Ingrese el URL de un archivo", + "hint_theme": "Enter a valid address to download a theme", "invalid": "¡El URL especificado no es válido!", "nolinks": "No se eoncontraron archivos XCI, XCZ, NSP, NSZ!\n¿Utilizaste el URL correcto?", + "no_themes": "No themes found!\nDid you use the correct URL?", "source_string": "desde el URL", "listwait": "Generar el listado desde un URL puede tomar algún tiempo.\nSe ha configurado por defecto un límite de ", "listwait2": " elementos.\nPresione Press Aceptar para cargar la lista." @@ -66,14 +68,19 @@ "sd": "Espacio libre en la tarjeta SD: ", "nand": "Espacio libre en memoria (Emu)NAND: ", "index_error": "¡No se encontraron juegos!", + "theme_error": "No themes found!", "index_error_info": "¿Escribiste el URL correcto?", + "theme_error_info": "Did you enter the correct theme server source URL in the config page?", "top_info": "¡Selecciona qué archivos quieres instalar desde el servidor, luego presiona el botón \ue0ef!", "top_info1": "Esperando conexión... La dirección IP de su Switch es: ", + "theme_top_info": "Select which theme you want to install, then press the \ue0ef button!", "failed": "¡Error al realizar la instalación remota!", "transfer_interput": "Ocurrió un error durante la transferencia de datos. Verifica tu conexión de red.", "source_string": "a través de la red local", "buttons": "\ue0e3 Instalar a través de Internet \ue0f0 Instalar desde el directorio HTTP \ue0e2 Ayuda \ue0e1 Cancelar", - "buttons1": "\ue0e0 Seleccionar archivo \ue0e3 Seleccionar todo \ue0ef Instalar archivo(s) \ue0e1 Cancelar" + "buttons1": "\ue0e0 Seleccionar archivo \ue0e3 Seleccionar todo \ue0ef Instalar archivo(s) \ue0e1 Cancelar", + "buttons2": "\ue0e0 Select File \ue0ef Install File \ue0e1 Cancel", + "please_wait": "Please wait - I'm trying to connect to the server!" }, "sd": { "help": { @@ -184,9 +191,12 @@ "usehttpkeyboard": "Utilizar teclado durante instalaciones vía servidor HTTP", "sig_url": "URL de origen para descargar SigPatches: ", "http_url": "URL para servidor origen HTTP: ", + "theme_url": "Theme server source URL: ", "language": "Idioma: ", "check_update": "Buscar actualizaciones de TinWoo Installer", - "credits": "Créditos" + "credits": "Créditos", + "theme_menu": "Download themes", + "theme_fail": "Did you enter a correct theme URL?" }, "nca_warn": { "title": "¡Advertencia!", diff --git a/romfs/lang/fr.json b/romfs/lang/fr.json index a81077d..da6f208 100644 --- a/romfs/lang/fr.json +++ b/romfs/lang/fr.json @@ -52,8 +52,10 @@ }, "url": { "hint": "Entrez l'URL d'un fichier", + "hint_theme": "Enter a valid address to download a theme", "invalid": "L'URL spécifiée n'est pas valide !", "nolinks": "Aucun lien XCI, XCZ, NSP, NSZ trouvé !\nAvez-vous utilisé la bonne URL ?", + "no_themes": "No themes found!\nDid you use the correct URL?", "source_string": " à partir d'un URL", "listwait": "Remplir la liste à partir d'une URL peut prendre un certain temps.\nLa limite par défaut de la liste est volontairement définie sur ", "listwait2": " articles.\nAppuyez sur OK pour charger la liste." @@ -66,14 +68,19 @@ "sd": "Espace libre sur la carte SD: ", "nand": "Espace libre sur la NAND: ", "index_error": "Aucun jeu trouvé!", + "theme_error": "No themes found!", "index_error_info": "Avez vous tapez une url correcte?", + "theme_error_info": "Did you enter the correct theme server source URL in the config page?", "top_info": "Sélectionnez les fichiers que vous voulez installer à partir du serveur, puis appuyez sur le bouton Plus !", + "theme_top_info": "Select which theme you want to install, then press the \ue0ef button!", "top_info1": "En attente d'une connexion... L'adresse IP de votre switch est : ", "failed": "Echec de l'installation à distance !", "transfer_interput": "Une erreur s'est produite pendant le transfert des données. Vérifiez votre connexion réseau.", "source_string": " à partir d'un réeseau", "buttons": "\ue0e3 Installer via Internet \ue0e2 Aide \ue0e1 Annuler", - "buttons1": "\ue0e0 Sélectionnez un fichier \ue0e3 Tout sélectionner \ue0ef Installer un/des fichier(s) \ue0e1 Annuler" + "buttons1": "\ue0e0 Sélectionnez un fichier \ue0e3 Tout sélectionner \ue0ef Installer un/des fichier(s) \ue0e1 Annuler", + "buttons2": "\ue0e0 Select File \ue0ef Install File \ue0e1 Cancel", + "please_wait": "Please wait - I'm trying to connect to the server!" }, "sd": { "help": { @@ -184,9 +191,12 @@ "usehttpkeyboard": "Utiliser le clavier lors des installations du serveur http", "sig_url": "Patchs de signatures URL: ", "http_url": "URL source du serveur HTTP: ", + "theme_url": "Theme server source URL: ", "language": "Langue: ", "check_update": "Vérifiez les mises à jour de l'installateur TinWoo", - "credits": "Crédits" + "credits": "Crédits", + "theme_menu": "Download themes", + "theme_fail": "Did you enter a correct theme URL?" }, "nca_warn": { "title": "Avertissement!", diff --git a/romfs/lang/it.json b/romfs/lang/it.json index 33b75d1..a29b444 100644 --- a/romfs/lang/it.json +++ b/romfs/lang/it.json @@ -52,8 +52,10 @@ }, "url": { "hint": "Inserisci l'URL del file", + "hint_theme": "Enter a valid address to download a theme", "invalid": "L'URL specificato non è valido!", "nolinks": "Nessun collegamento XCI, XCZ, NSP, NSZ trovato!\nHai utilizzato l'URL corretto?", + "no_themes": "No themes found!\nDid you use the correct URL?", "source_string": " da URL", "listwait": "Compilare l'elenco da un URL può richiedere del tempo.\nIl limite predefinito dell'elenco è impostato di proposito su", "listwait2": " elementi.\nPremere OK per caricare l'elenco." @@ -66,14 +68,19 @@ "sd": "Spazio libero sulla scheda SD: ", "nand": "Spazio libero sulla NAND: ", "index_error": "Nessun gioco trovato!", + "theme_error": "No themes found!", "index_error_info": "Hai inserito l'URL di origine del server HTTP corretto nella pagina di configurazione?", + "theme_error_info": "Did you enter the correct theme server source URL in the config page?", "top_info": "Seleziona quali file vuoi installare dal server, poi premi il tasto Più!", + "theme_top_info": "Select which theme you want to install, then press the \ue0ef button!", "top_info1": "Aspettando una connnessione... L'indirizzo IP è: ", "failed": "Impossibile eseguire l'installazione remota!", "transfer_interput": "Si è verificato un errore durante il trasferimento dei dati. Controlla la tua connessione.", "source_string": " via rete", "buttons": "\ue0e3 Installa via internet \ue0e2 Aiuto \ue0e1 Annulla", - "buttons1": "\ue0e0 Seleziona File \ue0e3 Seleziona tutto \ue0ef Installa i File \ue0e1 Annulla" + "buttons1": "\ue0e0 Seleziona File \ue0e3 Seleziona tutto \ue0ef Installa i File \ue0e1 Annulla", + "buttons2": "\ue0e0 Select File \ue0ef Install File \ue0e1 Cancel", + "please_wait": "Please wait - I'm trying to connect to the server!" }, "sd": { "help": { @@ -184,9 +191,12 @@ "usehttpkeyboard": "Utilizzare la tastiera durante le installazioni del server http", "sig_url": "Fonte URL SigPatches: ", "http_url": "URL di origine del server HTTP: ", + "theme_url": "Theme server source URL: ", "language": "Lingua: ", "check_update": "Controlla aggiornamenti di TinWoo Installer ora", - "credits": "Crediti" + "credits": "Crediti", + "theme_menu": "Download themes", + "theme_fail": "Did you enter a correct theme URL?" }, "nca_warn": { "title": "Attenzione!", diff --git a/romfs/lang/jp.json b/romfs/lang/jp.json index 7467ed6..24edd50 100644 --- a/romfs/lang/jp.json +++ b/romfs/lang/jp.json @@ -52,8 +52,10 @@ }, "url": { "hint": "ファイルのインターネットアドレスを入力してください", + "hint_theme": "Enter a valid address to download a theme", "invalid": "指定されたURLは無効です!", "nolinks": "XCI、XCZ、NSP、NSZ リンクが見つかりません。\n正しい URL を使用しましたか?", + "no_themes": "No themes found!\nDid you use the correct URL?", "source_string": " URLから", "listwait": "URL からリストにデータを入力するには時間がかかる場合があります.\nリストのデフォルト制限は意図的に次のように設定されています。 ", "listwait2": " アイテム.\nOKを押してリストをロードします." @@ -66,14 +68,19 @@ "sd": "SDカードの空き容量: ", "nand": "nandの空き容量: ", "index_error": "該当するゲームがありません!", + "theme_error": "No themes found!", "index_error_info": "正しいURLを入力しましたか?", + "theme_error_info": "Did you enter the correct theme server source URL in the config page?", "top_info": "サーバーからインストールするファイルを選択し、+ボタンを押してください!", + "theme_top_info": "Select which theme you want to install, then press the \ue0ef button!", "top_info1": "接続を待機しています...スイッチのIPアドレスは次のとおりです。: ", "failed": "リモートインストールを実行できませんでした!", "transfer_interput": "データ転送中にエラーが発生しました。ネットワーク接続を確認してください。", "source_string": " ローカルネットワーク経由", "buttons": "\ue0e3 インターネット経由でインストールする \ue0e2 ヘルプ \ue0e1 キャンセル", - "buttons1": "\ue0e0 ファイルを選択 \ue0e3 すべて選択 \ue0ef ファイルをインストール \ue0e1 キャンセル" + "buttons1": "\ue0e0 ファイルを選択 \ue0e3 すべて選択 \ue0ef ファイルをインストール \ue0e1 キャンセル", + "buttons2": "\ue0e0 Select File \ue0ef Install File \ue0e1 Cancel", + "please_wait": "Please wait - I'm trying to connect to the server!" }, "sd": { "help": { @@ -184,9 +191,12 @@ "usehttpkeyboard": "httpサーバーのインストール中にキーボードを使用する", "sig_url": "署名パッチのソースURL: ", "http_url": "HTTPサーバーのソースURL: ", + "theme_url": "Theme server source URL: ", "language": "言語: ", "check_update": "TinWoo Installerのアップデートを確認", - "credits": "クレジット" + "credits": "クレジット", + "theme_menu": "Download themes", + "theme_fail": "Did you enter a correct theme URL?" }, "nca_warn": { "title": "警告!", diff --git a/romfs/lang/ru.json b/romfs/lang/ru.json index da05492..0657256 100644 --- a/romfs/lang/ru.json +++ b/romfs/lang/ru.json @@ -52,8 +52,10 @@ }, "url": { "hint": "Укажите ссылку на файл", + "hint_theme": "Enter a valid address to download a theme", "invalid": "Указан неверный URL!", "nolinks": "Ссылки XCI, XCZ, NSP, NSZ не найдены!\nВы использовали правильный URL?", + "no_themes": "No themes found!\nDid you use the correct URL?", "source_string": " из URL", "listwait": "Заполнение списка по URL-адресу может занять некоторое время.\nОграничение списка по умолчанию намеренно установлено на", "listwait2": " элементы.\nНажмите ОК, чтобы загрузить список." @@ -66,14 +68,19 @@ "sd": "Свободное место на SD-карте:", "nand": "Свободное место на NAND:", "index_error": "Игры не найдены!", + "theme_error": "No themes found!", "index_error_info": "Вы ввели правильный URL-адрес источника HTTP-сервера на странице конфигурации?", + "theme_error_info": "Did you enter the correct theme server source URL in the config page?", "top_info": "Выберите какие файлы вы хотите установить из сервера и нажмите \"+\"!", + "theme_top_info": "Select which theme you want to install, then press the \ue0ef button!", "top_info1": "Ожидание подключения... IP-адрес вашего Switch: ", "failed": "Не удалось выполнить установку из удалённого источника!", "transfer_interput": "Во время передачи возникла ошибка. Проверьте ваши настройки сети.", "source_string": " по локальной сети", "buttons": "\ue0e3 Установка через интернет \ue0e2 Помощь \ue0e1 Отмена", - "buttons1": "\ue0e0 Выбрать файл \ue0e3 Выбрать всё \ue0ef Установить файл(ы) \ue0e1 Отмена" + "buttons1": "\ue0e0 Выбрать файл \ue0e3 Выбрать всё \ue0ef Установить файл(ы) \ue0e1 Отмена", + "buttons2": "\ue0e0 Select File \ue0ef Install File \ue0e1 Cancel", + "please_wait": "Please wait - I'm trying to connect to the server!" }, "sd": { "help": { @@ -184,9 +191,12 @@ "usehttpkeyboard": "Используйте клавиатуру во время установки http-сервера", "sig_url": "URL для скачивания Signature patches: ", "http_url": "URL-адрес источника HTTP-сервера:", + "theme_url": "Theme server source URL: ", "language": "Язык: ", "check_update": "Проверить наличие обновлений TinWoo Installer", - "credits": "Благодарности" + "credits": "Благодарности", + "theme_menu": "Download themes", + "theme_fail": "Did you enter a correct theme URL?" }, "nca_warn": { "title": "Внимание!", diff --git a/romfs/lang/tw.json b/romfs/lang/tw.json index dc045b0..e2898ad 100644 --- a/romfs/lang/tw.json +++ b/romfs/lang/tw.json @@ -53,7 +53,9 @@ "url": { "hint": "請輸入檔案的URL網路位址", "invalid": "URL網路位址無效!", + "hint_theme": "Enter a valid address to download a theme", "nolinks": "未找到 XCI、XCZ、NSP、NSZ 鏈接!\n您使用的 URL 是否正確?", + "no_themes": "No themes found!\nDid you use the correct URL?", "source_string": "來源為URL", "listwait": "從 url 填充列表可能需要一些時間。\n列表默認限制特意設置為", "listwait2": " 項目。\n按“確定”加載列表。" @@ -66,14 +68,19 @@ "sd": "SD 卡上的可用空間:", "nand": "nand 上的可用空間:", "index_error": "沒有找到遊戲!", + "theme_error": "No themes found!", "index_error_info": "您是否在配置頁面中輸入了正確的 HTTP 服務器源 URL?", + "theme_error_info": "Did you enter the correct theme server source URL in the config page?", "top_info": "選定要從伺服器安裝的檔案後,請按+鈕", + "theme_top_info": "Select which theme you want to install, then press the \ue0ef button!", "top_info1": "正在等待連線中... 你的Switch主機IP是: ", "failed": "遠端安裝失敗!", "transfer_interput": "檔案傳輸時發生錯誤,請檢查網路連線狀態是否正常", "source_string": " 透過區網進行安裝", "buttons": "\ue0e3 透過網路安裝 \ue0e2 說明 \ue0e1 取消", - "buttons1": "\ue0e0 選擇檔案 \ue0e3 全選 \ue0ef 安裝所選的檔案 \ue0e1 取消" + "buttons1": "\ue0e0 選擇檔案 \ue0e3 全選 \ue0ef 安裝所選的檔案 \ue0e1 取消", + "buttons2": "\ue0e0 Select File \ue0ef Install File \ue0e1 Cancel", + "please_wait": "Please wait - I'm trying to connect to the server!" }, "sd": { "help": { @@ -184,9 +191,12 @@ "usehttpkeyboard": "在 http 服務器安裝期間使用鍵盤", "sig_url": "簽名修補程式來源URL: ", "http_url": "HTTP服務器源URL:", + "theme_url": "Theme server source URL: ", "language": "介面語系: ", "check_update": "檢查Tinwoo Installer的更新版本", - "credits": "感謝名單" + "credits": "感謝名單", + "theme_menu": "Download themes", + "theme_fail": "Did you enter a correct theme URL?" }, "nca_warn": { "title": "注意!", diff --git a/source/ui/MainApplication.cpp b/source/ui/MainApplication.cpp index fe56d48..eee8905 100644 --- a/source/ui/MainApplication.cpp +++ b/source/ui/MainApplication.cpp @@ -11,6 +11,7 @@ namespace inst::ui { this->mainPage = MainPage::New(); this->netinstPage = netInstPage::New(); + this->ThemeinstPage = ThemeInstPage::New(); this->sdinstPage = sdInstPage::New(); this->HDinstPage = HDInstPage::New(); this->usbinstPage = usbInstPage::New(); @@ -18,6 +19,7 @@ namespace inst::ui { this->optionspage = optionsPage::New(); this->mainPage->SetOnInput(std::bind(&MainPage::onInput, this->mainPage, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)); this->netinstPage->SetOnInput(std::bind(&netInstPage::onInput, this->netinstPage, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)); + this->ThemeinstPage->SetOnInput(std::bind(&ThemeInstPage::onInput, this->ThemeinstPage, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)); this->sdinstPage->SetOnInput(std::bind(&sdInstPage::onInput, this->sdinstPage, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)); this->HDinstPage->SetOnInput(std::bind(&HDInstPage::onInput, this->HDinstPage, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)); this->usbinstPage->SetOnInput(std::bind(&usbInstPage::onInput, this->usbinstPage, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)); diff --git a/source/ui/optionsPage.cpp b/source/ui/optionsPage.cpp index ea3cf26..0dbf957 100644 --- a/source/ui/optionsPage.cpp +++ b/source/ui/optionsPage.cpp @@ -159,11 +159,6 @@ namespace inst::ui { autoUpdateOption->SetIcon(this->getMenuOptionIcon(inst::config::autoUpdate)); this->menu->AddItem(autoUpdateOption); - auto useThemeOption = pu::ui::elm::MenuItem::New("options.menu_items.theme_option"_lang); - useThemeOption->SetColor(COLOR("#FFFFFFFF")); - useThemeOption->SetIcon(this->getMenuOptionIcon(inst::config::useTheme)); - this->menu->AddItem(useThemeOption); - auto useSoundOption = pu::ui::elm::MenuItem::New("options.menu_items.useSound"_lang); useSoundOption->SetColor(COLOR("#FFFFFFFF")); useSoundOption->SetIcon(this->getMenuOptionIcon(inst::config::useSound)); @@ -183,6 +178,23 @@ namespace inst::ui { httpkeyboard->SetColor(COLOR("#FFFFFFFF")); httpkeyboard->SetIcon(this->getMenuOptionIcon(inst::config::httpkeyboard)); this->menu->AddItem(httpkeyboard); + + auto useThemeOption = pu::ui::elm::MenuItem::New("options.menu_items.theme_option"_lang); + useThemeOption->SetColor(COLOR("#FFFFFFFF")); + useThemeOption->SetIcon(this->getMenuOptionIcon(inst::config::useTheme)); + this->menu->AddItem(useThemeOption); + + auto ThemeMenuOption = pu::ui::elm::MenuItem::New("options.menu_items.theme_menu"_lang); + ThemeMenuOption->SetColor(COLOR("#FFFFFFFF")); + ThemeMenuOption->SetIcon("romfs:/images/icons/thememenu.png"); + this->menu->AddItem(ThemeMenuOption); + + // + auto ThemeUrlOption = pu::ui::elm::MenuItem::New("options.menu_items.theme_url"_lang + inst::util::shortenString(inst::config::httplastUrl2, 42, false)); + ThemeUrlOption->SetColor(COLOR("#FFFFFFFF")); + ThemeUrlOption->SetIcon("romfs:/images/icons/themeurl.png"); + this->menu->AddItem(ThemeUrlOption); + // auto SigPatch = pu::ui::elm::MenuItem::New("main.menu.sig"_lang); SigPatch->SetColor(COLOR("#FFFFFFFF")); @@ -291,6 +303,50 @@ namespace inst::ui { this->menu->SetSelectedIndex(index); break; case 5: + if (inst::config::useSound) { + inst::config::useSound = false; + } + else { + inst::config::useSound = true; + } + this->setMenuText(); + this->menu->SetSelectedIndex(index); + inst::config::setConfig(); + break; + case 6: + if (inst::config::fixticket) { + inst::config::fixticket = false; + } + else { + inst::config::fixticket = true; + } + this->setMenuText(); + this->menu->SetSelectedIndex(index); + inst::config::setConfig(); + break; + case 7: + if (inst::config::listoveride) { + inst::config::listoveride = false; + } + else { + inst::config::listoveride = true; + } + this->setMenuText(); + this->menu->SetSelectedIndex(index); + inst::config::setConfig(); + break; + case 8: + if (inst::config::httpkeyboard) { + inst::config::httpkeyboard = false; + } + else { + inst::config::httpkeyboard = true; + } + this->setMenuText(); + this->menu->SetSelectedIndex(index); + inst::config::setConfig(); + break; + case 9: if (inst::config::useTheme) { mainApp->mainPage->awooImage->SetVisible(true); } @@ -302,54 +358,26 @@ namespace inst::ui { this->setMenuText(); this->menu->SetSelectedIndex(index); break; - case 6: - if (inst::config::useSound) { - inst::config::useSound = false; - } - else { - inst::config::useSound = true; - } - this->setMenuText(); - this->menu->SetSelectedIndex(index); - inst::config::setConfig(); - break; - case 7: - if (inst::config::fixticket) { - inst::config::fixticket = false; - } - else { - inst::config::fixticket = true; - } - this->setMenuText(); - this->menu->SetSelectedIndex(index); - inst::config::setConfig(); - break; - case 8: - if (inst::config::listoveride) { - inst::config::listoveride = false; - } - else { - inst::config::listoveride = true; - } - this->setMenuText(); - this->menu->SetSelectedIndex(index); - inst::config::setConfig(); - break; - case 9: - if (inst::config::httpkeyboard) { - inst::config::httpkeyboard = false; - } - else { - inst::config::httpkeyboard = true; - } - this->setMenuText(); - this->menu->SetSelectedIndex(index); - inst::config::setConfig(); - break; case 10: - sigPatchesMenuItem_Click(); + if (inst::util::getIPAddress() == "1.0.0.127") { + inst::ui::mainApp->CreateShowDialog("main.net.title"_lang, "main.net.desc"_lang, { "common.ok"_lang }, true, "romfs:/images/icons/information.png"); + break; + } + mainApp->ThemeinstPage->startNetwork(); break; case 11: + keyboardResult = inst::util::softwareKeyboard("inst.net.url.hint"_lang, inst::config::httplastUrl2.c_str(), 500); + if (keyboardResult.size() > 0) { + inst::config::httplastUrl2 = keyboardResult; + inst::config::setConfig(); + this->setMenuText(); + this->menu->SetSelectedIndex(index); + } + break; + case 12: + sigPatchesMenuItem_Click(); + break; + case 13: keyboardResult = inst::util::softwareKeyboard("options.sig_hint"_lang, inst::config::sigPatchesUrl.c_str(), 500); if (keyboardResult.size() > 0) { inst::config::sigPatchesUrl = keyboardResult; @@ -358,7 +386,7 @@ namespace inst::ui { this->menu->SetSelectedIndex(index); } break; - case 12: + case 14: keyboardResult = inst::util::softwareKeyboard("inst.net.url.hint"_lang, inst::config::httpIndexUrl.c_str(), 500); if (keyboardResult.size() > 0) { inst::config::httpIndexUrl = keyboardResult; @@ -367,7 +395,7 @@ namespace inst::ui { this->menu->SetSelectedIndex(index); } break; - case 13: + case 15: languageList = languageStrings; languageList[0] = "options.language.system_language"_lang; //replace "sys" with local language string rc = inst::ui::mainApp->CreateShowDialog("options.language.title"_lang, "options.language.desc"_lang, languageList, false, flag); @@ -407,7 +435,7 @@ namespace inst::ui { mainApp->FadeOut(); mainApp->Close(); break; - case 14: + case 16: if (inst::util::getIPAddress() == "1.0.0.127") { inst::ui::mainApp->CreateShowDialog("main.net.title"_lang, "main.net.desc"_lang, { "common.ok"_lang }, true, "romfs:/images/icons/update.png"); break; @@ -419,7 +447,7 @@ namespace inst::ui { } this->askToUpdate(downloadUrl); break; - case 15: + case 17: inst::ui::mainApp->CreateShowDialog("options.credits.title"_lang, "options.credits.desc"_lang, { "common.close"_lang }, true, "romfs:/images/icons/credits.png"); break; default: diff --git a/source/util/config.cpp b/source/util/config.cpp index d56c7fc..c4abb62 100644 --- a/source/util/config.cpp +++ b/source/util/config.cpp @@ -8,6 +8,7 @@ namespace inst::config { std::string sigPatchesUrl; std::string httpIndexUrl; std::string httplastUrl; + std::string httplastUrl2; std::vector updateInfo; int languageSetting; bool autoUpdate; @@ -37,6 +38,7 @@ namespace inst::config { {"validateNCAs", validateNCAs}, {"httpIndexUrl", httpIndexUrl}, {"httplastUrl", httplastUrl}, + {"httplastUrl2", httplastUrl2}, {"fixticket", fixticket}, {"listoveride", listoveride}, {"httpkeyboard", httpkeyboard} @@ -64,6 +66,7 @@ namespace inst::config { sigPatchesUrl = j["sigPatchesUrl"].get(); httpIndexUrl = j["httpIndexUrl"].get(); httplastUrl = j["httplastUrl"].get(); + httplastUrl2 = j["httplastUrl2"].get(); usbAck = j["usbAck"].get(); validateNCAs = j["validateNCAs"].get(); } @@ -74,6 +77,7 @@ namespace inst::config { languageSetting = 0; httpIndexUrl = "http://"; httplastUrl = "http://"; + httplastUrl2 = "https://pastebin.com/raw/huBQFYWP"; autoUpdate = true; deletePrompt = true; useTheme = false;