diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AccountPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AccountPage.java index 1028b5ea2..2738bdc95 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AccountPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AccountPage.java @@ -64,7 +64,7 @@ public class AccountPage extends StackPane implements DecoratorPage { FXUtils.loadFXML(this, "/assets/fxml/account.fxml"); if (account instanceof AuthlibInjectorAccount) { - Task.ofResult("serverName", () -> Accounts.getAuthlibInjectorServerName(((AuthlibInjectorAccount) account).getServerBaseURL())) + Accounts.getAuthlibInjectorServerNameAsync((AuthlibInjectorAccount) account) .subscribe(Schedulers.javafx(), variables -> lblServer.setText(variables.get("serverName"))); } else { componentList.removeChildren(paneServer); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java index 8b855ec06..d8eaa1b1b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java @@ -168,7 +168,7 @@ public final class Controllers { } public static void showUpdate() { - getDecorator().showUpdate(); + getLeftPaneController().showUpdate(); } public static void shutdown() { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java index 9c28cb87e..ae221046a 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java @@ -127,8 +127,6 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza @FXML private JFXButton btnClose; @FXML - private HBox updatePane; - @FXML private HBox navLeft; public Decorator(Stage primaryStage, Node mainPage, String title) { @@ -143,9 +141,6 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza FXUtils.loadFXML(this, "/assets/fxml/decorator.fxml"); - updatePane.setCursor(Cursor.HAND); - updatePane.setOnMouseClicked(event -> Launcher.UPDATE_CHECKER.checkOutdate()); - primaryStage.initStyle(StageStyle.UNDECORATED); btnClose.setGraphic(close); btnMin.setGraphic(minus); @@ -474,10 +469,6 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza } } - public void showUpdate() { - updatePane.setVisible(true); - } - private void showCloseNavButton() { navLeft.getChildren().add(closeNavButton); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java index 211bb34d4..a83019242 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java @@ -27,6 +27,7 @@ import javafx.scene.control.Tooltip; import javafx.scene.image.Image; import javafx.scene.input.MouseButton; import javafx.scene.layout.VBox; +import javafx.scene.paint.Color; import org.jackhuang.hmcl.Launcher; import org.jackhuang.hmcl.auth.Account; import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorAccount; @@ -55,11 +56,17 @@ public final class LeftPaneController { private final AdvancedListBox leftPane; private final VBox profilePane = new VBox(); private final VBox accountPane = new VBox(); + private final IconedItem launcherSettingsItem; private final VersionListItem missingAccountItem = new VersionListItem(Launcher.i18n("account.missing"), Launcher.i18n("message.unknown")); public LeftPaneController(AdvancedListBox leftPane) { this.leftPane = leftPane; + this.launcherSettingsItem = Lang.apply(new IconedItem(SVG.gear(Theme.blackFillBinding(), 20, 20), Launcher.i18n("settings.launcher")), iconedItem -> { + iconedItem.prefWidthProperty().bind(leftPane.widthProperty()); + iconedItem.setOnMouseClicked(e -> Controllers.navigate(Controllers.getSettingsPage())); + }); + leftPane .add(new ClassTitle(Launcher.i18n("account").toUpperCase(), Lang.apply(new JFXButton(), button -> { button.setGraphic(SVG.plus(Theme.blackFillBinding(), 10, 10)); @@ -68,10 +75,7 @@ public final class LeftPaneController { }))) .add(accountPane) .startCategory(Launcher.i18n("launcher").toUpperCase()) - .add(Lang.apply(new IconedItem(SVG.gear(Theme.blackFillBinding(), 20, 20), Launcher.i18n("settings.launcher")), iconedItem -> { - iconedItem.prefWidthProperty().bind(leftPane.widthProperty()); - iconedItem.setOnMouseClicked(e -> Controllers.navigate(Controllers.getSettingsPage())); - })) + .add(launcherSettingsItem) .add(new ClassTitle(Launcher.i18n("profile.title").toUpperCase(), Lang.apply(new JFXButton(), button -> { button.setGraphic(SVG.plus(Theme.blackFillBinding(), 10, 10)); button.getStyleClass().add("toggle-icon-tiny"); @@ -199,6 +203,11 @@ public final class LeftPaneController { Platform.runLater(() -> accountPane.getChildren().setAll(list)); } + public void showUpdate() { + launcherSettingsItem.setText(Launcher.i18n("update.found")); + launcherSettingsItem.setTextFill(Color.RED); + } + private boolean checkedModpack = false; private void onRefreshedVersions(RefreshedVersionsEvent event) { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedItem.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedItem.java index 46c4aab27..38ecd9933 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedItem.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedItem.java @@ -21,21 +21,19 @@ import javafx.geometry.Pos; import javafx.scene.Node; import javafx.scene.control.Label; import javafx.scene.layout.HBox; +import javafx.scene.paint.Paint; public class IconedItem extends RipplerContainer { - private final Node icon; - private final String text; public IconedItem(Node icon, String text) { super(createHBox(icon, text)); - this.icon = icon; - this.text = text; } private static HBox createHBox(Node icon, String text) { HBox hBox = new HBox(); icon.setMouseTransparent(true); Label textLabel = new Label(text); + textLabel.setId("label"); textLabel.setAlignment(Pos.CENTER); textLabel.setMouseTransparent(true); hBox.getChildren().addAll(icon, textLabel); @@ -43,4 +41,12 @@ public class IconedItem extends RipplerContainer { hBox.setAlignment(Pos.CENTER_LEFT); return hBox; } + + public void setText(String text) { + ((Label) lookup("#label")).setText(text); + } + + public void setTextFill(Paint paint) { + ((Label) lookup("#label")).setTextFill(paint); + } } diff --git a/HMCL/src/main/resources/assets/fxml/decorator.fxml b/HMCL/src/main/resources/assets/fxml/decorator.fxml index 5bce78d2b..c59288d70 100644 --- a/HMCL/src/main/resources/assets/fxml/decorator.fxml +++ b/HMCL/src/main/resources/assets/fxml/decorator.fxml @@ -26,20 +26,9 @@
- -
- -
- - - - - - - - -
+ + +