Merge branch 'master' into alpha-kung

This commit is contained in:
Kung-vr
2019-02-10 23:56:39 +09:00
10 changed files with 0 additions and 420 deletions
-7
View File
@@ -22,7 +22,6 @@
> * [Audio Page](#audio_page) > * [Audio Page](#audio_page)
> * [Revive Page](#revive_page) > * [Revive Page](#revive_page)
> * [Utilities Page](#utilities_page) > * [Utilities Page](#utilities_page)
> * [Accessibility Page](#accessibility_page)
> * [Statistics Page](#statistics_page) > * [Statistics Page](#statistics_page)
> * [Settings Page](#settings_page) > * [Settings Page](#settings_page)
> * [How To Compile](#how_to_compile) > * [How To Compile](#how_to_compile)
@@ -260,12 +259,6 @@ Any changes to controller settings are immediately applied by Revive (Requires R
- **Steam Desktop Overlay Width:** Allows to increase the size of the Steam desktop overlay. Useful for multi-monitor setups. - **Steam Desktop Overlay Width:** Allows to increase the size of the Steam desktop overlay. Useful for multi-monitor setups.
- **Media Control Keys:** Allows controlling a media player through the media keys. This is the same as having a keyboard with media keys and then pressing them. Should support most common media players. - **Media Control Keys:** Allows controlling a media player through the media keys. This is the same as having a keyboard with media keys and then pressing them. Should support most common media players.
<a name="accessibility_page"></a>
## - Accessibility Page:
![Accessibility Page](docs/screenshots/AccessibilityPage.png)
- **Adjust Player Height:** Offsets the player height to allows short or wheelchair-bound players to fully interact with height-limited applications by both boosting their height and being able to touch the in-game floor when necessary by pressing a configurable motion controller button.
<a name="statistics_page"></a> <a name="statistics_page"></a>
## - Statistics Page: ## - Statistics Page:
-3
View File
@@ -66,7 +66,6 @@ SOURCES += src/main.cpp\
src/tabcontrollers/ReviveTabController.cpp \ src/tabcontrollers/ReviveTabController.cpp \
src/tabcontrollers/UtilitiesTabController.cpp \ src/tabcontrollers/UtilitiesTabController.cpp \
src/tabcontrollers/PttController.cpp \ src/tabcontrollers/PttController.cpp \
src/tabcontrollers/AccessibilityTabController.cpp \
src/utils/ChaperoneUtils.cpp \ src/utils/ChaperoneUtils.cpp \
src/tabcontrollers/audiomanager/AudioManagerDummy.cpp \ src/tabcontrollers/audiomanager/AudioManagerDummy.cpp \
src/tabcontrollers/keyboardinput/KeyboardInputDummy.cpp \ src/tabcontrollers/keyboardinput/KeyboardInputDummy.cpp \
@@ -85,7 +84,6 @@ HEADERS += src/overlaycontroller.h \
src/tabcontrollers/UtilitiesTabController.h \ src/tabcontrollers/UtilitiesTabController.h \
src/tabcontrollers/AudioManager.h \ src/tabcontrollers/AudioManager.h \
src/tabcontrollers/PttController.h \ src/tabcontrollers/PttController.h \
src/tabcontrollers/AccessibilityTabController.h \
src/tabcontrollers/KeyboardInput.h \ src/tabcontrollers/KeyboardInput.h \
src/utils/Matrix.h \ src/utils/Matrix.h \
src/utils/ChaperoneUtils.h \ src/utils/ChaperoneUtils.h \
@@ -124,7 +122,6 @@ DISTFILES += \
src/res/img/battery/* \ src/res/img/battery/* \
src/res/img/icons/* \ src/res/img/icons/* \
src/res/qml/qmldir \ src/res/qml/qmldir \
src/res/qml/AccessibilityPage.qml \
src/res/qml/audio_page/* \ src/res/qml/audio_page/* \
src/res/qml/ChaperonePage.qml \ src/res/qml/ChaperonePage.qml \
src/res/qml/ChaperoneWarningsPage.qml \ src/res/qml/ChaperoneWarningsPage.qml \
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

-14
View File
@@ -129,7 +129,6 @@ OverlayController::OverlayController( bool desktopMode,
m_reviveTabController.initStage1( m_reviveTabController.initStage1(
m_settingsTabController.forceRevivePage() ); m_settingsTabController.forceRevivePage() );
m_utilitiesTabController.initStage1(); m_utilitiesTabController.initStage1();
m_accessibilityTabController.initStage1();
// Set qml context // Set qml context
qmlEngine.rootContext()->setContextProperty( "applicationVersion", qmlEngine.rootContext()->setContextProperty( "applicationVersion",
@@ -248,16 +247,6 @@ OverlayController::OverlayController( bool desktopMode,
QQmlEngine::setObjectOwnership( obj, QQmlEngine::CppOwnership ); QQmlEngine::setObjectOwnership( obj, QQmlEngine::CppOwnership );
return obj; 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() OverlayController::~OverlayController()
@@ -406,7 +395,6 @@ void OverlayController::SetWidget( QQuickItem* quickItem,
m_settingsTabController.initStage2( this, m_pWindow.get() ); m_settingsTabController.initStage2( this, m_pWindow.get() );
m_reviveTabController.initStage2( this, m_pWindow.get() ); m_reviveTabController.initStage2( this, m_pWindow.get() );
m_utilitiesTabController.initStage2( this, m_pWindow.get() ); m_utilitiesTabController.initStage2( this, m_pWindow.get() );
m_accessibilityTabController.initStage2( this, m_pWindow.get() );
} }
void OverlayController::OnRenderRequest() void OverlayController::OnRenderRequest()
@@ -761,8 +749,6 @@ void OverlayController::mainEventLoop()
m_settingsTabController.eventLoopTick(); m_settingsTabController.eventLoopTick();
m_reviveTabController.eventLoopTick(); m_reviveTabController.eventLoopTick();
m_audioTabController.eventLoopTick(); m_audioTabController.eventLoopTick();
m_accessibilityTabController.eventLoopTick(
vr::VRCompositor()->GetTrackingSpace() );
if ( m_ulOverlayThumbnailHandle != vr::k_ulOverlayHandleInvalid ) if ( m_ulOverlayThumbnailHandle != vr::k_ulOverlayHandleInvalid )
{ {
-3
View File
@@ -37,7 +37,6 @@
#include "tabcontrollers/SettingsTabController.h" #include "tabcontrollers/SettingsTabController.h"
#include "tabcontrollers/ReviveTabController.h" #include "tabcontrollers/ReviveTabController.h"
#include "tabcontrollers/UtilitiesTabController.h" #include "tabcontrollers/UtilitiesTabController.h"
#include "tabcontrollers/AccessibilityTabController.h"
#include "ivrinput/ivrinput.h" #include "ivrinput/ivrinput.h"
@@ -50,7 +49,6 @@ namespace advsettings
// Actual rates of updates are counter * vsync (~11ms) // Actual rates of updates are counter * vsync (~11ms)
// Values chosen based on update speed priority // Values chosen based on update speed priority
// Avoid setting values to the same numbers. // Avoid setting values to the same numbers.
constexpr int k_accessibilitySettingsUpdateCounter = 151;
constexpr int k_audioSettingsUpdateCounter = 89; constexpr int k_audioSettingsUpdateCounter = 89;
constexpr int k_chaperoneSettingsUpdateCounter = 101; constexpr int k_chaperoneSettingsUpdateCounter = 101;
constexpr int k_moveCenterSettingsUpdateCounter = 149; constexpr int k_moveCenterSettingsUpdateCounter = 149;
@@ -126,7 +124,6 @@ public: // I know it's an ugly hack to make them public to enable external
SettingsTabController m_settingsTabController; SettingsTabController m_settingsTabController;
ReviveTabController m_reviveTabController; ReviveTabController m_reviveTabController;
UtilitiesTabController m_utilitiesTabController; UtilitiesTabController m_utilitiesTabController;
AccessibilityTabController m_accessibilityTabController;
private: private:
QPoint getMousePositionForEvent( vr::VREvent_Mouse_t mouse ); QPoint getMousePositionForEvent( vr::VREvent_Mouse_t mouse );
-187
View File
@@ -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
}
}
}
}
-11
View File
@@ -114,17 +114,6 @@ MyStackViewPage {
} }
} }
MyPushButton {
id: accessibilityButton
activationSoundEnabled: false
text: "Accessibility"
Layout.fillWidth: true
onClicked: {
MyResources.playFocusChangedSound()
mainView.push(accessibilityPage)
}
}
MyPushButton { MyPushButton {
id: statisticsButton id: statisticsButton
activationSoundEnabled: false activationSoundEnabled: false
-5
View File
@@ -71,11 +71,6 @@ Rectangle {
visible: false visible: false
} }
property AccessibilityPage accessibilityPage: AccessibilityPage {
stackView: mainView
visible: false
}
StackView { StackView {
id: mainView id: mainView
anchors.fill: parent 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