|
|
|
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
|
|
|
|
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: window.width - 120
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|