mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-16 07:16:27 -04:00
Remove theme in Settings
This commit is contained in:
parent
b252266a46
commit
9896165b68
@ -66,6 +66,7 @@ public final class Config implements Cloneable, Observable {
|
|||||||
.registerTypeAdapter(ObservableSet.class, new ObservableSetCreator())
|
.registerTypeAdapter(ObservableSet.class, new ObservableSetCreator())
|
||||||
.registerTypeAdapter(ObservableMap.class, new ObservableMapCreator())
|
.registerTypeAdapter(ObservableMap.class, new ObservableMapCreator())
|
||||||
.registerTypeAdapterFactory(new JavaFxPropertyTypeAdapterFactory(true, true))
|
.registerTypeAdapterFactory(new JavaFxPropertyTypeAdapterFactory(true, true))
|
||||||
|
.registerTypeAdapter(Theme.class, new Theme.TypeAdapter())
|
||||||
.registerTypeAdapter(EnumBackgroundImage.class, new EnumOrdinalDeserializer<>(EnumBackgroundImage.class)) // backward compatibility for backgroundType
|
.registerTypeAdapter(EnumBackgroundImage.class, new EnumOrdinalDeserializer<>(EnumBackgroundImage.class)) // backward compatibility for backgroundType
|
||||||
.registerTypeAdapter(Proxy.Type.class, new EnumOrdinalDeserializer<>(Proxy.Type.class)) // backward compatibility for hasProxy
|
.registerTypeAdapter(Proxy.Type.class, new EnumOrdinalDeserializer<>(Proxy.Type.class)) // backward compatibility for hasProxy
|
||||||
.setPrettyPrinting()
|
.setPrettyPrinting()
|
||||||
@ -113,7 +114,7 @@ public final class Config implements Cloneable, Observable {
|
|||||||
private StringProperty proxyPass = new SimpleStringProperty();
|
private StringProperty proxyPass = new SimpleStringProperty();
|
||||||
|
|
||||||
@SerializedName("theme")
|
@SerializedName("theme")
|
||||||
private StringProperty theme = new SimpleStringProperty();
|
private ObjectProperty<Theme> theme = new SimpleObjectProperty<>(Theme.BLUE);
|
||||||
|
|
||||||
@SerializedName("localization")
|
@SerializedName("localization")
|
||||||
private StringProperty localization = new SimpleStringProperty();
|
private StringProperty localization = new SimpleStringProperty();
|
||||||
@ -320,15 +321,15 @@ public final class Config implements Cloneable, Observable {
|
|||||||
return proxyPass;
|
return proxyPass;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTheme() {
|
public Theme getTheme() {
|
||||||
return theme.get();
|
return theme.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTheme(String theme) {
|
public void setTheme(Theme theme) {
|
||||||
this.theme.set(theme);
|
this.theme.set(theme);
|
||||||
}
|
}
|
||||||
|
|
||||||
public StringProperty themeProperty() {
|
public ObjectProperty<Theme> themeProperty() {
|
||||||
return theme;
|
return theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,31 +257,6 @@ public class Settings {
|
|||||||
selectedAccount.get();
|
selectedAccount.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************
|
|
||||||
* THEME *
|
|
||||||
****************************************/
|
|
||||||
|
|
||||||
private final ImmediateObjectProperty<Theme> theme = new ImmediateObjectProperty<Theme>(this, "theme", Theme.getTheme(CONFIG.getTheme()).orElse(Theme.BLUE)) {
|
|
||||||
@Override
|
|
||||||
public void invalidated() {
|
|
||||||
super.invalidated();
|
|
||||||
|
|
||||||
CONFIG.setTheme(get().getName().toLowerCase());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public Theme getTheme() {
|
|
||||||
return theme.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTheme(Theme theme) {
|
|
||||||
this.theme.set(theme);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ImmediateObjectProperty<Theme> themeProperty() {
|
|
||||||
return theme;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************
|
/****************************************
|
||||||
* PROFILES *
|
* PROFILES *
|
||||||
****************************************/
|
****************************************/
|
||||||
|
@ -24,6 +24,11 @@ import org.jackhuang.hmcl.util.FileUtils;
|
|||||||
import org.jackhuang.hmcl.util.IOUtils;
|
import org.jackhuang.hmcl.util.IOUtils;
|
||||||
import org.jackhuang.hmcl.util.Logging;
|
import org.jackhuang.hmcl.util.Logging;
|
||||||
|
|
||||||
|
import com.google.gson.stream.JsonReader;
|
||||||
|
import com.google.gson.stream.JsonWriter;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@ -115,7 +120,7 @@ public class Theme {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static ObjectBinding<Color> foregroundFillBinding() {
|
public static ObjectBinding<Color> foregroundFillBinding() {
|
||||||
return Bindings.createObjectBinding(() -> Settings.INSTANCE.getTheme().getForegroundColor(), Settings.INSTANCE.themeProperty());
|
return Bindings.createObjectBinding(() -> CONFIG.getTheme().getForegroundColor(), CONFIG.themeProperty());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ObjectBinding<Color> blackFillBinding() {
|
public static ObjectBinding<Color> blackFillBinding() {
|
||||||
@ -125,4 +130,16 @@ public class Theme {
|
|||||||
public static ObjectBinding<Color> whiteFillBinding() {
|
public static ObjectBinding<Color> whiteFillBinding() {
|
||||||
return Bindings.createObjectBinding(() -> Color.WHITE);
|
return Bindings.createObjectBinding(() -> Color.WHITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class TypeAdapter extends com.google.gson.TypeAdapter<Theme> {
|
||||||
|
@Override
|
||||||
|
public void write(JsonWriter out, Theme value) throws IOException {
|
||||||
|
out.value(value.getName().toLowerCase());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Theme read(JsonReader in) throws IOException {
|
||||||
|
return getTheme(in.nextString()).orElse(Theme.BLUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,8 @@ import org.jackhuang.hmcl.ui.construct.TaskExecutorDialogPane;
|
|||||||
import org.jackhuang.hmcl.util.FutureCallback;
|
import org.jackhuang.hmcl.util.FutureCallback;
|
||||||
import org.jackhuang.hmcl.util.JavaVersion;
|
import org.jackhuang.hmcl.util.JavaVersion;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG;
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public final class Controllers {
|
public final class Controllers {
|
||||||
@ -106,7 +108,7 @@ public final class Controllers {
|
|||||||
decorator.setCustomMaximize(false);
|
decorator.setCustomMaximize(false);
|
||||||
|
|
||||||
scene = new Scene(decorator, 804, 521);
|
scene = new Scene(decorator, 804, 521);
|
||||||
scene.getStylesheets().setAll(Settings.INSTANCE.getTheme().getStylesheets());
|
scene.getStylesheets().setAll(CONFIG.getTheme().getStylesheets());
|
||||||
stage.setMinWidth(804);
|
stage.setMinWidth(804);
|
||||||
stage.setMaxWidth(804);
|
stage.setMaxWidth(804);
|
||||||
stage.setMinHeight(521);
|
stage.setMinHeight(521);
|
||||||
|
@ -43,6 +43,7 @@ import org.w3c.dom.Document;
|
|||||||
import org.w3c.dom.Element;
|
import org.w3c.dom.Element;
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG;
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
@ -64,7 +65,7 @@ public final class LogWindow extends Stage {
|
|||||||
|
|
||||||
public LogWindow() {
|
public LogWindow() {
|
||||||
setScene(new Scene(impl, 800, 480));
|
setScene(new Scene(impl, 800, 480));
|
||||||
getScene().getStylesheets().addAll(Settings.INSTANCE.getTheme().getStylesheets());
|
getScene().getStylesheets().addAll(CONFIG.getTheme().getStylesheets());
|
||||||
setTitle(i18n("logwindow.title"));
|
setTitle(i18n("logwindow.title"));
|
||||||
getIcons().add(new Image("/assets/img/icon.png"));
|
getIcons().add(new Image("/assets/img/icon.png"));
|
||||||
}
|
}
|
||||||
|
@ -202,13 +202,13 @@ public final class SettingsPage extends StackPane implements DecoratorPage {
|
|||||||
CONFIG.setBackgroundImageType((EnumBackgroundImage) newValue.getUserData()));
|
CONFIG.setBackgroundImageType((EnumBackgroundImage) newValue.getUserData()));
|
||||||
|
|
||||||
// theme
|
// theme
|
||||||
JFXColorPicker picker = new JFXColorPicker(Color.web(Settings.INSTANCE.getTheme().getColor()), null);
|
JFXColorPicker picker = new JFXColorPicker(Color.web(CONFIG.getTheme().getColor()), null);
|
||||||
picker.setCustomColorText(i18n("color.custom"));
|
picker.setCustomColorText(i18n("color.custom"));
|
||||||
picker.setRecentColorsText(i18n("color.recent"));
|
picker.setRecentColorsText(i18n("color.recent"));
|
||||||
picker.getCustomColors().setAll(Theme.SUGGESTED_COLORS);
|
picker.getCustomColors().setAll(Theme.SUGGESTED_COLORS);
|
||||||
picker.setOnAction(e -> {
|
picker.setOnAction(e -> {
|
||||||
Theme theme = Theme.custom(Theme.getColorDisplayName(picker.getValue()));
|
Theme theme = Theme.custom(Theme.getColorDisplayName(picker.getValue()));
|
||||||
Settings.INSTANCE.setTheme(theme);
|
CONFIG.setTheme(theme);
|
||||||
Controllers.getScene().getStylesheets().setAll(theme.getStylesheets());
|
Controllers.getScene().getStylesheets().setAll(theme.getStylesheets());
|
||||||
});
|
});
|
||||||
themeColorPickerContainer.getChildren().setAll(picker);
|
themeColorPickerContainer.getChildren().setAll(picker);
|
||||||
|
@ -21,14 +21,15 @@ import javafx.scene.Scene;
|
|||||||
import javafx.scene.image.Image;
|
import javafx.scene.image.Image;
|
||||||
import javafx.scene.web.WebView;
|
import javafx.scene.web.WebView;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jackhuang.hmcl.setting.Settings;
|
|
||||||
|
import static org.jackhuang.hmcl.setting.ConfigHolder.CONFIG;
|
||||||
|
|
||||||
public class WebStage extends Stage {
|
public class WebStage extends Stage {
|
||||||
private final WebView webView = new WebView();
|
private final WebView webView = new WebView();
|
||||||
|
|
||||||
public WebStage() {
|
public WebStage() {
|
||||||
setScene(new Scene(webView, 800, 480));
|
setScene(new Scene(webView, 800, 480));
|
||||||
getScene().getStylesheets().addAll(Settings.INSTANCE.getTheme().getStylesheets());
|
getScene().getStylesheets().addAll(CONFIG.getTheme().getStylesheets());
|
||||||
getIcons().add(new Image("/assets/img/icon.png"));
|
getIcons().add(new Image("/assets/img/icon.png"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user