SAO Utils 2的音频可视化插件
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

181 lines
6.7 KiB

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import NERvGear 1.0 as NVG
import NERvGear.Preferences 1.0 as P
import "."
NVG.Window {
id: window
title: qsTr("ADV-Plugin: Settings")
visible: false
minimumWidth: 480
minimumHeight: 580
maximumWidth: minimumWidth
maximumHeight: minimumHeight
width: minimumWidth
height: minimumHeight
Behavior on minimumHeight {
PropertyAnimation {
duration: 500
easing.type: Easing.InOutBack
}
}
property var configuration
property var old_style_cfg
ColumnLayout {
id: root
anchors.fill: parent
anchors.margins: 16
anchors.topMargin: 0
Row {
spacing: 350
ToolButton {
text: qsTr("Save")
onClicked: {
configuration = rootPreference.save();
let index = configuration["index"];
widget.settings[Common.stylesURL[index]] = configuration[Common.stylesURL[index]];
delete configuration[Common.stylesURL[index]];
widget.settings.styles = configuration;
widget.settings.current_style = Common.stylesURL[index];
styleDialog.active = false;
}
}
ToolButton {
text: qsTr("Reset")
onClicked: {
styleLoader.load();
let cfg = rootPreference.save();
let index = cfg["index"];
widget.settings[Common.stylesURL[index]] = cfg[Common.stylesURL[index]];
widget.setStyleURL("");
widget.setStyleURL(Qt.resolvedUrl(Common.stylesURL[widget.settings.styles["index"]]));
}
}
}
Label {
Layout.alignment: Qt.AlignCenter
text: qsTr("Settings")
font.pixelSize: 24
}
Flickable {
Layout.fillWidth: true
Layout.fillHeight: true
clip: true
contentWidth: preferenceLayout.implicitWidth
contentHeight: preferenceLayout.implicitHeight
ColumnLayout {
id: preferenceLayout
width: root.width
P.PreferenceGroup {
id: rootPreference
Layout.fillWidth: true
label: qsTr("Configuration")
onPreferenceEdited: {
let cfg = rootPreference.save();
// console.log(JSON.stringify(cfg, null, 2));
let index = cfg["index"];
if (widget.settings.styles["index"] !== index) {
widget.setStyleURL("");
widget.settings[Common.stylesURL[widget.settings.styles["index"]]] = old_style_cfg;
old_style_cfg = widget.settings[Common.stylesURL[index]];
}
widget.settings[Common.stylesURL[index]] = cfg[Common.stylesURL[index]];
delete cfg[Common.stylesURL[index]];
widget.settings.styles = cfg;
widget.setStyleURL(Qt.resolvedUrl(Common.stylesURL[index]));
}
P.SelectPreference {
id: styleList
name: "index"
label: qsTr("Styles")
icon.name: "solid:\uf1fc"
defaultValue: 0
model: Common.styles
}
P.Separator {}
P.PreferenceLoader {
id: styleLoader
name: Common.stylesURL[styleList.value]
source: Qt.resolvedUrl(Common.stylesCFG[styleList.value])
onLoaded: {
let cfg = save();
if (!widget.settings[Common.stylesURL[styleList.value]]) {
widget.settings[Common.stylesURL[styleList.value]] = cfg;
} else if(widget.settings[Common.stylesURL[styleList.value]]["__version"] === cfg["__version"]) {
load(widget.settings[Common.stylesURL[styleList.value]]);
} else {
widget.settings[Common.stylesURL[styleList.value]] = cfg;
}
window.minimumHeight = cfg["__cfg_height"];
}
onContentItemChanged: {
if(contentItem) {
contentItem.label = Common.styles[styleList.value];
}
}
}
P.Separator {}
Component.onCompleted: {
if(!widget.settings.styles) {
configuration = rootPreference.save();
let index = configuration["index"];
widget.settings[Common.stylesURL[index]] = configuration[Common.stylesURL[index]];
old_style_cfg = configuration[Common.stylesURL[index]];
delete configuration[Common.stylesURL[index]];
widget.settings.current_style = Common.stylesURL[index];
widget.settings.styles = configuration;
}
let index = Common.stylesURL.indexOf(widget.settings.current_style);
if (index === -1) {
index = 0;
widget.settings.current_style = Common.stylesURL[index];
}
widget.settings.styles["index"] = index;
widget.setStyleURL(Qt.resolvedUrl(Common.stylesURL[widget.settings.styles["index"]]));
rootPreference.load(widget.settings.styles);
configuration = widget.settings.styles;
old_style_cfg = widget.settings[Common.stylesURL[index]];
styleLoader.load(widget.settings[Common.stylesURL[index]]);
}
}
}
}
}
onClosing: {
widget.setStyleURL("");
widget.settings[Common.stylesURL[widget.settings.styles["index"]]] = old_style_cfg;
widget.settings.styles = configuration;
widget.setStyleURL(Qt.resolvedUrl(Common.stylesURL[widget.settings.styles["index"]]));
styleDialog.active = false;
}
}