|
|
|
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 NERvGear.Controls 1.0
|
|
|
|
|
|
|
|
import "."
|
|
|
|
|
|
|
|
|
|
|
|
NVG.Window {
|
|
|
|
title: qsTr("ADV Server")
|
|
|
|
visible: true
|
|
|
|
minimumWidth: 480
|
|
|
|
minimumHeight: 600
|
|
|
|
width: minimumWidth
|
|
|
|
height: minimumHeight
|
|
|
|
|
|
|
|
Page {
|
|
|
|
id: cfg_page
|
|
|
|
anchors.fill: parent
|
|
|
|
|
|
|
|
header: TitleBar {
|
|
|
|
text: qsTr("ADV Server")
|
|
|
|
standardButtons: Dialog.Save | Dialog.Reset
|
|
|
|
|
|
|
|
onAccepted: {
|
|
|
|
let cfg = Object.assign(Common.deepClone(Common.serverCFG), rootPreference.save());
|
|
|
|
|
|
|
|
if (cfg.server.logger) {
|
|
|
|
Common.debug = _debug.value;
|
|
|
|
} else {
|
|
|
|
Common.debug = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!Common.isObjectValueEqual(cfg, Common.serverCFG)) {
|
|
|
|
Common.setWsocket(false);
|
|
|
|
Common.serverCFG = cfg;
|
|
|
|
|
|
|
|
let ini_text = Common.convertINIString(Common.serverCFG);
|
|
|
|
Common.writeFile(Common.iniFile, ini_text);
|
|
|
|
Common.rebootServer(true);
|
|
|
|
Common.setWsocket(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
serverDialog.active = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
onReset: {
|
|
|
|
rootPreference.load(Common.defaultServerCFG);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ColumnLayout {
|
|
|
|
id: root
|
|
|
|
anchors.fill: parent
|
|
|
|
anchors.margins: 16
|
|
|
|
anchors.topMargin: 16
|
|
|
|
|
|
|
|
Flickable {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
Layout.fillHeight: true
|
|
|
|
|
|
|
|
clip: true
|
|
|
|
contentWidth: preferenceLayout.implicitWidth
|
|
|
|
contentHeight: preferenceLayout.implicitHeight
|
|
|
|
|
|
|
|
ColumnLayout {
|
|
|
|
id: preferenceLayout
|
|
|
|
width: root.width
|
|
|
|
|
|
|
|
P.SwitchPreference {
|
|
|
|
id: _debug
|
|
|
|
Layout.fillWidth: true
|
|
|
|
name: "debug"
|
|
|
|
label: qsTr("Debug Mode")
|
|
|
|
message: qsTr("Logging must be enabled and saved.")
|
|
|
|
warning: value ? qsTr("This will disable the error recovery function!") : ""
|
|
|
|
enabled: Common.serverCFG.server.logger
|
|
|
|
defaultValue: Common.debug
|
|
|
|
onPreferenceEdited: {
|
|
|
|
Common.debug = value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
P.PreferenceGroup {
|
|
|
|
id: rootPreference
|
|
|
|
Layout.fillWidth: true
|
|
|
|
|
|
|
|
P.PreferenceGroup {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
name: "server"
|
|
|
|
Heading { text: qsTr("General") }
|
|
|
|
|
|
|
|
P.SpinPreference {
|
|
|
|
name: "port"
|
|
|
|
label: qsTr("Port")
|
|
|
|
display: P.TextFieldPreference.ExpandLabel
|
|
|
|
editable: true
|
|
|
|
from: 1
|
|
|
|
to: 65535
|
|
|
|
value: String(value)
|
|
|
|
defaultValue: Common.defaultServerCFG["server"]["port"]
|
|
|
|
}
|
|
|
|
|
|
|
|
P.SpinPreference {
|
|
|
|
name: "maxclient"
|
|
|
|
label: qsTr("Max Number of Clients")
|
|
|
|
message: qsTr("Maximum number of server connections\n(All ADV widgets share one connection).")
|
|
|
|
display: P.TextFieldPreference.ExpandLabel
|
|
|
|
editable: true
|
|
|
|
from: 1
|
|
|
|
to: 15
|
|
|
|
value: String(value)
|
|
|
|
defaultValue: Common.defaultServerCFG["server"]["maxclient"]
|
|
|
|
}
|
|
|
|
|
|
|
|
P.SwitchPreference {
|
|
|
|
id: _server_logger
|
|
|
|
name: "logger"
|
|
|
|
label: qsTr("Enable Logging")
|
|
|
|
message: qsTr("Enable to output log file (ADV_Log.log).")
|
|
|
|
defaultValue: Common.defaultServerCFG["server"]["logger"]
|
|
|
|
}
|
|
|
|
|
|
|
|
P.ItemPreference {
|
|
|
|
label: qsTr("Open Log File")
|
|
|
|
Layout.fillWidth: true
|
|
|
|
enabled: _debug.enabled
|
|
|
|
select: function () {
|
|
|
|
NVG.SystemCall.execute("explorer", NVG.Url.toLocalFile(Qt.resolvedUrl("../bin/ADV_Log.log")).replace(/\//g, '\\'));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
P.PreferenceGroup {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
name: "fft"
|
|
|
|
Heading { text: qsTr("Data") }
|
|
|
|
|
|
|
|
P.SpinPreference {
|
|
|
|
name: "attack"
|
|
|
|
label: qsTr("Increase Factor")
|
|
|
|
message: qsTr("The larger the value, the slower the data increase.")
|
|
|
|
display: P.TextFieldPreference.ExpandLabel
|
|
|
|
editable: true
|
|
|
|
from: 1
|
|
|
|
to: 20000
|
|
|
|
defaultValue: Common.defaultServerCFG["fft"]["attack"]
|
|
|
|
}
|
|
|
|
|
|
|
|
P.SpinPreference {
|
|
|
|
name: "decay"
|
|
|
|
label: qsTr("Reduction Factor")
|
|
|
|
message: qsTr("The larger the value, the slower the data reduction.")
|
|
|
|
display: P.TextFieldPreference.ExpandLabel
|
|
|
|
editable: true
|
|
|
|
from: 1
|
|
|
|
to: 20000
|
|
|
|
defaultValue: Common.defaultServerCFG["fft"]["decay"]
|
|
|
|
}
|
|
|
|
|
|
|
|
P.SpinPreference {
|
|
|
|
name: "peakthr"
|
|
|
|
label: qsTr("Peak Extra Increment")
|
|
|
|
message: qsTr("Extra increment of data normalization peak.")
|
|
|
|
display: P.TextFieldPreference.ExpandLabel
|
|
|
|
editable: true
|
|
|
|
from: 0
|
|
|
|
to: 1000
|
|
|
|
defaultValue: Common.defaultServerCFG["fft"]["peakthr"]
|
|
|
|
}
|
|
|
|
|
|
|
|
P.SpinPreference {
|
|
|
|
name: "norspeed"
|
|
|
|
label: qsTr("Dynamic Normalization Factor")
|
|
|
|
message: qsTr("Convergence speed of data normalization peak.")
|
|
|
|
display: P.TextFieldPreference.ExpandLabel
|
|
|
|
editable: true
|
|
|
|
from: 1
|
|
|
|
to: 100
|
|
|
|
defaultValue: Common.defaultServerCFG["fft"]["norspeed"]
|
|
|
|
}
|
|
|
|
|
|
|
|
P.SpinPreference {
|
|
|
|
id: _fps
|
|
|
|
name: "fps"
|
|
|
|
label: qsTr("Transmission Rate")
|
|
|
|
message: qsTr("Number of data sent per second.")
|
|
|
|
display: P.TextFieldPreference.ExpandLabel
|
|
|
|
editable: true
|
|
|
|
from: 10
|
|
|
|
to: 60
|
|
|
|
defaultValue: Common.defaultServerCFG["fft"]["fps"]
|
|
|
|
}
|
|
|
|
|
|
|
|
P.SpinPreference {
|
|
|
|
name: "changespeed"
|
|
|
|
label: qsTr("Change Speed")
|
|
|
|
message: qsTr("Adjust the data change speed.")
|
|
|
|
display: P.TextFieldPreference.ExpandLabel
|
|
|
|
editable: true
|
|
|
|
from: 1
|
|
|
|
to: _fps.value - 1
|
|
|
|
defaultValue: Common.defaultServerCFG["fft"]["changespeed"]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Component.onCompleted: {
|
|
|
|
rootPreference.load(Common.serverCFG)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
onClosing: {
|
|
|
|
serverDialog.active = false;
|
|
|
|
}
|
|
|
|
}
|