mirror of
https://github.com/octopusYan/alist-gui.git
synced 2024-11-23 20:46:42 +08:00
feat: 主题颜色
This commit is contained in:
parent
a9dd63b251
commit
a0e5e16afc
@ -1,6 +1,7 @@
|
|||||||
package cn.octopusyan.alistgui.manager;
|
package cn.octopusyan.alistgui.manager;
|
||||||
|
|
||||||
import javafx.scene.layout.Pane;
|
import javafx.scene.layout.Pane;
|
||||||
|
import javafx.stage.Stage;
|
||||||
import javafx.stage.Window;
|
import javafx.stage.Window;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -13,6 +14,16 @@ public class WindowsUtil {
|
|||||||
public static final Map<Pane, Double> paneXOffset = new HashMap<>();
|
public static final Map<Pane, Double> paneXOffset = new HashMap<>();
|
||||||
public static final Map<Pane, Double> paneYOffset = new HashMap<>();
|
public static final Map<Pane, Double> paneYOffset = new HashMap<>();
|
||||||
|
|
||||||
|
public static void bindShadow(Pane pane) {
|
||||||
|
pane.setStyle("""
|
||||||
|
-fx-background-radius: 5;
|
||||||
|
-fx-border-radius: 5;
|
||||||
|
-fx-effect: dropshadow(gaussian, rgba(0, 0, 0, 0.3), 15, 0, 0, 0);
|
||||||
|
-fx-background-insets: 20;
|
||||||
|
-fx-padding: 20;
|
||||||
|
""");
|
||||||
|
}
|
||||||
|
|
||||||
public static void bindDragged(Pane pane) {
|
public static void bindDragged(Pane pane) {
|
||||||
Window stage = getStage(pane);
|
Window stage = getStage(pane);
|
||||||
pane.setOnMousePressed(event -> {
|
pane.setOnMousePressed(event -> {
|
||||||
@ -25,7 +36,7 @@ public class WindowsUtil {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Window getStage(Pane pane) {
|
public static Stage getStage(Pane pane) {
|
||||||
return pane.getScene().getWindow();
|
return (Stage) pane.getScene().getWindow();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cn.octopusyan.alistgui.util.alert;
|
package cn.octopusyan.alistgui.util.alert;
|
||||||
|
|
||||||
import cn.octopusyan.alistgui.config.Context;
|
import cn.octopusyan.alistgui.config.Context;
|
||||||
|
import cn.octopusyan.alistgui.manager.WindowsUtil;
|
||||||
import javafx.beans.binding.Bindings;
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
@ -8,6 +9,8 @@ import javafx.scene.Node;
|
|||||||
import javafx.scene.control.*;
|
import javafx.scene.control.*;
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.scene.layout.Pane;
|
import javafx.scene.layout.Pane;
|
||||||
|
import javafx.scene.paint.Color;
|
||||||
|
import javafx.stage.StageStyle;
|
||||||
import javafx.stage.Window;
|
import javafx.stage.Window;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -24,17 +27,22 @@ public class ProgressBuilder extends BaseBuilder<ProgressBuilder, Dialog<Void>>
|
|||||||
public ProgressBuilder(Dialog<Void> dialog, Window mOwner) {
|
public ProgressBuilder(Dialog<Void> dialog, Window mOwner) {
|
||||||
super(dialog, mOwner);
|
super(dialog, mOwner);
|
||||||
|
|
||||||
|
DialogPane dialogPane = dialog.getDialogPane();
|
||||||
|
dialogPane.getScene().setFill(Color.TRANSPARENT);
|
||||||
|
WindowsUtil.bindDragged(dialogPane);
|
||||||
|
WindowsUtil.bindShadow(dialogPane);
|
||||||
|
WindowsUtil.getStage(dialogPane).initStyle(StageStyle.TRANSPARENT);
|
||||||
var content = getContent();
|
var content = getContent();
|
||||||
|
|
||||||
DialogPane pane = dialog.getDialogPane();
|
dialogPane.setContent(content);
|
||||||
pane.setContent(content);
|
dialogPane.getButtonTypes().add(new ButtonType(
|
||||||
pane.getButtonTypes().add(new ButtonType(
|
|
||||||
Context.getLanguageBinding("label.cancel").get(),
|
Context.getLanguageBinding("label.cancel").get(),
|
||||||
ButtonType.CANCEL.getButtonData()
|
ButtonType.CANCEL.getButtonData()
|
||||||
));
|
));
|
||||||
for (Node child : pane.getChildren()) {
|
|
||||||
if (child instanceof ButtonBar bar) {
|
for (Node child : dialogPane.getChildren()) {
|
||||||
pane.getChildren().remove(child);
|
if (child instanceof ButtonBar) {
|
||||||
|
dialogPane.getChildren().remove(child);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
-fx-padding: 2 5 2 5;
|
-fx-padding: 2 5 2 5;
|
||||||
-fx-text-fill: white;
|
-fx-text-fill: white;
|
||||||
-fx-font-size: 15;
|
-fx-font-size: 15;
|
||||||
-fx-background-color: #1bc964;
|
-fx-background-color: -color-success-3;
|
||||||
-fx-background-radius: 10;
|
-fx-background-radius: 10;
|
||||||
-fx-text-alignment: CENTER;
|
-fx-text-alignment: CENTER;
|
||||||
-fx-border-radius: 10;
|
-fx-border-radius: 10;
|
||||||
@ -22,34 +22,34 @@
|
|||||||
-fx-padding: 10 40 10 40;
|
-fx-padding: 10 40 10 40;
|
||||||
-fx-border-radius: 15;
|
-fx-border-radius: 15;
|
||||||
-fx-border-width: 2;
|
-fx-border-width: 2;
|
||||||
-fx-opacity: 0.9;
|
-fx-opacity: 1;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
-fx-opacity: 1.0;
|
-fx-opacity: 0.9;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#startButton {
|
#startButton {
|
||||||
-fx-background-color: #fa6057;
|
-fx-background-color: -color-danger-emphasis;
|
||||||
-fx-border-color: #fa6057;
|
-fx-border-color: -color-danger-emphasis;
|
||||||
-fx-text-fill: white;
|
-fx-text-fill: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
#passwordButton {
|
#passwordButton {
|
||||||
-fx-background-color: #1bc964;
|
-fx-background-color: -color-success-3;
|
||||||
-fx-border-color: #1bc964;
|
-fx-border-color: -color-success-3;
|
||||||
}
|
}
|
||||||
|
|
||||||
#restartButton {
|
#restartButton {
|
||||||
-fx-background-color: linear-gradient(#57b4f2, #9198e5);
|
-fx-background-color: linear-gradient(to bottom right, -color-accent-3, -color-chart-6);
|
||||||
-fx-border-color: linear-gradient(#57b4f2, #9198e5);
|
-fx-border-color: linear-gradient(to bottom right, -color-accent-3, -color-chart-6);
|
||||||
-fx-text-fill: white;
|
-fx-text-fill: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
#moreButton {
|
#moreButton {
|
||||||
-fx-background-color: transparent;
|
-fx-background-color: transparent;
|
||||||
-fx-text-fill: #9254d1;
|
-fx-text-fill: -color-chart-6;
|
||||||
-fx-border-color: #9254d1;
|
-fx-border-color: -color-chart-6;
|
||||||
}
|
}
|
||||||
|
|
||||||
#logArea {
|
#logArea {
|
||||||
@ -57,34 +57,12 @@
|
|||||||
-fx-font-size: 20;
|
-fx-font-size: 20;
|
||||||
-fx-background-radius: 15;
|
-fx-background-radius: 15;
|
||||||
-fx-border-radius: 15;
|
-fx-border-radius: 15;
|
||||||
-fx-border-color: transparent;
|
|
||||||
-fx-background-insets: 0;
|
-fx-background-insets: 0;
|
||||||
-fx-background-color: #e9e9e9;
|
|
||||||
|
|
||||||
&:focused {
|
|
||||||
-fx-background-radius: 15;
|
|
||||||
-fx-border-radius: 15;
|
|
||||||
-fx-border-color: transparent;
|
|
||||||
-fx-background-color: #e9e9e9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
-fx-padding: 0 15 0 15;
|
-fx-padding: 0 15 0 15;
|
||||||
-fx-background-radius: 15;
|
-fx-background-radius: 15;
|
||||||
-fx-background-color: #e9e9e9;
|
|
||||||
-fx-border-radius: 15;
|
-fx-border-radius: 15;
|
||||||
-fx-border-color: transparent;
|
|
||||||
|
|
||||||
&:focused {
|
|
||||||
-fx-background-color: #e9e9e9;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.scroll-pane {
|
|
||||||
-fx-background-color: transparent;
|
|
||||||
|
|
||||||
.viewport {
|
|
||||||
-fx-background-color: transparent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -14,21 +14,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#closeIcon {
|
#closeIcon {
|
||||||
-fx-color: #fa6057;
|
-fx-icon-color: -color-chart-1;
|
||||||
-fx-background-color: #fa6057;
|
|
||||||
-fx-icon-color: #fa6057;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#minimizeIcon {
|
#minimizeIcon {
|
||||||
-fx-color: #fbbc2e;
|
-fx-icon-color: -color-chart-2;
|
||||||
-fx-background-color: #fbbc2e;
|
|
||||||
-fx-icon-color: #fbbc2e;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#alwaysOnTopIcon {
|
#alwaysOnTopIcon {
|
||||||
-fx-color: #27c940;
|
-fx-icon-color: -color-chart-3;
|
||||||
-fx-background-color: #27c940;
|
|
||||||
-fx-icon-color: #27c940;
|
|
||||||
|
|
||||||
&:always-on-top {
|
&:always-on-top {
|
||||||
-fx-opacity: 1.0;
|
-fx-opacity: 1.0;
|
||||||
@ -40,62 +34,54 @@
|
|||||||
/**************************************************
|
/**************************************************
|
||||||
* Tab label
|
* Tab label
|
||||||
**************************************************/
|
**************************************************/
|
||||||
|
|
||||||
#tabPane {
|
#tabPane {
|
||||||
|
-fx-background-color: transparent;
|
||||||
|
|
||||||
.tab-header-area {
|
.tab-header-area {
|
||||||
-fx-background-radius: 0 0 0 0;
|
|
||||||
-fx-background-color: transparent;
|
-fx-background-color: transparent;
|
||||||
}
|
|
||||||
|
|
||||||
.headers-region {
|
.tab-header-background {
|
||||||
-fx-alignment: TOP_CENTER;
|
-fx-background-color: transparent;
|
||||||
-fx-background-color: #e9e9e9;
|
|
||||||
-fx-background-radius: 15;
|
|
||||||
-fx-padding: 5 0 5 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-header-background {
|
|
||||||
-fx-background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab {
|
|
||||||
-fx-padding: 10 20 10 20;
|
|
||||||
-fx-background-radius: 15;
|
|
||||||
-fx-background-color: transparent;
|
|
||||||
-fx-border-width: 0;
|
|
||||||
|
|
||||||
.ikonli-font-icon {
|
|
||||||
-fx-icon-color: black;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-label {
|
.headers-region {
|
||||||
-fx-text-alignment: CENTER;
|
//-fx-background-color: #f9f9fb;
|
||||||
-fx-alignment: CENTER;
|
-fx-background-color: -color-neutral-muted;
|
||||||
}
|
-fx-background-radius: 10;
|
||||||
|
|
||||||
&:selected {
|
.tab {
|
||||||
-fx-background-color: #2c69e0;
|
-fx-padding: 5;
|
||||||
|
-fx-background-color: transparent;
|
||||||
|
|
||||||
.ikonli-font-icon {
|
.tab-container {
|
||||||
-fx-icon-color: white;
|
-fx-background-color: transparent;
|
||||||
}
|
-fx-border-width: 0;
|
||||||
|
|
||||||
.tab-label {
|
.tab-label {
|
||||||
-fx-text-fill: white;
|
-fx-pref-width: 80;
|
||||||
}
|
-fx-padding: 10 0;
|
||||||
|
-fx-background-radius: 10;
|
||||||
|
-fx-text-alignment: CENTER;
|
||||||
|
-fx-alignment: CENTER;
|
||||||
|
-fx-font-size: 15px;
|
||||||
|
-fx-border-width: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.focus-indicator {
|
&:selected {
|
||||||
-fx-border-width: 0;
|
|
||||||
-fx-border-color: transparent;
|
.tab-label {
|
||||||
-fx-border-insets: 0;
|
-fx-background-color: -color-accent-5;
|
||||||
|
-fx-text-fill: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ikonli-font-icon {
|
||||||
|
-fx-icon-color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-label {
|
|
||||||
-fx-font-size: 15px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************
|
/**************************************************
|
||||||
@ -110,15 +96,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#document {
|
#document {
|
||||||
-fx-text-fill: #1bc964;
|
-fx-text-fill: -color-success-5;
|
||||||
}
|
}
|
||||||
|
|
||||||
#github {
|
#github {
|
||||||
-fx-text-fill: #1f4ca6;
|
-fx-text-fill: -color-accent-5;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sponsor {
|
#sponsor {
|
||||||
-fx-text-fill: #f22760;
|
-fx-text-fill: -color-danger-emphasis;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ikonli-font-icon {
|
.ikonli-font-icon {
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
-fx-border-radius: 15;
|
-fx-border-radius: 15;
|
||||||
|
|
||||||
// 窗口阴影
|
// 窗口阴影
|
||||||
-fx-background-color: rgba(255, 255, 255, 1);
|
//-fx-background-color: rgba(255, 255, 255, 1);
|
||||||
-fx-effect: dropshadow(gaussian, rgba(0, 0, 0, 0.3), 15, 0, 0, 0);
|
-fx-effect: dropshadow(gaussian, rgba(0, 0, 0, 0.3), 15, 0, 0, 0);
|
||||||
-fx-background-insets: 20;
|
-fx-background-insets: 20;
|
||||||
-fx-padding: 20;
|
-fx-padding: 20;
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.proxy-panel {
|
.proxy-panel {
|
||||||
-fx-background-color: #e9e9e9;
|
-fx-background-color: -color-neutral-muted;
|
||||||
-fx-background-radius: 15;
|
-fx-background-radius: 15;
|
||||||
-fx-border-radius: 15;
|
-fx-border-radius: 15;
|
||||||
-fx-border-width: 5;
|
-fx-border-width: 5;
|
||||||
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
.proxy-label {
|
.proxy-label {
|
||||||
-fx-font-size: 15;
|
-fx-font-size: 15;
|
||||||
-fx-text-fill: #2c69e0;
|
-fx-text-fill: -color-accent-5;
|
||||||
-fx-text-alignment: CENTER;
|
-fx-text-alignment: CENTER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user