569 lines
23 KiB
QML
569 lines
23 KiB
QML
import QtQuick 2.7
|
|
import QtQuick.Controls 2.0
|
|
import QtQuick.Layouts 1.3
|
|
import QtQuick.Dialogs 1.2
|
|
import ovras.advsettings 1.0
|
|
import "." // QTBUG-34418, singletons require explicit import to load qmldir file
|
|
import "common"
|
|
|
|
MyStackViewPage {
|
|
headerText: "Chaperone Proximity Warning Settings"
|
|
|
|
ColorDialog {
|
|
id: colorDialog
|
|
title: "Please choose a color"
|
|
onAccepted: {
|
|
console.log("You chose: " + colorDialog.color)
|
|
Qt.quit()
|
|
}
|
|
onRejected: {
|
|
console.log("Canceled")
|
|
Qt.quit()
|
|
}
|
|
}
|
|
|
|
content: ColumnLayout {
|
|
spacing: 36
|
|
|
|
ColumnLayout {
|
|
spacing: 0
|
|
MyToggleButton {
|
|
id: switchBeginnerToggle
|
|
text: "Switch to Beginner Mode"
|
|
onCheckedChanged: {
|
|
ChaperoneTabController.chaperoneSwitchToBeginnerEnabled = checked
|
|
}
|
|
}
|
|
RowLayout {
|
|
MyText {
|
|
text: "Activation Distance: "
|
|
Layout.preferredWidth: 250
|
|
}
|
|
MyPushButton2 {
|
|
id: switchBeginnerDistanceMinusButton
|
|
Layout.preferredWidth: 40
|
|
text: "-"
|
|
onClicked: {
|
|
var val = ChaperoneTabController.chaperoneSwitchToBeginnerDistance - 0.1
|
|
if (val <= 0) {
|
|
val = 0.1;
|
|
}
|
|
ChaperoneTabController.chaperoneSwitchToBeginnerDistance = val.toFixed(2)
|
|
}
|
|
}
|
|
|
|
MySlider {
|
|
id: switchBeginnerDistanceSlider
|
|
from: 0
|
|
to: 2.0
|
|
stepSize: 0.01
|
|
value: 0.5
|
|
Layout.fillWidth: true
|
|
onPositionChanged: {
|
|
var val = this.from + ( this.position * (this.to - this.from))
|
|
switchBeginnerDistanceText.text = val.toFixed(2)
|
|
}
|
|
onValueChanged: {
|
|
var val = switchBeginnerDistanceSlider.value.toFixed(2)
|
|
if (val < 0.01) {
|
|
val = 0.01
|
|
}
|
|
ChaperoneTabController.chaperoneSwitchToBeginnerDistance = val
|
|
switchBeginnerDistanceText.text = val
|
|
}
|
|
}
|
|
|
|
MyPushButton2 {
|
|
id: switchBeginnerDistancePlusButton
|
|
Layout.preferredWidth: 40
|
|
text: "+"
|
|
onClicked: {
|
|
var val = ChaperoneTabController.chaperoneSwitchToBeginnerDistance + 0.1
|
|
if (val > 2.0) {
|
|
val = 2.0;
|
|
}
|
|
ChaperoneTabController.chaperoneSwitchToBeginnerDistance = val.toFixed(2)
|
|
}
|
|
}
|
|
|
|
MyTextField {
|
|
id: switchBeginnerDistanceText
|
|
text: "0.00"
|
|
keyBoardUID: 801
|
|
Layout.preferredWidth: 100
|
|
Layout.leftMargin: 10
|
|
horizontalAlignment: Text.AlignHCenter
|
|
function onInputEvent(input) {
|
|
var val = parseFloat(input)
|
|
if (!isNaN(val)) {
|
|
if (val <= 0.0) {
|
|
val = 0.01
|
|
}
|
|
val = val.toFixed(2)
|
|
ChaperoneTabController.chaperoneSwitchToBeginnerDistance = val
|
|
text = val
|
|
} else {
|
|
text = ChaperoneTabController.chaperoneSwitchToBeginnerDistance.toFixed(2)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ColumnLayout {
|
|
spacing: 0
|
|
MyToggleButton {
|
|
id: hapticFeedbackToggle
|
|
text: "Trigger Haptic Feedback"
|
|
onCheckedChanged: {
|
|
ChaperoneTabController.chaperoneHapticFeedbackEnabled = checked
|
|
}
|
|
}
|
|
RowLayout {
|
|
MyText {
|
|
text: "Activation Distance: "
|
|
Layout.preferredWidth: 250
|
|
}
|
|
MyPushButton2 {
|
|
id: hapticFeedbackDistanceMinusButton
|
|
Layout.preferredWidth: 40
|
|
text: "-"
|
|
onClicked: {
|
|
var val = ChaperoneTabController.chaperoneHapticFeedbackDistance - 0.1
|
|
if (val <= 0) {
|
|
val = 0.1;
|
|
}
|
|
ChaperoneTabController.chaperoneHapticFeedbackDistance = val.toFixed(2)
|
|
}
|
|
}
|
|
|
|
MySlider {
|
|
id: hapticFeedbackDistanceSlider
|
|
from: 0
|
|
to: 2.0
|
|
stepSize: 0.01
|
|
value: 0.5
|
|
Layout.fillWidth: true
|
|
onPositionChanged: {
|
|
var val = this.from + ( this.position * (this.to - this.from))
|
|
hapticFeedbackDistanceText.text = val.toFixed(2)
|
|
}
|
|
onValueChanged: {
|
|
var val = hapticFeedbackDistanceSlider.value.toFixed(2)
|
|
if (val < 0.01) {
|
|
val = 0.01
|
|
}
|
|
ChaperoneTabController.chaperoneHapticFeedbackDistance = val
|
|
hapticFeedbackDistanceText.text = val
|
|
}
|
|
}
|
|
|
|
MyPushButton2 {
|
|
id: hapticFeedbackDistancePlusButton
|
|
Layout.preferredWidth: 40
|
|
text: "+"
|
|
onClicked: {
|
|
var val = ChaperoneTabController.chaperoneHapticFeedbackDistance + 0.1
|
|
if (val > 2.0) {
|
|
val = 2.0;
|
|
}
|
|
ChaperoneTabController.chaperoneHapticFeedbackDistance = val.toFixed(2)
|
|
}
|
|
}
|
|
|
|
MyTextField {
|
|
id: hapticFeedbackDistanceText
|
|
text: "0.00"
|
|
keyBoardUID: 805
|
|
Layout.preferredWidth: 100
|
|
Layout.leftMargin: 10
|
|
horizontalAlignment: Text.AlignHCenter
|
|
function onInputEvent(input) {
|
|
var val = parseFloat(input)
|
|
if (!isNaN(val)) {
|
|
if (val <= 0.0) {
|
|
val = 0.01
|
|
}
|
|
val = val.toFixed(2)
|
|
ChaperoneTabController.chaperoneHapticFeedbackDistance = val
|
|
text = val
|
|
} else {
|
|
text = ChaperoneTabController.chaperoneHapticFeedbackDistance.toFixed(2)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ColumnLayout {
|
|
spacing: 0
|
|
RowLayout {
|
|
spacing: 32
|
|
MyToggleButton {
|
|
id: audioWarningToggle
|
|
text: "Audio Warning"
|
|
onCheckedChanged: {
|
|
ChaperoneTabController.chaperoneAlarmSoundEnabled = checked
|
|
}
|
|
}
|
|
MyToggleButton {
|
|
id: audioWarningLoopingToggle
|
|
text: "Loop Audio"
|
|
onCheckedChanged: {
|
|
ChaperoneTabController.chaperoneAlarmSoundLooping = checked
|
|
audioWarningAdjustVolumeToggle.enabled = checked
|
|
}
|
|
}
|
|
MyToggleButton {
|
|
id: audioWarningAdjustVolumeToggle
|
|
text: "Adjust Volume"
|
|
enabled: false
|
|
onCheckedChanged: {
|
|
ChaperoneTabController.chaperoneAlarmSoundAdjustVolume = checked
|
|
}
|
|
}
|
|
}
|
|
RowLayout {
|
|
MyText {
|
|
text: "Activation Distance: "
|
|
Layout.preferredWidth: 250
|
|
}
|
|
MyPushButton2 {
|
|
id: audioWarningDistanceMinusButton
|
|
Layout.preferredWidth: 40
|
|
text: "-"
|
|
onClicked: {
|
|
var val = ChaperoneTabController.chaperoneAlarmSoundDistance - 0.1
|
|
if (val <= 0.0) {
|
|
val = 0.01;
|
|
}
|
|
ChaperoneTabController.chaperoneAlarmSoundDistance = val.toFixed(2)
|
|
}
|
|
}
|
|
|
|
MySlider {
|
|
id: audioWarningDistanceSlider
|
|
from: 0
|
|
to: 2.0
|
|
stepSize: 0.01
|
|
value: 0.5
|
|
Layout.fillWidth: true
|
|
onPositionChanged: {
|
|
var val = this.from + ( this.position * (this.to - this.from))
|
|
audioWarningDistanceText.text = val.toFixed(2)
|
|
}
|
|
onValueChanged: {
|
|
var val = audioWarningDistanceSlider.value.toFixed(2)
|
|
if (val < 0.01) {
|
|
val = 0.01
|
|
}
|
|
ChaperoneTabController.chaperoneAlarmSoundDistance = val
|
|
audioWarningDistanceText.text = val
|
|
}
|
|
}
|
|
|
|
MyPushButton2 {
|
|
id: audioWarningDistancePlusButton
|
|
Layout.preferredWidth: 40
|
|
text: "+"
|
|
onClicked: {
|
|
var val = ChaperoneTabController.chaperoneAlarmSoundDistance + 0.1
|
|
if (val > 2.0) {
|
|
val = 2.0;
|
|
}
|
|
ChaperoneTabController.chaperoneAlarmSoundDistance = val.toFixed(2)
|
|
}
|
|
}
|
|
|
|
MyTextField {
|
|
id: audioWarningDistanceText
|
|
text: "0.00"
|
|
keyBoardUID: 802
|
|
Layout.preferredWidth: 100
|
|
Layout.leftMargin: 10
|
|
horizontalAlignment: Text.AlignHCenter
|
|
function onInputEvent(input) {
|
|
var val = parseFloat(input)
|
|
if (!isNaN(val)) {
|
|
if (val <= 0.0) {
|
|
val = 0.01
|
|
}
|
|
val = val.toFixed(2)
|
|
ChaperoneTabController.chaperoneAlarmSoundDistance = val
|
|
text = val
|
|
} else {
|
|
text = ChaperoneTabController.chaperoneAlarmSoundDistance.toFixed(2)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ColumnLayout {
|
|
spacing: 0
|
|
MyToggleButton {
|
|
id: openDashboardToggle
|
|
text: "Open Dashboard"
|
|
onCheckedChanged: {
|
|
ChaperoneTabController.chaperoneShowDashboardEnabled = checked
|
|
}
|
|
}
|
|
RowLayout {
|
|
MyText {
|
|
text: "Activation Distance: "
|
|
Layout.preferredWidth: 250
|
|
}
|
|
MyPushButton2 {
|
|
id: openDashboardDistanceMinusButton
|
|
Layout.preferredWidth: 40
|
|
text: "-"
|
|
onClicked: {
|
|
var val = ChaperoneTabController.chaperoneShowDashboardDistance - 0.1
|
|
if (val <= 0.0) {
|
|
val = 0.01;
|
|
}
|
|
ChaperoneTabController.chaperoneShowDashboardDistance = val.toFixed(2)
|
|
}
|
|
}
|
|
|
|
MySlider {
|
|
id: openDashboardDistanceSlider
|
|
from: 0
|
|
to: 2.0
|
|
stepSize: 0.01
|
|
value: 0.5
|
|
Layout.fillWidth: true
|
|
onPositionChanged: {
|
|
var val = this.from + ( this.position * (this.to - this.from))
|
|
openDashboardDistanceText.text = val.toFixed(2)
|
|
}
|
|
onValueChanged: {
|
|
var val = openDashboardDistanceSlider.value.toFixed(2)
|
|
if (val < 0.01) {
|
|
val = 0.01
|
|
}
|
|
ChaperoneTabController.chaperoneShowDashboardDistance = val
|
|
openDashboardDistanceText.text = val
|
|
}
|
|
}
|
|
|
|
MyPushButton2 {
|
|
id: openDashboardDistancePlusButton
|
|
Layout.preferredWidth: 40
|
|
text: "+"
|
|
onClicked: {
|
|
var val = ChaperoneTabController.chaperoneShowDashboardDistance + 0.1
|
|
if (val > 2.0) {
|
|
val = 2.0;
|
|
}
|
|
ChaperoneTabController.chaperoneShowDashboardDistance = val.toFixed(2)
|
|
}
|
|
}
|
|
|
|
MyTextField {
|
|
id: openDashboardDistanceText
|
|
text: "0.00"
|
|
keyBoardUID: 803
|
|
Layout.preferredWidth: 100
|
|
Layout.leftMargin: 10
|
|
horizontalAlignment: Text.AlignHCenter
|
|
function onInputEvent(input) {
|
|
var val = parseFloat(input)
|
|
if (!isNaN(val)) {
|
|
if (val <= 0.0) {
|
|
val = 0.01
|
|
}
|
|
val = val.toFixed(2)
|
|
ChaperoneTabController.chaperoneShowDashboardDistance = val
|
|
text = val
|
|
} else {
|
|
text = ChaperoneTabController.chaperoneShowDashboardDistance.toFixed(2)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
ColumnLayout {
|
|
spacing: 0
|
|
MyToggleButton {
|
|
id: velModifierToggle
|
|
text: "Velocity Dependent Fade/Activation Distance"
|
|
onCheckedChanged: {
|
|
ChaperoneTabController.chaperoneVelocityModifierEnabled = checked
|
|
}
|
|
}
|
|
RowLayout {
|
|
MyText {
|
|
text: "Distance Modifier: "
|
|
Layout.preferredWidth: 250
|
|
}
|
|
MyPushButton2 {
|
|
id: velModifierMinusButton
|
|
Layout.preferredWidth: 40
|
|
text: "-"
|
|
onClicked: {
|
|
var val = ChaperoneTabController.chaperoneVelocityModifier - 0.01
|
|
if (val < 0.0) {
|
|
val = 0.0;
|
|
}
|
|
ChaperoneTabController.chaperoneVelocityModifier = val.toFixed(2)
|
|
}
|
|
}
|
|
|
|
MySlider {
|
|
id: velModifierSlider
|
|
from: 0
|
|
to: 1.0
|
|
stepSize: 0.01
|
|
value: 0.3
|
|
Layout.fillWidth: true
|
|
onPositionChanged: {
|
|
var val = this.from + ( this.position * (this.to - this.from))
|
|
velModifierText.text = val.toFixed(2)
|
|
}
|
|
onValueChanged: {
|
|
var val = velModifierSlider.value.toFixed(2)
|
|
if (val < 0.0) {
|
|
val = 0.0
|
|
}
|
|
ChaperoneTabController.chaperoneVelocityModifier = val
|
|
velModifierText.text = val
|
|
}
|
|
}
|
|
|
|
MyPushButton2 {
|
|
id: velModifierPlusButton
|
|
Layout.preferredWidth: 40
|
|
text: "+"
|
|
onClicked: {
|
|
var val = ChaperoneTabController.chaperoneVelocityModifier + 0.01
|
|
if (val > 1.0) {
|
|
val = 1.0;
|
|
}
|
|
ChaperoneTabController.chaperoneVelocityModifier = val.toFixed(2)
|
|
}
|
|
}
|
|
|
|
MyTextField {
|
|
id: velModifierText
|
|
text: "0.00"
|
|
keyBoardUID: 803
|
|
Layout.preferredWidth: 100
|
|
Layout.leftMargin: 10
|
|
horizontalAlignment: Text.AlignHCenter
|
|
function onInputEvent(input) {
|
|
var val = parseFloat(input)
|
|
if (!isNaN(val)) {
|
|
if (val < 0.0) {
|
|
val = 0.0
|
|
}
|
|
val = val.toFixed(2)
|
|
ChaperoneTabController.chaperoneVelocityModifier = val
|
|
text = val
|
|
} else {
|
|
text = ChaperoneTabController.chaperoneVelocityModifier.toFixed(2)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
Item { Layout.fillHeight: true; Layout.fillWidth: true }
|
|
|
|
Component.onCompleted: {
|
|
switchBeginnerToggle.checked = ChaperoneTabController.chaperoneSwitchToBeginnerEnabled
|
|
var d = ChaperoneTabController.chaperoneSwitchToBeginnerDistance.toFixed(2)
|
|
if (d <= switchBeginnerDistanceSlider.to) {
|
|
switchBeginnerDistanceSlider.value = d
|
|
}
|
|
switchBeginnerDistanceText.text = d
|
|
hapticFeedbackToggle.checked = ChaperoneTabController.chaperoneHapticFeedbackEnabled
|
|
var d = ChaperoneTabController.chaperoneHapticFeedbackDistance.toFixed(2)
|
|
if (d <= hapticFeedbackDistanceSlider.to) {
|
|
hapticFeedbackDistanceSlider.value = d
|
|
}
|
|
hapticFeedbackDistanceText.text = d
|
|
audioWarningToggle.checked = ChaperoneTabController.chaperoneAlarmSoundEnabled
|
|
audioWarningLoopingToggle.checked = ChaperoneTabController.chaperoneAlarmSoundLooping
|
|
audioWarningAdjustVolumeToggle.checked = ChaperoneTabController.chaperoneAlarmSoundAdjustVolume
|
|
d = ChaperoneTabController.chaperoneAlarmSoundDistance.toFixed(2)
|
|
if (d <= audioWarningDistanceSlider.to) {
|
|
audioWarningDistanceSlider.value = d
|
|
}
|
|
audioWarningDistanceText.text = d
|
|
openDashboardToggle.checked = ChaperoneTabController.chaperoneShowDashboardEnabled
|
|
d = ChaperoneTabController.chaperoneShowDashboardDistance.toFixed(2)
|
|
if (d <= openDashboardDistanceSlider.to) {
|
|
openDashboardDistanceSlider.value = d
|
|
}
|
|
openDashboardDistanceText.text = d
|
|
velModifierToggle.checked = ChaperoneTabController.chaperoneVelocityModifierEnabled
|
|
d = ChaperoneTabController.chaperoneVelocityModifier.toFixed(2)
|
|
if (d <= velModifierSlider.to) {
|
|
velModifierSlider.value = d
|
|
}
|
|
velModifierText.text = d
|
|
}
|
|
|
|
Connections {
|
|
target: ChaperoneTabController
|
|
onChaperoneSwitchToBeginnerEnabledChanged: {
|
|
switchBeginnerToggle.checked = ChaperoneTabController.chaperoneSwitchToBeginnerEnabled
|
|
}
|
|
onChaperoneSwitchToBeginnerDistanceChanged: {
|
|
var d = ChaperoneTabController.chaperoneSwitchToBeginnerDistance.toFixed(2)
|
|
if (d <= switchBeginnerDistanceSlider.to && Math.abs(switchBeginnerDistanceSlider.value - d) > 0.0008) {
|
|
switchBeginnerDistanceSlider.value = d
|
|
}
|
|
switchBeginnerDistanceText.text = d
|
|
}
|
|
onChaperoneHapticFeedbackEnabledChanged: {
|
|
hapticFeedbackToggle.checked = ChaperoneTabController.chaperoneHapticFeedbackEnabled
|
|
}
|
|
onChaperoneHapticFeedbackDistanceChanged: {
|
|
var d = ChaperoneTabController.chaperoneHapticFeedbackDistance.toFixed(2)
|
|
if (d <= hapticFeedbackDistanceSlider.to && Math.abs(hapticFeedbackDistanceSlider.value - d) > 0.0008) {
|
|
hapticFeedbackDistanceSlider.value = d
|
|
}
|
|
hapticFeedbackDistanceText.text = d
|
|
}
|
|
onChaperoneAlarmSoundEnabledChanged: {
|
|
audioWarningToggle.checked = ChaperoneTabController.chaperoneAlarmSoundEnabled
|
|
}
|
|
onChaperoneAlarmSoundLoopingChanged: {
|
|
audioWarningLoopingToggle.checked = ChaperoneTabController.chaperoneAlarmSoundLooping
|
|
}
|
|
onChaperoneAlarmSoundDistanceChanged: {
|
|
var d = ChaperoneTabController.chaperoneAlarmSoundDistance.toFixed(2)
|
|
if (d <= audioWarningDistanceSlider.to && Math.abs(audioWarningDistanceSlider.value - d) > 0.0008) {
|
|
audioWarningDistanceSlider.value = d
|
|
}
|
|
audioWarningDistanceText.text = d
|
|
}
|
|
onChaperoneShowDashboardEnabledChanged: {
|
|
openDashboardToggle.checked = ChaperoneTabController.chaperoneShowDashboardEnabled
|
|
}
|
|
onChaperoneShowDashboardDistanceChanged: {
|
|
var d = ChaperoneTabController.chaperoneShowDashboardDistance.toFixed(2)
|
|
if (d <= openDashboardDistanceSlider.to && Math.abs(openDashboardDistanceSlider.value - d) > 0.0008) {
|
|
openDashboardDistanceSlider.value = d
|
|
}
|
|
openDashboardDistanceText.text = d
|
|
}
|
|
onChaperoneVelocityModifierEnabledChanged: {
|
|
velModifierToggle.checked = ChaperoneTabController.chaperoneVelocityModifierEnabled
|
|
}
|
|
onChaperoneVelocityModifierChanged: {
|
|
var d = ChaperoneTabController.chaperoneVelocityModifier.toFixed(2)
|
|
if (d <= velModifierSlider.to && Math.abs(velModifierSlider.value - d) > 0.0008) {
|
|
velModifierSlider.value = d
|
|
}
|
|
velModifierText.text = d
|
|
}
|
|
}
|
|
}
|
|
}
|