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.
559 lines
20 KiB
559 lines
20 KiB
import QtQuick 2.7
|
|
import QtQuick.Controls 2.0
|
|
import QtQuick.Layouts 1.3
|
|
import QtQuick.Dialogs 1.2
|
|
import "." // QTBUG-34418, singletons require explicit import to load qmldir file
|
|
import "../common"
|
|
import "change_orientation"
|
|
|
|
MyStackViewPage {
|
|
headerText: "Receive Wownero"
|
|
|
|
MyDialogOkPopup {
|
|
id: chaperoneMessageDialog
|
|
function showMessage(title, text) {
|
|
dialogTitle = title
|
|
dialogText = text
|
|
open()
|
|
}
|
|
}
|
|
|
|
MyDialogOkCancelPopup {
|
|
id: chaperoneDeleteProfileDialog
|
|
property int profileIndex: -1
|
|
dialogTitle: "Delete Profile"
|
|
dialogText: "Do you really want to delete this profile?"
|
|
onClosed: {
|
|
if (okClicked) {
|
|
ChaperoneTabController.deleteChaperoneProfile(profileIndex)
|
|
}
|
|
}
|
|
}
|
|
|
|
MyDialogOkCancelPopup {
|
|
id: chaperoneNewProfileDialog
|
|
dialogTitle: "Create New Profile"
|
|
dialogWidth: 800
|
|
dialogHeight: 780
|
|
dialogContentItem: ColumnLayout {
|
|
RowLayout {
|
|
Layout.topMargin: 16
|
|
Layout.leftMargin: 16
|
|
Layout.rightMargin: 16
|
|
MyText {
|
|
text: "Name: "
|
|
}
|
|
MyTextField {
|
|
id: chaperoneNewProfileName
|
|
keyBoardUID: 390
|
|
color: "#cccccc"
|
|
text: ""
|
|
Layout.fillWidth: true
|
|
font.pointSize: 20
|
|
function onInputEvent(input) {
|
|
chaperoneNewProfileName.text = input
|
|
}
|
|
}
|
|
}
|
|
MyText {
|
|
Layout.topMargin: 24
|
|
text: "What to include:"
|
|
}
|
|
MyToggleButton {
|
|
id: chaperoneNewProfileIncludeGeometry
|
|
Layout.leftMargin: 32
|
|
text: "Chaperone Geometry"
|
|
}
|
|
MyToggleButton {
|
|
id: chaperoneNewProfileIncludeStyle
|
|
Layout.leftMargin: 32
|
|
text: "Chaperone Style"
|
|
}
|
|
MyToggleButton {
|
|
id: chaperoneNewProfileIncludeBoundsColor
|
|
Layout.leftMargin: 32
|
|
text: "Chaperone Color"
|
|
}
|
|
MyToggleButton {
|
|
id: chaperoneNewProfileIncludeVisibility
|
|
Layout.leftMargin: 32
|
|
text: "Visibility Setting"
|
|
}
|
|
MyToggleButton {
|
|
id: chaperoneNewProfileIncludeFadeDistance
|
|
Layout.leftMargin: 32
|
|
text: "Fade Distance Setting"
|
|
}
|
|
MyToggleButton {
|
|
id: chaperoneNewProfileIncludeCenterMarker
|
|
Layout.leftMargin: 32
|
|
text: "Center Marker Setting"
|
|
}
|
|
MyToggleButton {
|
|
id: chaperoneNewProfileIncludePlaySpaceMarker
|
|
Layout.leftMargin: 32
|
|
text: "Play Space Marker Setting"
|
|
}
|
|
MyToggleButton {
|
|
id: chaperoneNewProfileIncludeFloorBoundsMarker
|
|
Layout.leftMargin: 32
|
|
text: "Floor Bounds Always On Setting"
|
|
}
|
|
MyToggleButton {
|
|
id: chaperoneNewProfileIncludeForceBounds
|
|
Layout.leftMargin: 32
|
|
text: "Force Bounds Setting"
|
|
}
|
|
MyToggleButton {
|
|
id: chaperoneNewProfileIncludeProximityWarnings
|
|
Layout.leftMargin: 32
|
|
text: "Proximity Warning Settings"
|
|
}
|
|
}
|
|
onClosed: {
|
|
if (okClicked) {
|
|
if (chaperoneNewProfileName.text == "") {
|
|
chaperoneMessageDialog.showMessage("Create New Profile", "ERROR: Empty profile name.")
|
|
} else if (!chaperoneNewProfileIncludeGeometry.checked
|
|
&& !chaperoneNewProfileIncludeVisibility.checked
|
|
&& !chaperoneNewProfileIncludeFadeDistance.checked
|
|
&& !chaperoneNewProfileIncludeCenterMarker.checked
|
|
&& !chaperoneNewProfileIncludePlaySpaceMarker.checked
|
|
&& !chaperoneNewProfileIncludeFloorBoundsMarker.checked
|
|
&& !chaperoneNewProfileIncludeBoundsColor.checked
|
|
&& !chaperoneNewProfileIncludeStyle.checked
|
|
&& !chaperoneNewProfileIncludeForceBounds.checked
|
|
&& !chaperoneNewProfileIncludeProximityWarnings.checked) {
|
|
chaperoneMessageDialog.showMessage("Create New Profile", "ERROR: Nothing included.")
|
|
} else if ( Math.abs(MoveCenterTabController.offsetX) > 0.00000000001
|
|
|| Math.abs(MoveCenterTabController.offsetY) > 0.00000000001
|
|
|| Math.abs(MoveCenterTabController.offsetZ) > 0.00000000001
|
|
|| MoveCenterTabController.rotation !== 0) {
|
|
chaperoneMessageDialog.showMessage("Create New Profile", "ERROR: Offsets not reset.")
|
|
} else {
|
|
ChaperoneTabController.addChaperoneProfile(chaperoneNewProfileName.text,
|
|
chaperoneNewProfileIncludeGeometry.checked,
|
|
chaperoneNewProfileIncludeVisibility.checked,
|
|
chaperoneNewProfileIncludeFadeDistance.checked,
|
|
chaperoneNewProfileIncludeCenterMarker.checked,
|
|
chaperoneNewProfileIncludePlaySpaceMarker.checked,
|
|
chaperoneNewProfileIncludeFloorBoundsMarker.checked,
|
|
chaperoneNewProfileIncludeBoundsColor.checked,
|
|
chaperoneNewProfileIncludeStyle.checked,
|
|
chaperoneNewProfileIncludeForceBounds.checked,
|
|
chaperoneNewProfileIncludeProximityWarnings.checked)
|
|
}
|
|
|
|
}
|
|
}
|
|
function openPopup() {
|
|
chaperoneNewProfileName.text = ""
|
|
chaperoneNewProfileIncludeGeometry.checked = false
|
|
chaperoneNewProfileIncludeVisibility.checked = false
|
|
chaperoneNewProfileIncludeFadeDistance.checked = false
|
|
chaperoneNewProfileIncludeCenterMarker.checked = false
|
|
chaperoneNewProfileIncludePlaySpaceMarker.checked = false
|
|
chaperoneNewProfileIncludeFloorBoundsMarker.checked = false
|
|
chaperoneNewProfileIncludeBoundsColor.checked = false
|
|
chaperoneNewProfileIncludeStyle.checked = false
|
|
chaperoneNewProfileIncludeForceBounds.checked = false
|
|
chaperoneNewProfileIncludeProximityWarnings.checked = false
|
|
open()
|
|
}
|
|
}
|
|
|
|
|
|
content: ColumnLayout {
|
|
spacing: 18
|
|
|
|
ColumnLayout {
|
|
Layout.bottomMargin: 32
|
|
spacing: 18
|
|
RowLayout {
|
|
spacing: 18
|
|
|
|
MyText {
|
|
text: "Profile:"
|
|
}
|
|
|
|
MyComboBox {
|
|
id: chaperoneProfileComboBox
|
|
Layout.maximumWidth: 799
|
|
Layout.minimumWidth: 799
|
|
Layout.preferredWidth: 799
|
|
Layout.fillWidth: true
|
|
model: [""]
|
|
onCurrentIndexChanged: {
|
|
if (currentIndex > 0) {
|
|
chaperoneApplyProfileButton.enabled = true
|
|
chaperoneDeleteProfileButton.enabled = true
|
|
} else {
|
|
chaperoneApplyProfileButton.enabled = false
|
|
chaperoneDeleteProfileButton.enabled = false
|
|
}
|
|
}
|
|
}
|
|
|
|
MyPushButton {
|
|
id: chaperoneApplyProfileButton
|
|
enabled: false
|
|
Layout.preferredWidth: 200
|
|
text: "Apply"
|
|
onClicked: {
|
|
if (chaperoneProfileComboBox.currentIndex > 0) {
|
|
ChaperoneTabController.applyChaperoneProfile(chaperoneProfileComboBox.currentIndex - 1)
|
|
chaperoneProfileComboBox.currentIndex = 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
RowLayout {
|
|
spacing: 18
|
|
Item {
|
|
Layout.fillWidth: true
|
|
}
|
|
MyPushButton {
|
|
id: chaperoneDeleteProfileButton
|
|
enabled: false
|
|
Layout.preferredWidth: 200
|
|
text: "Delete Profile"
|
|
onClicked: {
|
|
if (chaperoneProfileComboBox.currentIndex > 0) {
|
|
chaperoneDeleteProfileDialog.profileIndex = chaperoneProfileComboBox.currentIndex - 1
|
|
chaperoneDeleteProfileDialog.open()
|
|
}
|
|
}
|
|
}
|
|
MyPushButton {
|
|
Layout.preferredWidth: 200
|
|
text: "New Profile"
|
|
onClicked: {
|
|
chaperoneNewProfileDialog.openPopup()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
GridLayout {
|
|
columns: 5
|
|
|
|
MyText {
|
|
text: "Visibility:"
|
|
Layout.rightMargin: 12
|
|
}
|
|
|
|
MyPushButton2 {
|
|
text: "-"
|
|
Layout.preferredWidth: 40
|
|
onClicked: {
|
|
chaperoneVisibilitySlider.value -= 0.05
|
|
}
|
|
}
|
|
|
|
MySlider {
|
|
id: chaperoneVisibilitySlider
|
|
from: 0.3
|
|
to: 1.0
|
|
stepSize: 0.01
|
|
value: 0.6
|
|
Layout.fillWidth: true
|
|
onPositionChanged: {
|
|
var val = (this.value * 100)
|
|
chaperoneVisibilityText.text = Math.round(val) + "%"
|
|
}
|
|
onValueChanged: {
|
|
|
|
}
|
|
}
|
|
|
|
MyPushButton2 {
|
|
text: "+"
|
|
Layout.preferredWidth: 40
|
|
onClicked: {
|
|
chaperoneVisibilitySlider.value += 0.05
|
|
}
|
|
}
|
|
|
|
|
|
MyTextField {
|
|
id: chaperoneVisibilityText
|
|
text: "60.00"
|
|
keyBoardUID: 301
|
|
Layout.preferredWidth: 100
|
|
Layout.leftMargin: 10
|
|
horizontalAlignment: Text.AlignHCenter
|
|
function onInputEvent(input) {
|
|
var val = parseFloat(input)
|
|
if (!isNaN(val)) {
|
|
if (val < 30.0) {
|
|
val = 30.0
|
|
} else if (val > 100.0) {
|
|
val = 100.0
|
|
}
|
|
if(val>100){
|
|
val = 100.0
|
|
}
|
|
|
|
var v = (val/100).toFixed(2)
|
|
if (v <= chaperoneVisibilitySlider.to) {
|
|
chaperoneVisibilitySlider.value = v
|
|
} else {
|
|
ChaperoneTabController.setBoundsVisibility(v, false)
|
|
}
|
|
}
|
|
text = Math.round(ChaperoneTabController.boundsVisibility * 100) + "%"
|
|
}
|
|
}
|
|
|
|
MyText {
|
|
text: "Fade Distance:"
|
|
Layout.rightMargin: 12
|
|
}
|
|
|
|
MyPushButton2 {
|
|
id: chaperoneFadeDistanceMinus
|
|
text: "-"
|
|
Layout.preferredWidth: 40
|
|
onClicked: {
|
|
chaperoneFadeDistanceSlider.decrease()
|
|
}
|
|
}
|
|
|
|
MySlider {
|
|
id: chaperoneFadeDistanceSlider
|
|
from: 0.0
|
|
to: 2.0
|
|
stepSize: 0.1
|
|
value: 0.7
|
|
Layout.fillWidth: true
|
|
onPositionChanged: {
|
|
var val = this.from + ( this.position * (this.to - this.from))
|
|
chaperoneFadeDistanceText.text = val.toFixed(1)
|
|
}
|
|
onValueChanged: {
|
|
ChaperoneTabController.setFadeDistance(this.value.toFixed(1), false)
|
|
}
|
|
}
|
|
|
|
MyPushButton2 {
|
|
id: chaperoneFadeDistancePlus
|
|
text: "+"
|
|
Layout.preferredWidth: 40
|
|
onClicked: {
|
|
chaperoneFadeDistanceSlider.increase()
|
|
}
|
|
}
|
|
|
|
MyTextField {
|
|
id: chaperoneFadeDistanceText
|
|
text: "0.00"
|
|
keyBoardUID: 302
|
|
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
|
|
}
|
|
var v = val.toFixed(1)
|
|
if (v <= chaperoneFadeDistanceSlider.to) {
|
|
chaperoneFadeDistanceSlider.value = v
|
|
} else {
|
|
ChaperoneTabController.setFadeDistance(v, false)
|
|
}
|
|
}
|
|
text = ChaperoneTabController.fadeDistance.toFixed(1)
|
|
}
|
|
}
|
|
|
|
MyText {
|
|
text: "Height:"
|
|
Layout.rightMargin: 12
|
|
}
|
|
|
|
MyPushButton2 {
|
|
text: "-"
|
|
Layout.preferredWidth: 40
|
|
onClicked: {
|
|
chaperoneHeightSlider.decrease()
|
|
}
|
|
}
|
|
|
|
MySlider {
|
|
id: chaperoneHeightSlider
|
|
from: 0.01
|
|
to: 5.0
|
|
stepSize: 0.01
|
|
value: 2.0
|
|
Layout.fillWidth: true
|
|
onPositionChanged: {
|
|
var val = (this.from + ( this.position * (this.to - this.from))).toFixed(2)
|
|
if (activeFocus) {
|
|
ChaperoneTabController.setHeight(val, false);
|
|
}
|
|
chaperoneHeightText.text = val
|
|
}
|
|
onValueChanged: {
|
|
ChaperoneTabController.setHeight(value.toFixed(2), false)
|
|
}
|
|
}
|
|
|
|
MyPushButton2 {
|
|
text: "+"
|
|
Layout.preferredWidth: 40
|
|
onClicked: {
|
|
chaperoneHeightSlider.increase()
|
|
}
|
|
}
|
|
|
|
MyTextField {
|
|
id: chaperoneHeightText
|
|
text: "0.00"
|
|
keyBoardUID: 303
|
|
Layout.preferredWidth: 100
|
|
Layout.leftMargin: 10
|
|
horizontalAlignment: Text.AlignHCenter
|
|
function onInputEvent(input) {
|
|
var val = parseFloat(input)
|
|
if (!isNaN(val)) {
|
|
if (val < 0.01) {
|
|
val = 0.01
|
|
}
|
|
var v = val.toFixed(2)
|
|
if (v <= chaperoneHeightSlider.to) {
|
|
chaperoneHeightSlider.value = v
|
|
} else {
|
|
ChaperoneTabController.setHeight(v, false)
|
|
}
|
|
}
|
|
text = ChaperoneTabController.height.toFixed(2)
|
|
}
|
|
}
|
|
}
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
spacing: 32
|
|
|
|
MyToggleButton {
|
|
id: chaperoneCenterMarkerToggle
|
|
text: "Center Marker"
|
|
Layout.fillWidth: false
|
|
onCheckedChanged: {
|
|
ChaperoneTabController.setCenterMarkerNew(this.checked, false)
|
|
}
|
|
}
|
|
|
|
MyToggleButton {
|
|
id: chaperonePlaySpaceToggle
|
|
text: "Play Space"
|
|
onCheckedChanged: {
|
|
ChaperoneTabController.setPlaySpaceMarker(this.checked, false)
|
|
}
|
|
}
|
|
|
|
MyToggleButton {
|
|
id: chaperoneForceBoundsToggle
|
|
text: "Force Bounds"
|
|
onCheckedChanged: {
|
|
ChaperoneTabController.setForceBounds(this.checked, false)
|
|
}
|
|
}
|
|
MyToggleButton {
|
|
id: chaperoneDisableChaperone
|
|
text: "Disable Chaperone"
|
|
onCheckedChanged: {
|
|
ChaperoneTabController.setDisableChaperone(this.checked, false)
|
|
if(this.checked){
|
|
chaperoneFadeDistanceMinus.enabled = false;
|
|
chaperoneFadeDistancePlus.enabled = false;
|
|
chaperoneFadeDistanceSlider.enabled = false;
|
|
chaperoneFadeDistanceText.enabled = false;
|
|
|
|
}else{
|
|
chaperoneFadeDistanceMinus.enabled = true;
|
|
chaperoneFadeDistancePlus.enabled = true;
|
|
chaperoneFadeDistanceSlider.enabled = true;
|
|
chaperoneFadeDistanceText.enabled = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
Item { Layout.fillWidth: true }
|
|
}
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
MyPushButton {
|
|
id: chaperoneWarningsConfigButton
|
|
text: "Proximity Warning Settings"
|
|
Layout.preferredWidth: 350
|
|
onClicked: {
|
|
MyResources.playFocusChangedSound()
|
|
mainView.push(chaperoneWarningsPage)
|
|
}
|
|
}
|
|
Item {Layout.fillWidth: true}
|
|
|
|
MyPushButton {
|
|
id: chaperoneAdditionalButton
|
|
text: "Additional Chaperone Settings"
|
|
Layout.preferredWidth: 400
|
|
|
|
onClicked: {
|
|
MyResources.playFocusChangedSound()
|
|
mainView.push(chaperoneAdditionalPage)
|
|
}
|
|
}
|
|
}
|
|
|
|
ChangeOrientationGroupBox { }
|
|
|
|
|
|
Item { Layout.fillHeight: true; Layout.fillWidth: true}
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
|
|
MyPushButton {
|
|
id: chaperoneResetButton
|
|
text: "Reset"
|
|
Layout.preferredWidth: 250
|
|
onClicked: {
|
|
ChaperoneTabController.reset()
|
|
}
|
|
}
|
|
|
|
Item { Layout.fillWidth: true}
|
|
|
|
MyPushButton {
|
|
id: chaperoneReloadFromDiskButton
|
|
text: "Reload from Disk"
|
|
Layout.preferredWidth: 250
|
|
onClicked: {
|
|
ChaperoneTabController.reloadFromDisk()
|
|
}
|
|
}
|
|
}
|
|
|
|
Component.onCompleted: {
|
|
chaperoneVisibilitySlider.value = 10;
|
|
if(chaperoneVisibilitySlider.value < 0.3){
|
|
chaperoneVisibilitySlider.value = 0.3
|
|
}
|
|
}
|
|
}
|
|
|
|
function reloadChaperoneProfiles() {
|
|
var profiles = [""]
|
|
var profileCount = ChaperoneTabController.getChaperoneProfileCount()
|
|
for (var i = 0; i < profileCount; i++) {
|
|
profiles.push(ChaperoneTabController.getChaperoneProfileName(i))
|
|
}
|
|
chaperoneProfileComboBox.currentIndex = 0
|
|
chaperoneProfileComboBox.model = profiles
|
|
}
|
|
}
|