Remove the Accessibility Tab completely from the app (#79)
See https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/27 The Accessibility tab was made redundant with the implementation of the new playspace/room/universe tab in https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/60 The tab inherited from the PttController class, which required changes in order to work with the new IVRInput system. See https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/51 for more about the IVRInput system. Removing the page now at an early state is going to make it easier to refactor the PttController since only one class is inheriting it, instead of two. Since the Accessibility tab is going to be removed anyway, it makes sense to remove it now.
This commit is contained in:
@@ -129,7 +129,6 @@ OverlayController::OverlayController( bool desktopMode,
|
||||
m_reviveTabController.initStage1(
|
||||
m_settingsTabController.forceRevivePage() );
|
||||
m_utilitiesTabController.initStage1();
|
||||
m_accessibilityTabController.initStage1();
|
||||
|
||||
// Set qml context
|
||||
qmlEngine.rootContext()->setContextProperty( "applicationVersion",
|
||||
@@ -248,16 +247,6 @@ OverlayController::OverlayController( bool desktopMode,
|
||||
QQmlEngine::setObjectOwnership( obj, QQmlEngine::CppOwnership );
|
||||
return obj;
|
||||
} );
|
||||
qmlRegisterSingletonType<SteamVRTabController>(
|
||||
"matzman666.advsettings",
|
||||
1,
|
||||
0,
|
||||
"AccessibilityTabController",
|
||||
[]( QQmlEngine*, QJSEngine* ) {
|
||||
QObject* obj = &( objectAddress->m_accessibilityTabController );
|
||||
QQmlEngine::setObjectOwnership( obj, QQmlEngine::CppOwnership );
|
||||
return obj;
|
||||
} );
|
||||
}
|
||||
|
||||
OverlayController::~OverlayController()
|
||||
@@ -406,7 +395,6 @@ void OverlayController::SetWidget( QQuickItem* quickItem,
|
||||
m_settingsTabController.initStage2( this, m_pWindow.get() );
|
||||
m_reviveTabController.initStage2( this, m_pWindow.get() );
|
||||
m_utilitiesTabController.initStage2( this, m_pWindow.get() );
|
||||
m_accessibilityTabController.initStage2( this, m_pWindow.get() );
|
||||
}
|
||||
|
||||
void OverlayController::OnRenderRequest()
|
||||
@@ -750,8 +738,6 @@ void OverlayController::mainEventLoop()
|
||||
m_settingsTabController.eventLoopTick();
|
||||
m_reviveTabController.eventLoopTick();
|
||||
m_audioTabController.eventLoopTick();
|
||||
m_accessibilityTabController.eventLoopTick(
|
||||
vr::VRCompositor()->GetTrackingSpace() );
|
||||
|
||||
if ( m_ulOverlayThumbnailHandle != vr::k_ulOverlayHandleInvalid )
|
||||
{
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
#include "tabcontrollers/SettingsTabController.h"
|
||||
#include "tabcontrollers/ReviveTabController.h"
|
||||
#include "tabcontrollers/UtilitiesTabController.h"
|
||||
#include "tabcontrollers/AccessibilityTabController.h"
|
||||
|
||||
#include "ivrinput/ivrinput.h"
|
||||
|
||||
@@ -50,7 +49,6 @@ namespace advsettings
|
||||
// Actual rates of updates are counter * vsync (~11ms)
|
||||
// Values chosen based on update speed priority
|
||||
// Avoid setting values to the same numbers.
|
||||
constexpr int k_accessibilitySettingsUpdateCounter = 151;
|
||||
constexpr int k_audioSettingsUpdateCounter = 89;
|
||||
constexpr int k_chaperoneSettingsUpdateCounter = 101;
|
||||
constexpr int k_moveCenterSettingsUpdateCounter = 149;
|
||||
@@ -121,7 +119,6 @@ public: // I know it's an ugly hack to make them public to enable external
|
||||
SettingsTabController m_settingsTabController;
|
||||
ReviveTabController m_reviveTabController;
|
||||
UtilitiesTabController m_utilitiesTabController;
|
||||
AccessibilityTabController m_accessibilityTabController;
|
||||
|
||||
private:
|
||||
QPoint getMousePositionForEvent( vr::VREvent_Mouse_t mouse );
|
||||
|
||||
@@ -1,187 +0,0 @@
|
||||
import QtQuick 2.7
|
||||
import QtQuick.Controls 2.0
|
||||
import QtQuick.Layouts 1.3
|
||||
import matzman666.advsettings 1.0
|
||||
import "common"
|
||||
|
||||
|
||||
MyStackViewPage {
|
||||
headerText: "Accessibility Tools"
|
||||
|
||||
PttControllerConfigDialog {
|
||||
id: pttControllerConfigDialog
|
||||
pttControllerConfigClass: AccessibilityTabController
|
||||
}
|
||||
|
||||
content: ColumnLayout {
|
||||
spacing: 92
|
||||
|
||||
GroupBox {
|
||||
Layout.fillWidth: true
|
||||
|
||||
label: MyText {
|
||||
leftPadding: 10
|
||||
text: "Adjust Player Height"
|
||||
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 {
|
||||
MyPushButton2 {
|
||||
Layout.preferredWidth: 40
|
||||
text: "-"
|
||||
onClicked: {
|
||||
accessibilityMoveYSlider.value -= 0.05
|
||||
}
|
||||
}
|
||||
|
||||
MySlider {
|
||||
id: accessibilityMoveYSlider
|
||||
from: 0
|
||||
to: 1.5
|
||||
stepSize: 0.01
|
||||
value: 0.0
|
||||
Layout.fillWidth: true
|
||||
onPositionChanged: {
|
||||
var val = this.from + ( this.position * (this.to - this.from))
|
||||
accessibilityMoveYText.text = val.toFixed(2)
|
||||
}
|
||||
onValueChanged: {
|
||||
AccessibilityTabController.heightOffset = this.value.toFixed(2)
|
||||
}
|
||||
}
|
||||
|
||||
MyPushButton2 {
|
||||
Layout.preferredWidth: 40
|
||||
text: "+"
|
||||
onClicked: {
|
||||
accessibilityMoveYSlider.value += 0.05
|
||||
}
|
||||
}
|
||||
|
||||
MyTextField {
|
||||
id: accessibilityMoveYText
|
||||
text: "0.00"
|
||||
keyBoardUID: 700
|
||||
Layout.preferredWidth: 140
|
||||
Layout.leftMargin: 10
|
||||
Layout.rightMargin: 10
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
function onInputEvent(input) {
|
||||
var val = parseFloat(input)
|
||||
if (!isNaN(val)) {
|
||||
if (val >= accessibilityMoveYSlider.from && val <= accessibilityMoveYSlider.to) {
|
||||
accessibilityMoveYSlider.value = val.toFixed(2);
|
||||
} else {
|
||||
AccessibilityTabController.setHeightOffset(val.toFixed(2), false);
|
||||
}
|
||||
}
|
||||
text = AccessibilityTabController.heightOffset.toFixed(2)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
MyToggleButton {
|
||||
id: heightOffsetPttEnabledToggle
|
||||
Layout.preferredWidth: 260
|
||||
text: "Push-to-Toggle:"
|
||||
onClicked: {
|
||||
AccessibilityTabController.pttEnabled = checked
|
||||
}
|
||||
}
|
||||
MyToggleButton {
|
||||
id: heightOffsetPttLeftControllerToggle
|
||||
text: "Left Controller"
|
||||
onClicked: {
|
||||
AccessibilityTabController.setPttLeftControllerEnabled(checked, false)
|
||||
}
|
||||
}
|
||||
MyPushButton {
|
||||
text: "Configure"
|
||||
onClicked: {
|
||||
pttControllerConfigDialog.openPopup(0)
|
||||
}
|
||||
}
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
MyToggleButton {
|
||||
id: heightOffsetPttRightControllerToggle
|
||||
text: "Right Controller"
|
||||
onClicked: {
|
||||
AccessibilityTabController.setPttRightControllerEnabled(checked, false)
|
||||
}
|
||||
}
|
||||
MyPushButton {
|
||||
text: "Configure"
|
||||
onClicked: {
|
||||
pttControllerConfigDialog.openPopup(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item { Layout.fillHeight: true; Layout.fillWidth: true}
|
||||
|
||||
MyPushButton {
|
||||
id: accessibilityResetButton
|
||||
Layout.preferredWidth: 250
|
||||
text: "Reset"
|
||||
onClicked: {
|
||||
AccessibilityTabController.reset()
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
var heightOffsetFormatted = AccessibilityTabController.heightOffset.toFixed(2)
|
||||
if (heightOffsetFormatted >= accessibilityMoveYSlider.from && heightOffsetFormatted <= accessibilityMoveYSlider.to) {
|
||||
accessibilityMoveYSlider.value = heightOffsetFormatted
|
||||
}
|
||||
accessibilityMoveYText.text = heightOffsetFormatted
|
||||
heightOffsetPttEnabledToggle.checked = AccessibilityTabController.pttEnabled
|
||||
heightOffsetPttLeftControllerToggle.checked = AccessibilityTabController.pttLeftControllerEnabled
|
||||
heightOffsetPttRightControllerToggle.checked = AccessibilityTabController.pttRightControllerEnabled
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: AccessibilityTabController
|
||||
onHeightOffsetChanged: {
|
||||
var heightOffsetFormatted = AccessibilityTabController.heightOffset.toFixed(2)
|
||||
if (heightOffsetFormatted >= accessibilityMoveYSlider.from && heightOffsetFormatted <= accessibilityMoveYSlider.to) {
|
||||
accessibilityMoveYSlider.value = heightOffsetFormatted
|
||||
}
|
||||
accessibilityMoveYText.text = heightOffsetFormatted
|
||||
}
|
||||
onPttEnabledChanged: {
|
||||
heightOffsetPttEnabledToggle.checked = AccessibilityTabController.pttEnabled
|
||||
}
|
||||
onPttActiveChanged: {
|
||||
|
||||
}
|
||||
onPttLeftControllerEnabledChanged: {
|
||||
heightOffsetPttLeftControllerToggle.checked = AccessibilityTabController.pttLeftControllerEnabled
|
||||
}
|
||||
onPttRightControllerEnabledChanged: {
|
||||
heightOffsetPttRightControllerToggle.checked = AccessibilityTabController.pttRightControllerEnabled
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -103,17 +103,6 @@ MyStackViewPage {
|
||||
}
|
||||
}
|
||||
|
||||
MyPushButton {
|
||||
id: accessibilityButton
|
||||
activationSoundEnabled: false
|
||||
text: "Accessibility"
|
||||
Layout.fillWidth: true
|
||||
onClicked: {
|
||||
MyResources.playFocusChangedSound()
|
||||
mainView.push(accessibilityPage)
|
||||
}
|
||||
}
|
||||
|
||||
MyPushButton {
|
||||
id: statisticsButton
|
||||
activationSoundEnabled: false
|
||||
|
||||
@@ -65,11 +65,6 @@ Rectangle {
|
||||
visible: false
|
||||
}
|
||||
|
||||
property AccessibilityPage accessibilityPage: AccessibilityPage {
|
||||
stackView: mainView
|
||||
visible: false
|
||||
}
|
||||
|
||||
StackView {
|
||||
id: mainView
|
||||
anchors.fill: parent
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
#include "AccessibilityTabController.h"
|
||||
#include <QQuickWindow>
|
||||
#include "../overlaycontroller.h"
|
||||
|
||||
// application namespace
|
||||
namespace advsettings
|
||||
{
|
||||
void AccessibilityTabController::initStage1()
|
||||
{
|
||||
setTrackingUniverse( vr::VRCompositor()->GetTrackingSpace() );
|
||||
auto settings = OverlayController::appSettings();
|
||||
settings->beginGroup( getSettingsName() );
|
||||
auto value = settings->value( "heightOffset", m_heightOffset );
|
||||
settings->endGroup();
|
||||
if ( value.isValid() && !value.isNull() )
|
||||
{
|
||||
m_heightOffset = value.toFloat();
|
||||
emit heightOffsetChanged( m_heightOffset );
|
||||
}
|
||||
|
||||
reloadPttConfig();
|
||||
}
|
||||
|
||||
void AccessibilityTabController::initStage2( OverlayController* var_parent,
|
||||
QQuickWindow* var_widget )
|
||||
{
|
||||
this->parent = var_parent;
|
||||
this->widget = var_widget;
|
||||
}
|
||||
|
||||
void AccessibilityTabController::setTrackingUniverse( int value )
|
||||
{
|
||||
if ( m_trackingUniverse != value )
|
||||
{
|
||||
reset();
|
||||
m_trackingUniverse = value;
|
||||
}
|
||||
}
|
||||
|
||||
float AccessibilityTabController::heightOffset() const
|
||||
{
|
||||
return m_heightOffset;
|
||||
}
|
||||
|
||||
void AccessibilityTabController::setHeightOffset( float value, bool notify )
|
||||
{
|
||||
if ( std::abs( m_heightOffset - value ) > 0.001 )
|
||||
{
|
||||
modHeightOffset( value - m_heightOffset, notify );
|
||||
}
|
||||
}
|
||||
|
||||
void AccessibilityTabController::modHeightOffset( float value, bool notify )
|
||||
{
|
||||
parent->AddOffsetToUniverseCenter(
|
||||
( vr::TrackingUniverseOrigin ) m_trackingUniverse, 1, -value, false );
|
||||
m_heightOffset += value;
|
||||
auto settings = OverlayController::appSettings();
|
||||
settings->beginGroup( getSettingsName() );
|
||||
settings->setValue( "heightOffset", m_heightOffset );
|
||||
settings->endGroup();
|
||||
settings->sync();
|
||||
if ( notify )
|
||||
{
|
||||
emit heightOffsetChanged( m_heightOffset );
|
||||
}
|
||||
}
|
||||
|
||||
void AccessibilityTabController::onPttStart()
|
||||
{
|
||||
m_toggleHeightOffset = m_heightOffset;
|
||||
parent->AddOffsetToUniverseCenter(
|
||||
( vr::TrackingUniverseOrigin ) m_trackingUniverse,
|
||||
1,
|
||||
m_toggleHeightOffset,
|
||||
false );
|
||||
}
|
||||
|
||||
void AccessibilityTabController::onPttStop()
|
||||
{
|
||||
parent->AddOffsetToUniverseCenter(
|
||||
( vr::TrackingUniverseOrigin ) m_trackingUniverse,
|
||||
1,
|
||||
-m_toggleHeightOffset,
|
||||
false );
|
||||
}
|
||||
|
||||
void AccessibilityTabController::onPttDisabled()
|
||||
{
|
||||
if ( pttActive() )
|
||||
{
|
||||
stopPtt();
|
||||
}
|
||||
m_toggleHeightOffset = 0;
|
||||
}
|
||||
|
||||
void AccessibilityTabController::reset()
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> lock( eventLoopMutex );
|
||||
vr::VRChaperoneSetup()->RevertWorkingCopy();
|
||||
parent->AddOffsetToUniverseCenter(
|
||||
( vr::TrackingUniverseOrigin ) m_trackingUniverse,
|
||||
1,
|
||||
m_heightOffset,
|
||||
false,
|
||||
false );
|
||||
vr::VRChaperoneSetup()->CommitWorkingCopy( vr::EChaperoneConfigFile_Live );
|
||||
m_heightOffset = 0.0f;
|
||||
emit heightOffsetChanged( m_heightOffset );
|
||||
}
|
||||
|
||||
void AccessibilityTabController::eventLoopTick(
|
||||
vr::ETrackingUniverseOrigin universe )
|
||||
{
|
||||
if ( !eventLoopMutex.try_lock() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( settingsUpdateCounter >= k_accessibilitySettingsUpdateCounter )
|
||||
{
|
||||
if ( parent->isDashboardVisible() )
|
||||
{
|
||||
setTrackingUniverse( ( int ) universe );
|
||||
}
|
||||
settingsUpdateCounter = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
settingsUpdateCounter++;
|
||||
}
|
||||
checkPttStatus();
|
||||
eventLoopMutex.unlock();
|
||||
}
|
||||
|
||||
} // namespace advsettings
|
||||
@@ -1,54 +0,0 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "PttController.h"
|
||||
|
||||
class QQuickWindow;
|
||||
// application namespace
|
||||
namespace advsettings
|
||||
{
|
||||
// forward declaration
|
||||
class OverlayController;
|
||||
|
||||
class AccessibilityTabController : public PttController
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY( float heightOffset READ heightOffset WRITE setHeightOffset
|
||||
NOTIFY heightOffsetChanged )
|
||||
|
||||
private:
|
||||
OverlayController* parent;
|
||||
QQuickWindow* widget;
|
||||
|
||||
int m_trackingUniverse = ( int ) vr::TrackingUniverseStanding;
|
||||
float m_heightOffset = 0.0f;
|
||||
float m_toggleHeightOffset = 0.0f;
|
||||
|
||||
unsigned settingsUpdateCounter = 0;
|
||||
|
||||
QString getSettingsName() override
|
||||
{
|
||||
return "accessibilitySettings";
|
||||
}
|
||||
void onPttStart() override;
|
||||
void onPttStop() override;
|
||||
void onPttDisabled() override;
|
||||
|
||||
public:
|
||||
void initStage1();
|
||||
void initStage2( OverlayController* parent, QQuickWindow* widget );
|
||||
void eventLoopTick( vr::ETrackingUniverseOrigin universe );
|
||||
|
||||
float heightOffset() const;
|
||||
|
||||
public slots:
|
||||
void setTrackingUniverse( int value );
|
||||
void setHeightOffset( float value, bool notify = true );
|
||||
void modHeightOffset( float value, bool notify = true );
|
||||
void reset();
|
||||
|
||||
signals:
|
||||
void heightOffsetChanged( float value );
|
||||
};
|
||||
|
||||
} // namespace advsettings
|
||||
Reference in New Issue
Block a user