mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-22 10:43:57 -04:00
Merge 5844cf25a6982fbbcafea95978a8eac38ec7e19c into bd9ae189f83e33a6977bbe056774c851e96fe0a7
This commit is contained in:
commit
8cf333b40f
@ -494,4 +494,13 @@ public final class Controllers {
|
||||
|
||||
FXUtils.shutdown();
|
||||
}
|
||||
|
||||
public static void resetAllLazyPage() {
|
||||
rootPage.reset();
|
||||
versionPage.reset();
|
||||
gameListPage.reset();
|
||||
downloadPage.reset();
|
||||
accountListPage.reset();
|
||||
settingsPage.reset();
|
||||
}
|
||||
}
|
||||
|
@ -45,16 +45,23 @@ public class Navigator extends TransitionPane {
|
||||
private boolean initialized = false;
|
||||
|
||||
public void init(Node init) {
|
||||
stack.push(init);
|
||||
backable.set(canGoBack());
|
||||
setRootPage(init);
|
||||
getChildren().setAll(init);
|
||||
|
||||
fireEvent(new NavigationEvent(this, init, Navigation.NavigationDirection.START, NavigationEvent.NAVIGATED));
|
||||
if (init instanceof PageAware) ((PageAware) init).onPageShown();
|
||||
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
public void setRootPage(Node root) {
|
||||
if (stack.isEmpty()) {
|
||||
stack.push(root);
|
||||
} else {
|
||||
stack.set(0, root);
|
||||
}
|
||||
}
|
||||
|
||||
public void navigate(Node node, AnimationProducer animationProducer) {
|
||||
FXUtils.checkFxUserThread();
|
||||
|
||||
|
@ -53,8 +53,8 @@ import org.jackhuang.hmcl.ui.animation.AnimationUtils;
|
||||
import org.jackhuang.hmcl.ui.animation.ContainerAnimations;
|
||||
import org.jackhuang.hmcl.ui.construct.DialogAware;
|
||||
import org.jackhuang.hmcl.ui.construct.DialogCloseEvent;
|
||||
import org.jackhuang.hmcl.ui.construct.Navigator;
|
||||
import org.jackhuang.hmcl.ui.construct.JFXDialogPane;
|
||||
import org.jackhuang.hmcl.ui.construct.Navigator;
|
||||
import org.jackhuang.hmcl.ui.wizard.Refreshable;
|
||||
import org.jackhuang.hmcl.ui.wizard.WizardProvider;
|
||||
import org.jackhuang.hmcl.util.Lang;
|
||||
@ -65,7 +65,10 @@ import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Optional;
|
||||
import java.util.Random;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
@ -547,4 +550,9 @@ public class DecoratorController {
|
||||
decorator.addEventFilter(DragEvent.DRAG_DROPPED, AuthlibInjectorDnD.dragDroppedHandler(
|
||||
url -> Controllers.dialog(new AddAuthlibInjectorServerPane(url))));
|
||||
}
|
||||
|
||||
public void setRootPage(Node n) {
|
||||
navigator.setRootPage(n);
|
||||
navigator.clear();
|
||||
}
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ import org.jackhuang.hmcl.upgrade.UpdateChannel;
|
||||
import org.jackhuang.hmcl.upgrade.UpdateChecker;
|
||||
import org.jackhuang.hmcl.upgrade.UpdateHandler;
|
||||
import org.jackhuang.hmcl.util.StringUtils;
|
||||
import org.jackhuang.hmcl.util.i18n.I18n;
|
||||
import org.jackhuang.hmcl.util.i18n.Locales;
|
||||
import org.jackhuang.hmcl.util.io.FileUtils;
|
||||
import org.jackhuang.hmcl.util.io.IOUtils;
|
||||
@ -67,6 +68,15 @@ public final class SettingsPage extends SettingsView {
|
||||
// ==== Languages ====
|
||||
cboLanguage.getItems().setAll(Locales.LOCALES);
|
||||
selectedItemPropertyFor(cboLanguage).bindBidirectional(config().localizationProperty());
|
||||
selectedItemPropertyFor(cboLanguage).addListener((observableValue, oldValue, newValue) -> {
|
||||
I18n.setLocale(newValue);
|
||||
|
||||
Controllers.resetAllLazyPage();
|
||||
|
||||
System.gc();
|
||||
|
||||
Controllers.getDecorator().setRootPage(Controllers.getRootPage());
|
||||
});
|
||||
|
||||
disableAutoGameOptionsPane.selectedProperty().bindBidirectional(config().disableAutoGameOptionsProperty());
|
||||
// ====
|
||||
|
@ -26,7 +26,7 @@ import java.util.function.Supplier;
|
||||
* @param <T> value type
|
||||
*/
|
||||
public final class Lazy<T> {
|
||||
private Supplier<T> supplier;
|
||||
private final Supplier<T> supplier;
|
||||
private T value = null;
|
||||
|
||||
public Lazy(Supplier<T> supplier) {
|
||||
@ -34,10 +34,13 @@ public final class Lazy<T> {
|
||||
}
|
||||
|
||||
public T get() {
|
||||
if (supplier != null) {
|
||||
if (value == null) {
|
||||
value = supplier.get();
|
||||
supplier = null;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
value = null;
|
||||
}
|
||||
}
|
||||
|
@ -1361,7 +1361,7 @@ settings.launcher.font.anti_aliasing.auto=Auto
|
||||
settings.launcher.font.anti_aliasing.gray=Grayscale
|
||||
settings.launcher.font.anti_aliasing.lcd=Sub-pixel
|
||||
settings.launcher.general=General
|
||||
settings.launcher.language=Language (Applies After Restart)
|
||||
settings.launcher.language=Language
|
||||
settings.launcher.launcher_log.export=Export Launcher Logs
|
||||
settings.launcher.launcher_log.export.failed=Failed to export logs.
|
||||
settings.launcher.launcher_log.export.success=Logs have been exported to "%s".
|
||||
|
@ -1157,7 +1157,7 @@ settings.launcher.font.anti_aliasing.auto=自調
|
||||
settings.launcher.font.anti_aliasing.gray=灰階
|
||||
settings.launcher.font.anti_aliasing.lcd=子像素
|
||||
settings.launcher.general=貫用
|
||||
settings.launcher.language=文 (複啟而效)
|
||||
settings.launcher.language=文
|
||||
settings.launcher.launcher_log.export=錄出啟者之誌
|
||||
settings.launcher.launcher_log.export.failed=錄誌出而未成
|
||||
settings.launcher.launcher_log.export.success=誌既存於「%s」
|
||||
|
@ -1357,7 +1357,7 @@ settings.launcher.font.anti_aliasing.auto=Автоматический
|
||||
settings.launcher.font.anti_aliasing.gray=Оттенки серого
|
||||
settings.launcher.font.anti_aliasing.lcd=Субпиксель
|
||||
settings.launcher.general=Общие
|
||||
settings.launcher.language=Язык (Применится после перезапуска)
|
||||
settings.launcher.language=Язык
|
||||
settings.launcher.launcher_log.export=Экспорт логов лаунчера
|
||||
settings.launcher.launcher_log.export.failed=Не удалось экспортировать логи
|
||||
settings.launcher.launcher_log.export.success=Логи экспортированы в %s
|
||||
|
@ -1298,7 +1298,7 @@ settings.launcher.font.anti_aliasing.auto=Авто
|
||||
settings.launcher.font.anti_aliasing.gray=Відтінки сірого
|
||||
settings.launcher.font.anti_aliasing.lcd=Субпіксельне
|
||||
settings.launcher.general=Загальні
|
||||
settings.launcher.language=Мова (Застосовується після перезавантаження)
|
||||
settings.launcher.language=Мова
|
||||
settings.launcher.launcher_log.export=Експортувати журнали лаунчера
|
||||
settings.launcher.launcher_log.export.failed=Не вдалося експортувати журнали.
|
||||
settings.launcher.launcher_log.export.success=Журнали було експортовано до "%s".
|
||||
|
@ -1149,7 +1149,7 @@ settings.launcher.font.anti_aliasing.auto=自動
|
||||
settings.launcher.font.anti_aliasing.gray=灰階
|
||||
settings.launcher.font.anti_aliasing.lcd=子像素
|
||||
settings.launcher.general=一般
|
||||
settings.launcher.language=語言 (重啟後生效)
|
||||
settings.launcher.language=語言
|
||||
settings.launcher.launcher_log.export=匯出啟動器日誌
|
||||
settings.launcher.launcher_log.export.failed=無法匯出日誌。
|
||||
settings.launcher.launcher_log.export.success=日誌已儲存到「%s」。
|
||||
|
@ -1160,7 +1160,7 @@ settings.launcher.font.anti_aliasing.auto=自动
|
||||
settings.launcher.font.anti_aliasing.gray=灰度
|
||||
settings.launcher.font.anti_aliasing.lcd=子像素
|
||||
settings.launcher.general=通用
|
||||
settings.launcher.language=语言 (重启后生效)
|
||||
settings.launcher.language=语言
|
||||
settings.launcher.launcher_log.export=导出启动器日志
|
||||
settings.launcher.launcher_log.export.failed=无法导出日志
|
||||
settings.launcher.launcher_log.export.success=日志已保存到“%s”
|
||||
|
Loading…
x
Reference in New Issue
Block a user