From 594a2741d7d2d7554bdf33cfc8f6b2952f4c01d0 Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sat, 27 Oct 2018 19:30:56 +0800 Subject: [PATCH] Remember the last used login type --- .../org/jackhuang/hmcl/setting/Config.java | 18 ++++++++++++++++++ .../hmcl/ui/account/AddAccountPane.java | 10 +++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java index b1a2b8588..f56290b1c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java @@ -157,6 +157,12 @@ public final class Config implements Cloneable, Observable { @SerializedName("uiVersion") private IntegerProperty uiVersion = new SimpleIntegerProperty(0); + /** + * The preferred login type to use when the user wants to add an account. + */ + @SerializedName("preferredLoginType") + private StringProperty preferredLoginType = new SimpleStringProperty(); + private transient ObservableHelper helper = new ObservableHelper(this); public Config() { @@ -475,4 +481,16 @@ public final class Config implements Cloneable, Observable { public void setUiVersion(int uiVersion) { this.uiVersion.set(uiVersion); } + + public String getPreferredLoginType() { + return preferredLoginType.get(); + } + + public void setPreferredLoginType(String preferredLoginType) { + this.preferredLoginType.set(preferredLoginType); + } + + public StringProperty preferredLoginTypeProperty() { + return preferredLoginType; + } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAccountPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAccountPane.java index 60d7c1e57..cab2108bb 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAccountPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAccountPane.java @@ -81,7 +81,12 @@ public class AddAccountPane extends StackPane { cboType.getItems().setAll(Accounts.FACTORY_OFFLINE, Accounts.FACTORY_YGGDRASIL, Accounts.FACTORY_AUTHLIB_INJECTOR); cboType.setConverter(stringConverter(Accounts::getAccountTypeName)); - cboType.getSelectionModel().select(0); + // try selecting the preferred login type + cboType.getSelectionModel().select( + cboType.getItems().stream() + .filter(type -> Accounts.getAccountTypeName(type).equals(config().getPreferredLoginType())) + .findFirst() + .orElse(Accounts.FACTORY_OFFLINE)); btnAddServer.visibleProperty().bind(cboServers.visibleProperty()); btnManageServer.visibleProperty().bind(cboServers.visibleProperty()); @@ -91,6 +96,9 @@ public class AddAccountPane extends StackPane { ReadOnlyObjectProperty> loginType = cboType.getSelectionModel().selectedItemProperty(); + // remember the last used login type + loginType.addListener((observable, oldValue, newValue) -> config().setPreferredLoginType(Accounts.getAccountTypeName(newValue))); + txtPassword.visibleProperty().bind(loginType.isNotEqualTo(Accounts.FACTORY_OFFLINE)); lblPassword.visibleProperty().bind(txtPassword.visibleProperty());