From c9a4b914536a2750f9a880aa84863ed45b4233a2 Mon Sep 17 00:00:00 2001 From: Alessandro Autiero Date: Thu, 21 Sep 2023 19:05:41 +0200 Subject: [PATCH] Final version --- gui/lib/l10n/reboot_pl.arb | 251 ------------------ gui/lib/main.dart | 14 +- .../src/page/implementation/info_page.dart | 73 ++--- 3 files changed, 48 insertions(+), 290 deletions(-) delete mode 100644 gui/lib/l10n/reboot_pl.arb diff --git a/gui/lib/l10n/reboot_pl.arb b/gui/lib/l10n/reboot_pl.arb deleted file mode 100644 index d820dca..0000000 --- a/gui/lib/l10n/reboot_pl.arb +++ /dev/null @@ -1,251 +0,0 @@ -{ - "find": "Znajdź ustawienie", - "on": "Wł.", - "off": "Wył.", - "resetDefaultsContent": "Zresetuj", - "resetDefaultsDialogTitle": "Czy chcesz zresetować wszystkie ustawienia na tej karcie do wartości domyślnych? To działanie jest nieodwracalne", - "resetDefaultsDialogSecondaryAction": "Zamknij", - "resetDefaultsDialogPrimaryAction": "Zresetuj", - "authenticatorName": "Uwierzytelniacz", - "authenticatorConfigurationName": "Konfiguracja uwierzytelniacza", - "authenticatorConfigurationDescription": "Ta sekcja zawiera konfigurację uwierzytelniacza.", - "authenticatorConfigurationHostName": "Hostuj", - "authenticatorConfigurationHostDescription": "Nazwa hosta uwierzytelniacza", - "authenticatorConfigurationPortName": "Port", - "authenticatorConfigurationPortDescription": "Port uwierzytelniacza", - "authenticatorConfigurationDetachedName": "Odłączony", - "authenticatorConfigurationDetachedDescription": "Czy wbudowany uwierzytelniacz powinien być uruchamiany jako oddzielny proces, przydatny do debugowania.", - "authenticatorInstallationDirectoryName": "Folder instalacji", - "authenticatorInstallationDirectoryDescription": "Otwiera folder, w którym znajduje się wbudowany uwierzytelniacz.", - "authenticatorInstallationDirectoryContent": "Pokaż pliki", - "authenticatorResetDefaultsName": "Zresetuj uwierzytelniacz", - "authenticatorResetDefaultsDescription": "Przywraca domyślne ustawienia uwierzytelniacza.", - "authenticatorResetDefaultsContent": "Zresetuj", - "hostGameServerName": "Serwer gry", - "hostGameServerDescription": "Podaj podstawowe informacje o serwerze gry dla przeglądarki serwerów.", - "hostGameServerNameName": "Nazwa", - "hostGameServerNameDescription": "Nazwa twojego serwera gry", - "hostGameServerDescriptionName": "Opis", - "hostGameServerDescriptionDescription": "Opis twojego serwera gry", - "hostGameServerPasswordName": "Hasło", - "hostGameServerPasswordDescription": "Hasło do twojego serwera gry, jeśli jest potrzebne.", - "hostGameServerDiscoverableName": "Wykrywalny", - "hostGameServerDiscoverableDescription": "Udostępnij swój serwer innym graczom w przeglądarce serwerów.", - "hostShareName": "Udostępnij", - "hostShareDescription": "Ułatw innym osobom dołączenie do twojego serwera dzięki opcjom dostępnym w tej sekcji.", - "hostShareLinkName": "Link", - "hostShareLinkDescription": "Kopiuje link twojego serwera do schowka (wymaga Reboot Launcher).", - "hostShareLinkContent": "Kopiuj link", - "hostShareLinkMessageSuccess": "Skopiowano twój link do schowka", - "hostShareIpName": "Publiczne IP", - "hostShareIpDescription": "Kopiuje bieżące publiczne IP do schowka (nie wymaga Reboot Launcher).", - "hostShareIpContent": "Kopiuj IP", - "hostShareIpMessageLoading": "Uzyskiwanie publicznego IP...", - "hostShareIpMessageSuccess": "Skopiowano twój link do schowka.", - "hostShareIpMessageError": "Wystąpił błąd podczas uzyskiwania twojego publicznego IP: {error}.", - "hostResetName": "Zresetuj serwer gry", - "hostResetDescription": "Resetuje ustawienia serwera gry do wartości domyślnych.", - "hostResetContent": "Zresetuj", - "browserName": "Przeglądarka serwerów", - "noServersAvailableTitle": "W tej chwili żadne serwery nie są dostępne.", - "noServersAvailableSubtitle": "Hostuj serwer samodzielnie lub wróć później.", - "joinServer": "Dołącz do serwera", - "noServersAvailableByQueryTitle": "Nie znaleziono rezultatów", - "noServersAvailableByQuerySubtitle": "Żaden serwer nie pasuje do Twojego zapytania", - "findServer": "Znajdź serwer", - "copyIp": "Kopiuj IP", - "hostName": "Hostuj", - "matchmakerName": "System dobierania graczy", - "matchmakerConfigurationName": "Konfiguracja systemu dobierania graczy", - "matchmakerConfigurationDescription": "Ta sekcja zawiera konfigurację systemu dobierania graczy.", - "matchmakerConfigurationHostName": "Hostuj", - "matchmakerConfigurationHostDescription": "Nazwa hosta systemu dobierania graczy.", - "matchmakerConfigurationPortName": "Port", - "matchmakerConfigurationPortDescription": "Port systemu dobierania graczy.", - "matchmakerConfigurationAddressName": "Adres serwera gry", - "matchmakerConfigurationAddressDescription": "Adres serwera gry używanego przez system dobierania graczy", - "matchmakerConfigurationDetachedName": "Odłączony", - "matchmakerConfigurationDetachedDescription": "Czy wbudowany system dobierania graczy powinien być uruchamiany jako oddzielny proces, przydatny do debugowania.", - "matchmakerInstallationDirectoryName": "Folder instalacji", - "matchmakerInstallationDirectoryDescription": "Otwiera folder, w którym znajduje się wbudowany system dobierania graczy.", - "matchmakerInstallationDirectoryContent": "Pokaż pliki", - "matchmakerResetDefaultsName": "Zresetuj system dobierania graczy", - "matchmakerResetDefaultsDescription": "Resetuje ustawienia systemu dobierania graczy do wartości domyślnych.", - "matchmakerResetDefaultsContent": "Zresetuj", - "matchmakerResetDefaultsDialogTitle": "Czy chcesz zresetować wszystkie ustawienia na tej karcie do wartości domyślnych? To działanie jest nieodwracalne.", - "matchmakerResetDefaultsDialogSecondaryAction": "Zamknij", - "matchmakerResetDefaultsDialogPrimaryAction": "Zresetuj", - "playName": "Graj", - "playGameServerName": "Server gry", - "playGameServerDescription": "Pomocne skróty do znalezienia serwera, na którym chcesz grać.", - "playGameServerContentLocal": "Twój serwer", - "playGameServerContentBrowser": "Server {owner}", - "playGameServerContentCustom": "{address}", - "playGameServerHostName": "Hostuj serwer", - "playGameServerHostDescription": "Chcesz stworzyć serwer gry dla siebie lub swoich znajomych? Hostuj jeden!", - "playGameServerHostContent": "Hostuj", - "playGameServerBrowserName": "Przeglądaj serwery", - "playGameServerBrowserDescription": "Znajdź wykrywalny serwer hostowany na Reboot Launcher w przeglądarce serwerów.", - "playGameServerBrowserContent": "Przeglądaj", - "playGameServerCustomName": "Dołącz do serwera niestandardowego", - "playGameServerCustomDescription": "Wpisz adres dowolnego serwera, niezależnie od tego, czy był on hostowany poprzez Reboot Launcher, czy nie.", - "playGameServerCustomContent": "Wprowadź IP", - "settingsName": "Ustawienia", - "settingsClientName": "Ustawienia klienta", - "settingsClientDescription": "Ta sekcja zawiera pliki dll używane do działania klienta Fortnite.", - "settingsClientConsoleName": "Konsola Unreal Engine", - "settingsClientConsoleDescription": "Ten plik jest wstrzykiwany w celu odblokowania konsoli Unreal Engine.", - "settingsClientAuthName": "Łatka uwierzytelniacza", - "settingsClientAuthDescription": "Ten plik jest wstrzykiwany w celu przekierowania wszystkich żądań HTTP do uwierzytelniacza programu uruchamiającego.", - "settingsClientMemoryName": "Łatka pamięci", - "settingsClientMemoryDescription": "Ten plik jest wstrzykiwany, aby zapobiec awarii klienta Fortnite z powodu wycieku pamięci.", - "settingsClientArgsName": "Niestandardowe argumenty uruchamiania", - "settingsClientArgsDescription": "Dodatkowe argumenty do użycia podczas uruchamiania gry.", - "settingsClientArgsPlaceholder": "-przykład", - "settingsServerName": "Ustawienia serwera gry", - "settingsServerSubtitle": "Ta sekcja zawiera ustawienia związane z implementacją serwera gry.", - "settingsServerFileName": "Implementacja", - "settingsServerFileDescription": "Ten plik jest wstrzykiwany w celu utworzenia serwera gry i hostowania meczów.", - "settingsServerPortName": "Port", - "settingsServerPortDescription": "Port używany przez dll serwera gry.", - "settingsServerMirrorName": "Aktualizacja linku", - "settingsServerMirrorDescription": "Adres URL używany do aktualizacji dll serwera gry.", - "settingsServerMirrorPlaceholder": "link", - "settingsServerTimerName": "Aktualizacja licznika czasu", - "settingsServerTimerSubtitle": "Określa, kiedy dll serwera gry powininno zostać zaktualizowane.", - "settingsUtilsName": "Narzędzia programu do uruchamiania", - "settingsUtilsSubtitle": "Ta sekcja zawiera przydatne ustawienia programu uruchamiającego.", - "settingsUtilsInstallationDirectoryName": "Katalog instalacji", - "settingsUtilsInstallationDirectorySubtitle": "Otwiera katalog instalacji", - "settingsUtilsInstallationDirectoryContent": "Pokaż pliki", - "settingsUtilsBugReportName": "Utwórz raport o błędzie", - "settingsUtilsBugReportSubtitle": "Pomóż mi naprawić błędy, zgłaszając je.", - "settingsUtilsBugReportContent": "Zgłoś błąd", - "settingsUtilsResetDefaultsName": "Zresetuj ustawienia", - "settingsUtilsResetDefaultsSubtitle": "Resetuje ustawienia programu uruchamiającego do wartości domyślnych.", - "settingsUtilsDialogTitle": "Czy chcesz zresetować wszystkie ustawienia na tej karcie do wartości domyślnych? To działanie jest nieodwracalne.", - "settingsUtilsResetDefaultsContent": "Zresetuj", - "settingsUtilsDialogSecondaryAction": "Zamknij", - "settingsUtilsDialogPrimaryAction": "Zresetuj", - "addVersionName": "Wersja", - "addVersionDescription": "Wybierz wersję Fortnite, której chcesz użyć.", - "addLocalBuildName": "Dodaj wersję z lokalnej pamięci masowej tego komputera.", - "addLocalBuildDescription": "Wersje pochodzące z dysku lokalnego nie mają gwarancji działania.", - "addLocalBuildContent": "Dodaj kompilację", - "downloadBuildName": "Pobierz dowolną wersję z chmury", - "downloadBuildDescription": "Łatwe pobieranie dowolnej wersji Fortnite z chmury.", - "downloadBuildContent": "Pobierz", - "cannotUpdateGameServer": "Wystąpił błąd podczas aktualizacji serwera gry: {error}.", - "launchFortnite": "Uruchom Fortnite", - "closeFortnite": "Zamknij Fortnite", - "updateGameServerDllNever": "Nigdy", - "updateGameServerDllEvery": "Każda {name}", - "selectPathPlaceholder": "Ścieżka", - "selectPathWindowTitle": "Wybierz plik", - "defaultDialogSecondaryAction": "Zamknij", - "stopLoadingDialogAction": "Stop", - "copyErrorDialogTitle": "Kopiuj błąd", - "copyErrorDialogSuccess": "Skopiowano błąd do schowka.", - "defaultServerName": "Serwer gry Reboot", - "defaultServerDescription": "Po prostu kolejny serwer", - "updatingRebootDll": "Pobieranie dll reboot...", - "updatedRebootDll": "Plik dll reboot został pobrany pomyślnie", - "updateRebootDllError": "Wystąpił błąd podczas pobierania dll reboot: {error}.", - "updateRebootDllErrorAction": "Ponów", - "uncaughtErrorMessage": "Wystąpił niewyłapany błąd: {error}.", - "launchingHeadlessServer": "Uruchamianie serwera bezgłowego ...", - "usernameOrEmail": "Nazwa użytkownika/Email", - "usernameOrEmailPlaceholder": "Wpisz swoją nazwę użytkownika lub adres e-mail.", - "password": "Hasło", - "passwordPlaceholder": "Wpisz hasło, jeśli chcesz je użyć.", - "cancelProfileChanges": "Anuluj", - "saveProfileChanges": "Zapisz", - "startingServer": "Uruchamianie {name}...", - "startedServer": "{name} został uruchomiony pomyślnie.", - "startServerError": "Wystąpił błąd podczas uruchamiania {name}: {error}.", - "stoppingServer": "Zatrzymanie {name}...", - "stoppedServer": "{name} został pomyślnie zatrzymany.", - "stopServerError": "Wystąpił błąd podczas zatrzymywania {name}: {error}.", - "missingHostNameError": "Brakująca nazwa hosta w konfiguracji {name}.", - "missingPortError": "Brakujący port w konfiguracji {name}.", - "illegalPortError": "Niepoprawny port w konfiguracji {name}.", - "freeingPort": "Zwalnianie portu {port}...", - "freedPort": "Port {port} został pomyślnie zwolniony.", - "freePortError": "Wystąpił błąd podczas zwalniania portu {port}: {error}.", - "pingingRemoteServer": "Pingowanie zdalnego {name}...", - "pingingLocalServer": "Pingowanie {type} {name}...", - "pingError": "Nie można pingować {type} {name}", - "joinSelfServer": "Nie możesz dołączyć do własnego serwera.", - "wrongServerPassword": "Błędne hasło: spróbuj ponownie.", - "offlineServer": "Ten serwer nie jest teraz online: spróbuj ponownie później.", - "serverPassword": "Hasło", - "serverPasswordPlaceholder": "Wpisz hasło serwera", - "serverPasswordCancel": "Anuluj", - "serverPasswordConfirm": "Potwierdź", - "joinedServer": "Udało ci się dołączyć do serwera {author}!", - "copiedIp": "Skopiowano IP do schowka", - "selectVersion": "Wybierz wersję", - "noVersions": "Proszę utwórzyć lub pobrać wersję.", - "missingVersion": "Ta wersja nie istnieje na lokalnej maszynie.", - "deleteVersionDialogTitle": "Czy na pewno chcesz usunąć tę wersję?", - "deleteVersionFromDiskOption": "Usuń pliki wersji z dysku", - "deleteVersionCancel": "Zachowaj", - "deleteVersionConfirm": "Usuń", - "versionName": "Nazwa", - "versionNameLabel": "Wpisz nazwę nowej wersji", - "newVersionNameConfirm": "Zapisz", - "newVersionNameLabel": "Wpisz nazwę nowej wersji", - "gameFolderTitle": "Folder gry", - "gameFolderPlaceholder": "Wpisz nowy folder gry", - "gameFolderPlaceWindowTitle": "Wybierz folder gry", - "gameFolderLabel": "Ścieżka", - "openInExplorer": "Otwórz w eksploratorze", - "modify": "Modyfikuj", - "delete": "Usuń", - "build": "Kompilacja", - "selectBuild": "Wybierz kompilację fortnite", - "fetchingBuilds": "Pobieranie kompilacji i dysków...", - "unknownError": "Nieznany błąd", - "downloadVersionError": "Nie można pobrać wersji: {error}.", - "downloadedVersion": "Pobieranie zostało zakończone pomyślnie!", - "download": "Pobierz", - "downloading": "Pobieranie...", - "extracting": "Wyodrębnianie...", - "buildProgress": "{progress}%", - "buildInstallationDirectory": "Katalog instalacji", - "buildInstallationDirectoryPlaceholder": "Wpisz katalog instalacji", - "buildInstallationDirectoryWindowTitle": "Wybierz katalog instalacji", - "timeLeft": "Pozostały czas: {timeLeft, plural, =0{mniej niż minuta} =1{około {timeLeft} minuta} other{około {timeLeft} minut}}", - "localBuildsWarning": "Nie ma gwarancji, że lokalne kompilacje będą działać.", - "saveLocalVersion": "Zapisz", - "embedded": "Wbudowany", - "remote": "Zdalny", - "local": "Lokalny", - "checkServer": "Sprawdź {name}", - "startServer": "Uruchom {name}", - "stopServer": "Zatrzymaj {name}", - "startHosting": "Rozpocznij hosting", - "stopHosting": "Zatrzymaj hosting", - "startGame": "Uruchom fortnite", - "stopGame": "Zamknij fortnite", - "waitingForGameServer": "Oczekiwanie na uruchomienie serwera gry...", - "gameServerStartWarning": "Serwer bezgłowy został pomyślnie uruchomiony, ale serwer gry się nie uruchomił.", - "gameServerStartLocalWarning": "Serwer gry został pomyślnie uruchomiony, ale inni gracze nie mogą do niego dołączyć.", - "gameServerStarted": "Serwer gry został pomyślnie uruchomiony.", - "checkingGameServer": "Sprawdzanie, czy inni gracze mogą dołączyć do serwera gry...", - "checkGameServerFixMessage": "Inni gracze nie mogą dołączyć do serwera gry, ponieważ port {port} nie jest otwarty.", - "checkGameServerFixAction": "Napraw", - "infoName": "Help", - "emptyVersionName": "Pusta nazwa wersji", - "versionAlreadyExists": "Ta wersja już istnieje", - "emptyGamePath": "Pusta ścieżka gry", - "directoryDoesNotExist": "Katalog nie istnieje", - "missingShippingExe": "Nieprawidłowa ścieżka do gry: brak FortniteClient-Win64-Shipping", - "invalidDownloadPath": "Nieprawidłowa ścieżka pobierania", - "invalidDllPath": "Nieprawidłowa ścieżka dll", - "dllDoesNotExist": "Plik nie istnieje", - "invalidDllExtension": "Ten plik nie jest plikiem dll", - "emptyHostname": "Pusta nazwa hosta", - "hostnameFormat": "Nieprawidłowy format nazwy hosta: oczekiwano ip:port", - "emptyURL": "Pusty adres URL aktualizacji" -} diff --git a/gui/lib/main.dart b/gui/lib/main.dart index 28d58a1..973c109 100644 --- a/gui/lib/main.dart +++ b/gui/lib/main.dart @@ -22,6 +22,7 @@ import 'package:reboot_launcher/src/controller/settings_controller.dart'; import 'package:reboot_launcher/src/dialog/implementation/server.dart'; import 'package:reboot_launcher/src/page/implementation/home_page.dart'; import 'package:reboot_launcher/src/util/matchmaker.dart'; +import 'package:reboot_launcher/src/util/os.dart'; import 'package:reboot_launcher/src/util/translations.dart'; import 'package:reboot_launcher/src/util/watch.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; @@ -136,11 +137,14 @@ void _initWindow() => doWhenWindowReady(() async { appWindow.alignment = Alignment.center; } - await Window.setEffect( - effect: WindowEffect.acrylic, - color: Colors.transparent, - dark: SchedulerBinding.instance.platformDispatcher.platformBrightness.isDark - ); + if(isWin11) { + await Window.setEffect( + effect: WindowEffect.acrylic, + color: Colors.transparent, + dark: SchedulerBinding.instance.platformDispatcher.platformBrightness.isDark + ); + } + appWindow.show(); }); diff --git a/gui/lib/src/page/implementation/info_page.dart b/gui/lib/src/page/implementation/info_page.dart index 99b72f1..947c215 100644 --- a/gui/lib/src/page/implementation/info_page.dart +++ b/gui/lib/src/page/implementation/info_page.dart @@ -2,7 +2,7 @@ import 'dart:convert'; import 'package:fluent_ui/fluent_ui.dart'; import 'package:get/get.dart'; -import 'package:markdown_widget/widget/markdown.dart'; +import 'package:markdown_widget/config/markdown_generator.dart'; import 'package:reboot_launcher/src/controller/info_controller.dart'; import 'package:reboot_launcher/src/page/abstract/page.dart'; import 'package:reboot_launcher/src/page/abstract/page_setting.dart'; @@ -10,7 +10,6 @@ import 'package:reboot_launcher/src/page/abstract/page_type.dart'; import 'package:reboot_launcher/src/util/translations.dart'; import 'package:reboot_launcher/src/widget/common/setting_tile.dart'; import 'package:http/http.dart' as http; -import 'package:skeletons/skeletons.dart'; class InfoPage extends RebootPage { const InfoPage({Key? key}) : super(key: key); @@ -77,44 +76,50 @@ class _InfoPageState extends RebootPageState { future: _fetchFuture, builder: (context, linksSnapshot) { var linksData = linksSnapshot.data; - return ListView.builder( - itemBuilder: (context, index) { - if (index % 2 == 0) { - return const SizedBox( - height: 16.0 - ); - } + if(linksData == null) { + return const Center( + child: ProgressRing() + ); + } - return Card( - borderRadius: const BorderRadius.vertical(top: Radius.circular(4.0)), - child: _buildBody(linksData, index) - ); - }, - itemCount: linksData == null ? null : linksData.length * 2 + return Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded( + child: ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 1000 + ), + child: ListView.separated( + shrinkWrap: true, + separatorBuilder: (context, index) => const SizedBox( + height: 16.0 + ), + itemBuilder: (context, index) => Card( + borderRadius: const BorderRadius.vertical(top: Radius.circular(4.0)), + child: _buildBody(linksData, index) + ), + itemCount: linksData.length + ), + ), + ) + ], ); } ); } - Widget _buildBody(List? linksData, int index) { - if (linksData == null) { - return SkeletonLine( - style: SkeletonLineStyle( - height: _height - ), - ); - } - - return FutureBuilder( - future: _readLink(linksData[index ~/ 2]), - builder: (context, linkDataSnapshot) => SizedBox( - height: _height, - child: MarkdownWidget( - data: linkDataSnapshot.data ?? "" - ), - ) - ); - } + Widget _buildBody(List linksData, int index) => FutureBuilder( + future: _readLink(linksData[index]), + builder: (context, linkDataSnapshot) { + var markdownGenerator = MarkdownGenerator(); + var result = markdownGenerator.buildWidgets(linkDataSnapshot.data ?? ""); + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: result + ); + } + ); @override List get settings => [];