Revision control
++ // Copyright (C) 2022 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
++
++ import QtQuick 2.15
++ import QtQuick.Layouts 1.15
++ import HelperWidgets 2.0
++ import StudioTheme 1.0 as StudioTheme
++
++ Column {
++ width: parent.width
++
++ Section {
++ width: parent.width
++ caption: qsTr("WASD Controller")
++
++ SectionLayout {
++ PropertyLabel {
++ text: qsTr("Controlled Node")
++ tooltip: qsTr("Sets the 3D node controlled by this controller.")
++ }
++
++ SecondColumnLayout {
++ ItemFilterComboBox {
++ typeFilter: "QtQuick3D.Node"
++ backendValue: backendValues.controlledObject
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Invert X")
++ tooltip: qsTr("Enables inverting X-axis controls.")
++ }
++
++ SecondColumnLayout {
++ CheckBox {
++ text: qsTr("Enabled")
++ backendValue: backendValues.xInvert
++ implicitWidth: StudioTheme.Values.twoControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Invert Y")
++ tooltip: qsTr("Enables inverting Y-axis controls.")
++ }
++
++ SecondColumnLayout {
++ CheckBox {
++ text: qsTr("Enabled")
++ backendValue: backendValues.yInvert
++ implicitWidth: StudioTheme.Values.twoControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Mouse Control")
++ tooltip: qsTr("Enables using mouse to control the target node.")
++ }
++
++ SecondColumnLayout {
++ CheckBox {
++ text: qsTr("Enabled")
++ backendValue: backendValues.mouseEnabled
++ implicitWidth: StudioTheme.Values.twoControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Keyboard Control")
++ tooltip: qsTr("Enables using keyboard to control the target node.")
++ }
++
++ SecondColumnLayout {
++ CheckBox {
++ text: qsTr("Enabled")
++ backendValue: backendValues.keysEnabled
++ implicitWidth: StudioTheme.Values.twoControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ // TODO: acceptedButtons has no control as there is currently no support for a flags
++ // type of property control in QDS.
++ }
++ }
++
++ Section {
++ width: parent.width
++ caption: qsTr("Speeds")
++
++ SectionLayout {
++ PropertyLabel {
++ text: qsTr("Speed")
++ tooltip: qsTr("Sets the general navigation speed multiplier.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 999999
++ decimals: 2
++ stepSize: 0.1
++ backendValue: backendValues.speed
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Shift Speed")
++ tooltip: qsTr("Sets the navigation speed multiplier when the Shift key is pressed.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 999999
++ decimals: 2
++ stepSize: 0.1
++ backendValue: backendValues.shiftSpeed
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Forward Speed")
++ tooltip: qsTr("Sets the navigation speed when forward key is pressed.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 999999
++ decimals: 2
++ stepSize: 0.1
++ backendValue: backendValues.forwardSpeed
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Back Speed")
++ tooltip: qsTr("Sets the navigation speed when back key is pressed.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 999999
++ decimals: 2
++ stepSize: 0.1
++ backendValue: backendValues.backSpeed
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Right Speed")
++ tooltip: qsTr("Sets the navigation speed when right key is pressed.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 999999
++ decimals: 2
++ stepSize: 0.1
++ backendValue: backendValues.rightSpeed
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Left Speed")
++ tooltip: qsTr("Sets the navigation speed when left key is pressed.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 999999
++ decimals: 2
++ stepSize: 0.1
++ backendValue: backendValues.leftSpeed
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Up Speed")
++ tooltip: qsTr("Sets the navigation speed when up key is pressed.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 999999
++ decimals: 2
++ stepSize: 0.1
++ backendValue: backendValues.upSpeed
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Down Speed")
++ tooltip: qsTr("Sets the navigation speed when down key is pressed.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 999999
++ decimals: 2
++ stepSize: 0.1
++ backendValue: backendValues.downSpeed
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("X Speed")
++ tooltip: qsTr("Sets the navigation speed when mouse is moved along X-axis.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 999999
++ decimals: 2
++ stepSize: 0.1
++ backendValue: backendValues.xSpeed
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++
++ PropertyLabel {
++ text: qsTr("Y Speed")
++ tooltip: qsTr("Sets the navigation speed when mouse is moved along Y-axis.")
++ }
++
++ SecondColumnLayout {
++ SpinBox {
++ minimumValue: 0
++ maximumValue: 999999
++ decimals: 2
++ stepSize: 0.1
++ backendValue: backendValues.ySpeed
++ implicitWidth: StudioTheme.Values.singleControlColumnWidth
++ + StudioTheme.Values.actionIndicatorWidth
++ }
++
++ ExpandingSpacer {}
++ }
++ }
++ }
++ }