Use databind for theme subtitle

This commit is contained in:
yushijinhun 2018-07-18 21:44:22 +08:00
parent 9896165b68
commit a47f0f6ecf
No known key found for this signature in database
GPG Key ID: 5BC167F73EA558E4

View File

@ -20,6 +20,7 @@ package org.jackhuang.hmcl.ui;
import com.jfoenix.controls.*; import com.jfoenix.controls.*;
import com.jfoenix.effects.JFXDepthManager; import com.jfoenix.effects.JFXDepthManager;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.binding.When;
import javafx.beans.property.ObjectProperty; import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
@ -46,7 +47,6 @@ import org.jackhuang.hmcl.util.Lang;
import org.jackhuang.hmcl.util.i18n.Locales; import org.jackhuang.hmcl.util.i18n.Locales;
import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG; import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG;
import static org.jackhuang.hmcl.ui.FXUtils.onInvalidating;
import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
import java.net.Proxy; import java.net.Proxy;
@ -194,9 +194,10 @@ public final class SettingsPage extends StackPane implements DecoratorPage {
backgroundItem.setCustomUserData(EnumBackgroundImage.CUSTOM); backgroundItem.setCustomUserData(EnumBackgroundImage.CUSTOM);
backgroundItem.getGroup().getToggles().stream().filter(it -> it.getUserData() == CONFIG.getBackgroundImageType()).findFirst().ifPresent(it -> it.setSelected(true)); backgroundItem.getGroup().getToggles().stream().filter(it -> it.getUserData() == CONFIG.getBackgroundImageType()).findFirst().ifPresent(it -> it.setSelected(true));
CONFIG.backgroundImageProperty().addListener(onInvalidating(this::initBackgroundItemSubtitle)); backgroundItem.subtitleProperty().bind(
CONFIG.backgroundImageTypeProperty().addListener(onInvalidating(this::initBackgroundItemSubtitle)); new When(CONFIG.backgroundImageTypeProperty().isEqualTo(EnumBackgroundImage.DEFAULT))
initBackgroundItemSubtitle(); .then(i18n("launcher.background.default"))
.otherwise(CONFIG.backgroundImageProperty()));
backgroundItem.setToggleSelectedListener(newValue -> backgroundItem.setToggleSelectedListener(newValue ->
CONFIG.setBackgroundImageType((EnumBackgroundImage) newValue.getUserData())); CONFIG.setBackgroundImageType((EnumBackgroundImage) newValue.getUserData()));
@ -215,17 +216,6 @@ public final class SettingsPage extends StackPane implements DecoratorPage {
Platform.runLater(() -> JFXDepthManager.setDepth(picker, 0)); Platform.runLater(() -> JFXDepthManager.setDepth(picker, 0));
} }
private void initBackgroundItemSubtitle() {
switch (CONFIG.getBackgroundImageType()) {
case DEFAULT:
backgroundItem.setSubtitle(i18n("launcher.background.default"));
break;
case CUSTOM:
backgroundItem.setSubtitle(CONFIG.getBackgroundImage());
break;
}
}
public String getTitle() { public String getTitle() {
return title.get(); return title.get();
} }