Center Marker/ Chaperone Refactor/ IVROverlay/IVRSettings wrappers PT 1/? (#438)

* changed click noises to internal sounds

* udpated to ovr 1.11.11

* in prog added prototypes

* began wrapper for IVRSettings

* added getters for chaperone colors

* added setters for chaperone color

* fixed type conversion issue

* fixed linking issue, added additional settings chaperone page

* adjusted chaperone page qml

* added color chaperone UI

* refactor in prog

* updated ivrsettings wrapper, refactor in prog

* refactor in prog

* collision bound style add

* refactor

* cleaned up error logging

* fixed fade distance remember bug

* fixed sounds

* fixed brightness opacity bug setting to 0 when 0

* fixed sounds

* added wrapper for removing keys

* refactored reset

* added chaperone Styles to UI

* added chaperone floor always on

* fixed copy/paste error

* adjsuted ui chaperone color slider

* started adding chaperone floor marker

* fixeed naming error overlay

* finalized chaperone Ideas, added chaperone markers

* began ivroverlay wrapper

* center marker fully implemented

* added function prototypes for new settings

* added setting, and updated ui for New Center Marker Overlay

* adjsuted sound effect volume and formatting for chaperonecolorbox

* adjusted volume back

* fixed various issues aroudn new overlay

* removed artifact comment

* cleaned up settings wrapper

* cleaned up chaperone tab controller for namespace changes

* removed ide comment issue

* cleanup overlay wrapper

* cleaned up tab/space changed file name

* renamed files

* fixed include statements

* updated namespace in chaperonetabcontroller

* fixed tab/space issues

* re-activated boundbasisheight

* fixed bulgarian case

* changed chaperone warnings to only work in roomscale

* fix capitilization

* fixed tracking universe update

* direct text input change for brightness

* qml fixes

* fixed qml format issues

* fixed sound issue w/ sliders

* fixed super truely

* Add SDL libraries to CircleCI

* Remove -tidy from circleCI config

* flushed out error messages in overlaywrapper

* removed hungarian notation

* added get/set string to ovrsettings wrapper

* misc cleanup

* add reset orientation btn and new center marker to chaperone

* ui adjustments

* changed alarm audio

* adjusted sound effect volume slightly lower

* updated for 5.1.0 release

Co-authored-by: Vasily <vautkin@teknik.io>
This commit is contained in:
ykeara
2020-05-13 15:11:20 -05:00
committed by GitHub
co-authored by Vasily
parent 593b429641
commit a803ffaeac
50 changed files with 1824 additions and 429 deletions
+26 -11
View File
@@ -443,7 +443,7 @@ MyStackViewPage {
text: "Center Marker"
Layout.fillWidth: false
onCheckedChanged: {
ChaperoneTabController.setCenterMarker(this.checked, false)
ChaperoneTabController.setCenterMarkerNew(this.checked, false)
}
}
@@ -485,16 +485,31 @@ MyStackViewPage {
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: chaperoneWarningsConfigButton
text: "Proximity Warning Settings"
Layout.preferredWidth: 350
onClicked: {
MyResources.playFocusChangedSound()
mainView.push(chaperoneWarningsPage)
MyPushButton {
id: chaperoneAdditionalButton
text: "Additional Chaperone Settings"
Layout.preferredWidth: 400
onClicked: {
MyResources.playFocusChangedSound()
mainView.push(chaperoneAdditionalPage)
}
}
}
ChangeOrientationGroupBox { }
@@ -540,7 +555,7 @@ MyStackViewPage {
chaperoneHeightSlider.value = h
}
chaperoneHeightText.text = h
chaperoneCenterMarkerToggle.checked = ChaperoneTabController.centerMarker
chaperoneCenterMarkerToggle.checked = ChaperoneTabController.centerMarkerNew
chaperonePlaySpaceToggle.checked = ChaperoneTabController.playSpaceMarker
chaperoneForceBoundsToggle.checked = ChaperoneTabController.forceBounds
chaperoneDisableChaperone.checked = ChaperoneTabController.disableChaperone
@@ -581,8 +596,8 @@ MyStackViewPage {
chaperoneHeightText.text = h
}
onCenterMarkerChanged: {
chaperoneCenterMarkerToggle.checked = ChaperoneTabController.centerMarker
onCenterMarkerNewChanged: {
chaperoneCenterMarkerToggle.checked = ChaperoneTabController.centerMarkerNew
}
onPlaySpaceMarkerChanged: {
chaperonePlaySpaceToggle.checked = ChaperoneTabController.playSpaceMarker
@@ -42,7 +42,7 @@ GroupBox {
val = -180;
}
spaceRotationSlider.value = val
spaceRotationText.text = val
spaceRotationText.text = val.toFixed(2) + "°"
}
}
@@ -55,7 +55,7 @@ GroupBox {
Layout.fillWidth: true
onValueChanged: {
var val = this.value
spaceRotationText.text = val
spaceRotationText.text = val.toFixed(2) + "°"
}
}
@@ -69,7 +69,7 @@ GroupBox {
val = 180;
}
spaceRotationSlider.value = val
spaceRotationText.text = val
spaceRotationText.text = val.toFixed(2) + "°"
}
}
@@ -83,7 +83,7 @@ GroupBox {
function onInputEvent(input) {
var val = parseFloat(input)
if (!isNaN(val)) {
spaceRotationText.text = val + "°"
spaceRotationText.text = val.toFixed(2) + "°"
spaceRotationSlider.value = val
}
}
@@ -0,0 +1,39 @@
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"
import "chaperoneboundscolor"
import "chaperonetype"
import "chaperonemisc"
MyStackViewPage {
headerText: "Additional Chaperone Settings"
content: ColumnLayout {
spacing: 10
ChaperoneBoundsColorGroupBox{
id: chaperoneBoundsColorGroupBox
}
ChaperoneTypeGroupBox{
id:chaperoneTypeGroupBox
}
ChaperoneMiscGroupBox{
id:chaperoneMiscGroupBox
}
Item {
Layout.fillHeight: true
}
}
}
//TODO content
@@ -0,0 +1,199 @@
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import ovras.advsettings 1.0
import "../../../common"
import "." // QTBUG-34418, singletons require explicit import to load qmldir file
GroupBox {
id: chaperoneBoundsColorGroupBox
Layout.fillWidth: true
label: MyText {
leftPadding: 10
text: "Chaperone Color"
bottomPadding: -10
}
background: Rectangle {
color: "transparent"
border.color: "#ffffff"
radius: 8
}
ColumnLayout {
anchors.fill: parent
Rectangle {
color: "#ffffff"
height: 1
Layout.fillWidth: true
Layout.bottomMargin: 5
}
RowLayout{
MyText {
text: "Red:"
horizontalAlignment: Text.AlignRight
Layout.preferredWidth: 75
}
MySlider {
id: chaperoneColorRedSlider
from: 0
to: 255
stepSize: 5
value: 0
Layout.fillWidth: true
onPositionChanged: {
var val = (this.value).toFixed(0)
colorRedText.text = val
ChaperoneTabController.setChaperoneColorR(val, true)
}
}
MyTextField {
id: colorRedText
text: "0"
keyBoardUID: 320
Layout.preferredWidth: 100
Layout.leftMargin: 10
horizontalAlignment: Text.AlignHCenter
function onInputEvent(input) {
var val = parseInt(input)
if (!isNaN(val)) {
if (val < 0) {
val = 0
} else if (val > 255) {
val = 255
}
ChaperoneTabController.setChaperoneColorR(val, true)
chaperoneColorRedSlider.value = val
}
text = val
}
}
Item{
Layout.preferredWidth: 200
}
MyText {
text: "Green:"
horizontalAlignment: Text.AlignRight
Layout.preferredWidth: 75
}
MySlider {
id: chaperoneColorGreenSlider
from: 0
to: 255
stepSize: 5
value: 255
Layout.fillWidth: true
onPositionChanged: {
var val = (this.value).toFixed(0)
colorGreenText.text = val
ChaperoneTabController.setChaperoneColorG(val, true)
}
}
MyTextField {
id: colorGreenText
text: "255"
keyBoardUID: 321
Layout.preferredWidth: 100
Layout.leftMargin: 10
horizontalAlignment: Text.AlignHCenter
function onInputEvent(input) {
var val = parseInt(input)
if (!isNaN(val)) {
if (val < 0) {
val = 0
} else if (val > 255) {
val = 255
}
ChaperoneTabController.setChaperoneColorG(val, true)
chaperoneColorGreenSlider.value = val
}
text = val
}
}
}
RowLayout{
MyText {
text: "Blue:"
horizontalAlignment: Text.AlignRight
Layout.preferredWidth: 75
}
MySlider {
id: chaperoneColorBlueSlider
from: 0
to: 255
stepSize: 5
value: 255
Layout.preferredWidth: 250
onPositionChanged: {
var val = (this.value).toFixed(0)
colorBlueText.text = val
ChaperoneTabController.setChaperoneColorB(val, true)
}
}
MyTextField {
id: colorBlueText
text: "255"
keyBoardUID: 322
Layout.preferredWidth: 100
Layout.leftMargin: 10
horizontalAlignment: Text.AlignHCenter
function onInputEvent(input) {
var val = parseInt(input)
if (!isNaN(val)) {
if (val < 0) {
val = 0
} else if (val > 255) {
val = 255
}
ChaperoneTabController.setChaperoneColorB(val, true)
chaperoneColorBlueSlider.value = val
}
text = val
}
}
}
}
Component.onCompleted: {
// set up var here to prevent double call to c++ from qml
var redValue = ChaperoneTabController.chaperoneColorR
var greenValue = ChaperoneTabController.chaperoneColorG
var blueValue = ChaperoneTabController.chaperoneColorB
colorRedText.text = redValue
colorGreenText.text = greenValue
colorBlueText.text = blueValue
chaperoneColorRedSlider.value = redValue
chaperoneColorGreenSlider.value = greenValue
chaperoneColorBlueSlider.value = blueValue
}
Connections {
target: ChaperoneTabController
onChaperoneColorRChanged:{
var redValue = ChaperoneTabController.chaperoneColorR
colorRedText.text = redValue
chaperoneColorRedSlider.value = redValue
}
onChaperoneColorGChanged:{
var greenValue = ChaperoneTabController.chaperoneColorG
colorGreenText.text = greenValue
chaperoneColorGreenSlider.value = greenValue
}
onChaperoneColorBChanged:{
var blueValue = ChaperoneTabController.chaperoneColorB
colorBlueText.text = blueValue
chaperoneColorBlueSlider.value = blueValue
}
}
}
@@ -0,0 +1,80 @@
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import ovras.advsettings 1.0
import "../../../common"
import "." // QTBUG-34418, singletons require explicit import to load qmldir file
GroupBox {
id: chaperoneMiscGroupBox
Layout.fillWidth: true
label: MyText {
leftPadding: 10
text: "Misc:"
bottomPadding: -10
}
background: Rectangle {
color: "transparent"
border.color: "#ffffff"
radius: 8
}
ColumnLayout {
anchors.fill: parent
Rectangle {
color: "#ffffff"
height: 1
Layout.fillWidth: true
Layout.bottomMargin: 5
}
RowLayout {
spacing: 16
MyToggleButton {
id: chaperoneFloorToggleBtn
text: "Floor Bounds Always On"
Layout.preferredWidth: 375
onCheckedChanged: {
ChaperoneTabController.setChaperoneFloorToggle(this.checked, false)
}
}
MyToggleButton {
id: legacyCenterMarkerbtn
text: "Legacy Center Marker"
Layout.preferredWidth: 375
onCheckedChanged: {
ChaperoneTabController.setCenterMarker(this.checked, false)
}
}
MyPushButton{
id:btnResetOrientation
text: "Reset Turn Counter"
onClicked: {
StatisticsTabController.statsRotationResetClicked()
}
}
}
}
Component.onCompleted: {
chaperoneFloorToggleBtn.checked = ChaperoneTabController.chaperoneFloorToggle
legacyCenterMarkerbtn.checked = ChaperoneTabController.centerMarker
}
Connections {
target: ChaperoneTabController
onChaperoneFloorToggleChanged:{
chaperoneFloorToggleBtn.checked = ChaperoneTabController.chaperoneFloorToggle
}
onCenterMarkerChanged:{
legacyCenterMarkerbtn.checked = ChaperoneTabController.centermarker
}
}
}
@@ -0,0 +1,127 @@
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import ovras.advsettings 1.0
import "../../../common"
import "." // QTBUG-34418, singletons require explicit import to load qmldir file
GroupBox {
id: chaperoneTypeGroupBox
Layout.fillWidth: true
label: MyText {
leftPadding: 10
text: "Chaperone Style"
bottomPadding: -10
}
background: Rectangle {
color: "transparent"
border.color: "#ffffff"
radius: 8
}
ColumnLayout {
anchors.fill: parent
Rectangle {
color: "#ffffff"
height: 1
Layout.fillWidth: true
Layout.bottomMargin: 5
}
RowLayout{
ButtonGroup { id: chaperoneTypeExclGroup
exclusive: true}
MyRadioButton {
id: denseRadio
text: qsTr("Dense")
ButtonGroup.group: chaperoneTypeExclGroup
Layout.preferredWidth: 200
onCheckedChanged: {
if(checked){
MyResources.playActivationSound()
ChaperoneTabController.setCollisionBoundStyle(0)
}
}
}
MyRadioButton {
id: medRadio
text: qsTr("Med")
ButtonGroup.group: chaperoneTypeExclGroup
Layout.preferredWidth: 200
onCheckedChanged: {
if(checked){
MyResources.playActivationSound()
ChaperoneTabController.setCollisionBoundStyle(1)
}
}
}
MyRadioButton {
id: squaresRadio
text: qsTr("Squares")
ButtonGroup.group: chaperoneTypeExclGroup
Layout.preferredWidth: 200
onCheckedChanged: {
if(checked){
MyResources.playActivationSound()
ChaperoneTabController.setCollisionBoundStyle(2)
}
}
}
MyRadioButton {
id: sparseRadio
text: qsTr("Sparse")
ButtonGroup.group: chaperoneTypeExclGroup
Layout.preferredWidth: 200
onCheckedChanged: {
if(checked){
MyResources.playActivationSound()
ChaperoneTabController.setCollisionBoundStyle(3)
}
}
}
MyRadioButton {
id: floorRadio
text: qsTr("Floor Only")
ButtonGroup.group: chaperoneTypeExclGroup
Layout.preferredWidth: 200
onCheckedChanged: {
if(checked){
MyResources.playActivationSound()
ChaperoneTabController.setCollisionBoundStyle(4)
}
}
}
}
}
Component.onCompleted: {
// set up var here to prevent double call to c++ from qml
var collisiontype = ChaperoneTabController.collisionBoundStyle
switch(collisiontype){
case 0: denseRadio.checked = true; break;
case 1: medRadio.checked = true; break;
case 2: squaresRadio.checked = true; break;
case 3: sparseRadio.checked = true; break
case 4: floorRadio.checked = true; break;
}
}
Connections {
target: ChaperoneTabController
onCollisionBoundStyleChanged:{
var collisiontype = ChaperoneTabController.collisionBoundStyle
switch(collisiontype){
case 0: denseRadio.checked = true; break;
case 1: medRadio.checked = true; break;
case 2: squaresRadio.checked = true; break;
case 3: sparseRadio.checked = true; break
case 4: floorRadio.checked = true; break;
}
}
}
}
+24
View File
@@ -0,0 +1,24 @@
import QtQuick 2.7
import QtQuick.Controls 2.0
import "." // QTBUG-34418, singletons require explicit import to load qmldir file
RadioButton {
hoverEnabled: true
contentItem: MyText {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text: parent.text
color: parent.enabled ? "#ffffff" : "#909090"
}
onHoveredChanged: {
if (hovered) {
forceActiveFocus()
} else {
focus = false
}
}
onClicked: {
MyResources.playActivationSound()
}
}
+1 -1
View File
@@ -48,7 +48,7 @@ Slider {
onValueChanged: {
if (activeFocus) {
MyResources.playActivationSound()
//MyResources.playActivationSound()
}
}
}
+6
View File
@@ -9,6 +9,7 @@ import "../video_page"
import "../chaperone_page"
import "../steamvr_page"
import "../rotation_page"
import "../chaperone_page/chaperone_additional"
Rectangle {
id: root
@@ -35,6 +36,11 @@ Rectangle {
visible: false
}
property ChaperoneAdditionalPage chaperoneAdditionalPage: ChaperoneAdditionalPage{
stackView: mainView
visible: false
}
property PlayspacePage playspacePage: PlayspacePage {
stackView: mainView
visible: false
@@ -59,9 +59,6 @@ GroupBox {
onPositionChanged: {
var val = (this.value * 100)
brightnessValueText.text = Math.round(val) + "%"
}
onValueChanged: {
VideoTabController.setBrightnessOpacityValue(value.toFixed(2), true)
}
}
@@ -76,12 +73,13 @@ GroupBox {
function onInputEvent(input) {
var val = parseFloat(input)
if (!isNaN(val)) {
if (val < 10) {
val = 10
if (val < 3.0) {
val = 3.0
} else if (val > 100.0) {
val = 100.0
}
var v = (val/100).toFixed(2)
var v = (val/100)
VideoTabController.setBrightnessOpacityValue(v.toFixed(2), true)
brightnessSlider.value = v
}
text = Math.round(VideoTabController.brightnessOpacityValue * 100) + "%"
@@ -91,7 +89,9 @@ GroupBox {
}
Component.onCompleted: {
brightnessSlider.value = VideoTabController.brightnessOpacityValue
var brightvalue = VideoTabController.brightnessOpacityValue
brightnessSlider.value = brightvalue
brightnessValueText.text = Math.round(brightvalue*100)+ "%"
brightnessToggle.checked = VideoTabController.brightnessEnabled
}
@@ -99,7 +99,9 @@ GroupBox {
target: VideoTabController
onBrightnessOpacityValueChanged: {
brightnessSlider.value = VideoTabController.brightnessOpacityValue
var brightvalue = VideoTabController.brightnessOpacityValue
brightnessSlider.value = brightvalue
brightnessValueText.text = Math.round(brightvalue*100)+ "%"
}
onBrightnessEnabledChanged: {
brightnessToggle.checked = VideoTabController.brightnessEnabled