diff --git a/interface/resources/qml/hifi/tablet/InputConfiguration.qml b/interface/resources/qml/hifi/tablet/InputConfiguration.qml index b26134c7fd..d556247b9d 100644 --- a/interface/resources/qml/hifi/tablet/InputConfiguration.qml +++ b/interface/resources/qml/hifi/tablet/InputConfiguration.qml @@ -72,7 +72,6 @@ Rectangle { anchors.left: sourceGlyph.right anchors.leftMargin: 10 anchors.topMargin: 30 - anchors.verticalCenter: sourceGlyph.horizontalCenter } Row { @@ -96,21 +95,6 @@ Rectangle { loader.source = InputConfiguration.configurationLayout(box.currentText); } } - - HifiControls.CheckBox { - onClicked: { - if (checked) { - box.model = InputConfiguration.activeInputPlugins(); - loader.source = ""; - loader.source = InputConfiguration.configurationLayout(box.currentText); - } else { - box.model = InputConfiguration.inputPlugins(); - loader.source = ""; - loader.source = InputConfiguration.configurationLayout(box.currentText); - } - } - } - } @@ -146,7 +130,6 @@ Rectangle { anchors.left: sliderGlyph.right anchors.leftMargin: 10 anchors.topMargin: 30 - anchors.verticalCenter: sliderGlyph.horizontalCenter } Loader { @@ -160,15 +143,35 @@ Rectangle { anchors.topMargin: 10 anchors.bottom: inputConfiguration.bottom - + source: InputConfiguration.configurationLayout(box.currentText); onLoaded: { if (loader.item.hasOwnProperty("pluginName")) { loader.item.pluginName = box.currentText + + if (loader.item.hasOwnProperty("displayInformation")) { + loader.item.displayInformation(); + } } } } - + function inputPlugins() { - return InputConfiguration.inputPlugins(); + return InputConfiguration.activeInputPlugins(); + } + + function initialize() { + loader.source = ""; + loader.source = InputConfiguration.configurationLayout(box.currentText); + } + + Timer { + id: timer + repeat: false + interval: 300 + onTriggered: initialize() + } + + Component.onCompleted: { + timer.start(); } } diff --git a/interface/resources/qml/hifi/tablet/OpenVrConfiguration.qml b/interface/resources/qml/hifi/tablet/OpenVrConfiguration.qml index 3679ffe919..958e115bb0 100644 --- a/interface/resources/qml/hifi/tablet/OpenVrConfiguration.qml +++ b/interface/resources/qml/hifi/tablet/OpenVrConfiguration.qml @@ -23,6 +23,7 @@ Rectangle { property int leftMargin: 75 property string pluginName: "" + property var displayInformation: openVrConfiguration.displayConfiguration() readonly property bool feetChecked: feetBox.checked readonly property bool hipsChecked: hipBox.checked @@ -353,7 +354,6 @@ Rectangle { size: 36 color: hifi.colors.white - anchors.horizontalCenter: parent.verticalCenter anchors.left: parent.left anchors.leftMargin: 30 @@ -379,6 +379,10 @@ Rectangle { } } + Component.onCompleted: { + InputConfiguration.calibrationStatus.connect(calibrationStatus); + } + HifiControls.SpinBox { id: timeToCalibrate @@ -391,34 +395,39 @@ Rectangle { colorScheme: hifi.colorSchemes.dark } - Component.onCompleted: { - var settings = InputConfiguration.configurationSettings(pluginName); + function calibrationStatus(status) { + console.log("getting calibration status"); + } + function displayConfiguration() { + var settings = InputConfiguration.configurationSettings(pluginName); var configurationType = settings["trackerConfiguration"]; displayTrackerConfiguration(configurationType); var HmdHead = settings["HMDHead"]; var viveController = settings["handController"]; - - console.log(HmdHead); - console.log(viveController); + if (HmdHead) { headBox.checked = true; + headPuckBox.checked = false; } else { headPuckBox.checked = true; + headBox.checked = false; } if (viveController) { handBox.checked = true; + handPuckBox.checked = false; } else { handPuckBox.checked = true; + handBox.checked = false; } } function displayTrackerConfiguration(type) { - + console.log(type); if (type === "Feet") { feetBox.checked = true; } else if (type === "FeetAndHips") { diff --git a/libraries/plugins/src/plugins/InputConfiguration.cpp b/libraries/plugins/src/plugins/InputConfiguration.cpp index 78a20653f4..3414350bf1 100644 --- a/libraries/plugins/src/plugins/InputConfiguration.cpp +++ b/libraries/plugins/src/plugins/InputConfiguration.cpp @@ -70,5 +70,6 @@ void InputConfiguration::calibratePlugin(QString pluginName) { } } -void InputConfiguration::calibrated() { +void InputConfiguration::calibrated(const QJsonObject& status) { + emit calibrationStatus(status); } diff --git a/libraries/plugins/src/plugins/InputConfiguration.h b/libraries/plugins/src/plugins/InputConfiguration.h index 2171afca34..fddf858c64 100644 --- a/libraries/plugins/src/plugins/InputConfiguration.h +++ b/libraries/plugins/src/plugins/InputConfiguration.h @@ -28,7 +28,10 @@ public: Q_INVOKABLE void setConfigurationSettings(QJsonObject configurationSettings, QString pluginName); Q_INVOKABLE void calibratePlugin(QString pluginName); Q_INVOKABLE QJsonObject configurationSettings(QString pluginName); - void calibrated(); + void calibrated(const QJsonObject& status); + +signals: + void calibrationStatus(const QJsonObject& status); }; #endif diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index d1087c5cc0..e7a8e87ef3 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -30,7 +30,7 @@ #include #include - +#include #include @@ -123,7 +123,6 @@ bool ViveControllerManager::isSupported() const { void ViveControllerManager::setConfigurationSettings(const QJsonObject configurationSettings) { if (isSupported()) { _inputDevice->configureCalibrationSettings(configurationSettings); - qDebug() << "sending back information"; } } @@ -325,12 +324,18 @@ void ViveControllerManager::InputDevice::configureCalibrationSettings(const QJso QJsonObject ViveControllerManager::InputDevice::configurationSettings() { Locker locker(_lock); QJsonObject configurationSettings; - configurationSettings["trackerConfiguration"] = configToString(_config); + configurationSettings["trackerConfiguration"] = configToString(_preferedConfig); configurationSettings["HMDHead"] = (_headConfig == HeadConfig::HMD) ? true : false; configurationSettings["handController"] = (_handConfig == HandConfig::HandController) ? true : false; return configurationSettings; } +void ViveControllerManager::InputDevice::emitCalibrationStatus() { + auto inputConfiguration = DependencyManager::get(); + QJsonObject status = QJsonObject(); + inputConfiguration->calibrated(status); +} + void ViveControllerManager::InputDevice::handleTrackedObject(uint32_t deviceIndex, const controller::InputCalibrationData& inputCalibrationData) { uint32_t poseIndex = controller::TRACKED_OBJECT_00 + deviceIndex; printDeviceTrackingResultChange(deviceIndex); @@ -463,6 +468,7 @@ void ViveControllerManager::InputDevice::calibrate(const controller::InputCalibr return; } _calibrated = true; + emitCalibrationStatus(); qDebug() << "PuckCalibration: " << configToString(_config) << " Configuration Successful"; } @@ -860,6 +866,7 @@ QString ViveControllerManager::InputDevice::configToString(Config config) { } void ViveControllerManager::InputDevice::setConfigFromString(const QString& value) { + qDebug() << "------------> setConfigFromString" << value; if (value == "Auto") { _preferedConfig = Config::Auto; } else if (value == "Feet") { diff --git a/plugins/openvr/src/ViveControllerManager.h b/plugins/openvr/src/ViveControllerManager.h index 257baf9fb5..5547c29213 100644 --- a/plugins/openvr/src/ViveControllerManager.h +++ b/plugins/openvr/src/ViveControllerManager.h @@ -100,6 +100,8 @@ private: int firstShoulderIndex, int secondShoulderIndex); void calibrateHead(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration); + void emitCalibrationStatus(); + class FilteredStick { public: