From beb0b9fce4192c5650d2885da4fc65dd24f8ba3b Mon Sep 17 00:00:00 2001 From: matzman666 Date: Sat, 11 Feb 2017 21:50:54 +0100 Subject: [PATCH] Added "ToggleDelay" option to Revive menu. --- bin/win64/res/qml/RevivePage.qml | 32 ++++++++++++++++++- src/tabcontrollers/ReviveTabController.cpp | 37 ++++++++++++++++++++++ src/tabcontrollers/ReviveTabController.h | 5 +++ 3 files changed, 73 insertions(+), 1 deletion(-) diff --git a/bin/win64/res/qml/RevivePage.qml b/bin/win64/res/qml/RevivePage.qml index 88be1e9..030db08 100644 --- a/bin/win64/res/qml/RevivePage.qml +++ b/bin/win64/res/qml/RevivePage.qml @@ -150,7 +150,7 @@ MyStackViewPage { MyComboBox { id: gripButtonModeComboBox - Layout.fillWidth: true + Layout.preferredWidth: 300 model: ["Normal Mode", "Toggle Mode", "Hybrid Mode"] onCurrentIndexChanged: { if (componentCompleted) { @@ -158,6 +158,32 @@ MyStackViewPage { } } } + + MyText { + Layout.leftMargin: 50 + text: "Toggle Delay: " + Layout.fillWidth: true + } + + MyTextField { + id: toggleDelayText + text: "0.50" + keyBoardUID: 225 + 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 + } + ReviveTabController.setToggleDelay(val.toFixed(2), false) + } + text = ReviveTabController.toggleDelay.toFixed(2) + } + } + } GroupBox { @@ -969,6 +995,7 @@ MyStackViewPage { pixelsPerDisplayPixelText.text = v gripButtonModeComboBox.currentIndex = ReviveTabController.gripButtonMode + toggleDelayText.text = ReviveTabController.toggleDelay.toFixed(2) v = ReviveTabController.thumbDeadzone.toFixed(2) if (v <= thumbDeadzoneSlider.to) { @@ -997,6 +1024,9 @@ MyStackViewPage { onGripButtonModeChanged : { gripButtonModeComboBox.currentIndex = ReviveTabController.gripButtonMode } + onToggleDelayChanged : { + toggleDelayText.text = ReviveTabController.toggleDelay.toFixed(2) + } onPixelsPerDisplayPixelOverrideEnabledChanged : { pixelsPerDisplayPixelToggle.checked = ReviveTabController.pixelsPerDisplayPixelOverrideEnabled } diff --git a/src/tabcontrollers/ReviveTabController.cpp b/src/tabcontrollers/ReviveTabController.cpp index 2c529c1..11462fb 100644 --- a/src/tabcontrollers/ReviveTabController.cpp +++ b/src/tabcontrollers/ReviveTabController.cpp @@ -9,6 +9,7 @@ namespace advsettings { const char* section_revive = "revive"; const char* key_pixelsPerDisplayPixel = "pixelsPerDisplayPixel"; const char* key_toggleGrip = "ToggleGrip"; + const char* key_toggleDelay = "ToggleDelay"; const char* key_thumbDeadzone = "ThumbDeadzone"; const char* key_thumbSensitivity = "ThumbSensitivity"; const char* key_touchPitch = "TouchPitch"; @@ -49,6 +50,13 @@ namespace advsettings { m_gripButtonMode = valuei; } + valuef = vr::VRSettings()->GetFloat(section_revive, key_toggleDelay, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"revive::" << key_toggleDelay << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } else { + m_toggleDelay = valuef; + } + valuef = vr::VRSettings()->GetFloat(section_revive, key_thumbDeadzone, &vrSettingsError); if (vrSettingsError != vr::VRSettingsError_None) { LOG(WARNING) << "Could not read \"revive::" << key_thumbDeadzone << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); @@ -177,6 +185,11 @@ namespace advsettings { setGripButtonMode(valuei); } + valuef = vr::VRSettings()->GetFloat(section_revive, key_toggleDelay, &vrSettingsError); + if (vrSettingsError == vr::VRSettingsError_None) { + setToggleDelay(valuef); + } + valuef = vr::VRSettings()->GetFloat(section_revive, key_thumbDeadzone, &vrSettingsError); if (vrSettingsError == vr::VRSettingsError_None) { setThumbDeadzone(valuef); @@ -263,6 +276,10 @@ namespace advsettings { return m_gripButtonMode; } + float ReviveTabController::toggleDelay() const { + return m_toggleDelay; + } + bool ReviveTabController::isPixelsPerDisplayPixelOverrideEnabled() const { return m_pixelsPerDisplayPixelOverrideEnabled; } @@ -338,6 +355,21 @@ namespace advsettings { } } + void ReviveTabController::setToggleDelay(float value, bool notify) { + if (m_toggleDelay != value) { + m_toggleDelay = value; + vr::EVRSettingsError vrSettingsError; + vr::VRSettings()->SetFloat(section_revive, key_toggleDelay, m_toggleDelay, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not set \"revive::" << key_toggleDelay << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + vr::VRSettings()->Sync(); + if (notify) { + emit toggleDelayChanged(m_toggleDelay); + } + } + } + void ReviveTabController::setPixelsPerDisplayPixelOverrideEnabled(bool value, bool notify) { if (m_pixelsPerDisplayPixelOverrideEnabled != value) { m_pixelsPerDisplayPixelOverrideEnabled = value; @@ -599,6 +631,11 @@ namespace advsettings { LOG(WARNING) << "Could not remove \"revive::" << key_toggleGrip << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); } + vr::VRSettings()->RemoveKeyInSection(section_revive, key_toggleDelay, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not remove \"revive::" << key_toggleDelay << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + vr::VRSettings()->RemoveKeyInSection(section_revive, key_thumbDeadzone, &vrSettingsError); if (vrSettingsError != vr::VRSettingsError_None) { LOG(WARNING) << "Could not remove \"revive::" << key_thumbDeadzone << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); diff --git a/src/tabcontrollers/ReviveTabController.h b/src/tabcontrollers/ReviveTabController.h index 667e31e..d00af88 100644 --- a/src/tabcontrollers/ReviveTabController.h +++ b/src/tabcontrollers/ReviveTabController.h @@ -31,6 +31,7 @@ namespace advsettings { Q_PROPERTY(int isOverlayInstalled READ isOverlayInstalled NOTIFY isOverlayInstalledChanged) Q_PROPERTY(int gripButtonMode READ gripButtonMode WRITE setGripButtonMode NOTIFY gripButtonModeChanged) Q_PROPERTY(bool pixelsPerDisplayPixelOverrideEnabled READ isPixelsPerDisplayPixelOverrideEnabled WRITE setPixelsPerDisplayPixelOverrideEnabled NOTIFY pixelsPerDisplayPixelOverrideEnabledChanged) + Q_PROPERTY(float toggleDelay READ toggleDelay WRITE setToggleDelay NOTIFY toggleDelayChanged) Q_PROPERTY(float pixelsPerDisplayPixelOverride READ pixelsPerDisplayPixelOverride WRITE setPixelsPerDisplayPixelOverride NOTIFY pixelsPerDisplayPixelOverrideChanged) Q_PROPERTY(float thumbDeadzone READ thumbDeadzone WRITE setThumbDeadzone NOTIFY thumbDeadzoneChanged) Q_PROPERTY(float thumbRange READ thumbRange WRITE setThumbRange NOTIFY thumbRangeChanged) @@ -52,6 +53,7 @@ namespace advsettings { bool m_isOverlayInstalled = false; int m_gripButtonMode = 0; + float m_toggleDelay = 0.5f; bool m_pixelsPerDisplayPixelOverrideEnabled = false; float m_pixelsPerDisplayPixelOverride = 1.0f; float m_thumbDeadzone = 0.3f; @@ -81,6 +83,7 @@ namespace advsettings { bool isOverlayInstalled() const; int gripButtonMode() const; + float toggleDelay() const; bool isPixelsPerDisplayPixelOverrideEnabled() const; float pixelsPerDisplayPixelOverride() const; @@ -111,6 +114,7 @@ namespace advsettings { public slots: void setGripButtonMode(int value, bool notify = true); + void setToggleDelay(float value, bool notify = true); void setPixelsPerDisplayPixelOverrideEnabled(bool value, bool notify = true); void setPixelsPerDisplayPixelOverride(float value, bool notify = true); @@ -141,6 +145,7 @@ namespace advsettings { void isOverlayInstalledChanged(bool value); void gripButtonModeChanged(int value); + void toggleDelayChanged(float value); void pixelsPerDisplayPixelOverrideEnabledChanged(bool value); void pixelsPerDisplayPixelOverrideChanged(float value);