From 6010008409a2b0925a19ed35dcf5a17fec64de41 Mon Sep 17 00:00:00 2001 From: Glavo Date: Tue, 13 Jun 2023 10:21:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=20ObservableMap=20=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=B7=B2=E6=98=BE=E7=A4=BA=E7=9A=84=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=20(#2271)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jackhuang/hmcl/setting/Config.java | 18 +++++------------- .../org/jackhuang/hmcl/ui/main/MainPage.java | 6 ++++-- 2 files changed, 9 insertions(+), 15 deletions(-) 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 88cb04bad..27a8dc3f5 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java @@ -172,9 +172,6 @@ public final class Config implements Cloneable, Observable { @SerializedName("promptedVersion") private StringProperty promptedVersion = new SimpleStringProperty(); - @SerializedName("hideAnnouncementVersion") - private StringProperty hideAnnouncementVersion = new SimpleStringProperty(); - @SerializedName("_version") private IntegerProperty configVersion = new SimpleIntegerProperty(0); @@ -197,6 +194,9 @@ public final class Config implements Cloneable, Observable { @SerializedName("animationDisabled") private BooleanProperty animationDisabled = new SimpleBooleanProperty(); + @SerializedName("shownTips") + private ObservableMap shownTips = FXCollections.observableHashMap(); + private transient ObservableHelper helper = new ObservableHelper(this); public Config() { @@ -643,15 +643,7 @@ public final class Config implements Cloneable, Observable { this.promptedVersion.set(promptedVersion); } - public String getHideAnnouncementVersion() { - return hideAnnouncementVersion.get(); - } - - public StringProperty hideAnnouncementVersionProperty() { - return hideAnnouncementVersion; - } - - public void setHideAnnouncementVersion(String hideAnnouncementDevVersion) { - this.hideAnnouncementVersion.set(hideAnnouncementDevVersion); + public ObservableMap getShownTips() { + return shownTips; } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/MainPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/MainPage.java index 461d05c15..d619d6762 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/MainPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/MainPage.java @@ -72,6 +72,8 @@ import static org.jackhuang.hmcl.ui.FXUtils.SINE; import static org.jackhuang.hmcl.util.i18n.I18n.i18n; public final class MainPage extends StackPane implements DecoratorPage { + private static final String ANNOUNCEMENT = "announcement"; + private final ReadOnlyObjectWrapper state = new ReadOnlyObjectWrapper<>(); private final PopupMenu menu = new PopupMenu(); @@ -113,7 +115,7 @@ public final class MainPage extends StackPane implements DecoratorPage { setPadding(new Insets(20)); - if (Metadata.isNightly() || (Metadata.isDev() && !Objects.equals(Metadata.VERSION, config().getHideAnnouncementVersion()))) { + if (Metadata.isNightly() || (Metadata.isDev() && !Objects.equals(Metadata.VERSION, config().getShownTips().get(ANNOUNCEMENT)))) { announcementPane = new VBox(16); if (Metadata.isNightly()) { announcementPane.getChildren().add(new AnnouncementCard(i18n("update.channel.nightly.title"), i18n("update.channel.nightly.hint"))); @@ -297,7 +299,7 @@ public final class MainPage extends StackPane implements DecoratorPage { public void hideAnnouncementPane() { if (announcementPane != null) { - config().setHideAnnouncementVersion(Metadata.VERSION); + config().getShownTips().put(ANNOUNCEMENT, Metadata.VERSION); Pane parent = (Pane) announcementPane.getParent(); if (parent != null) parent.getChildren().remove(announcementPane);