making final changes

This commit is contained in:
Dante Ruiz 2017-06-12 22:01:41 +01:00
parent 1b13cd6d45
commit bbe675ab72
5 changed files with 124 additions and 69 deletions

View file

@ -89,24 +89,24 @@ Rectangle {
editable: true editable: true
colorScheme: hifi.colorSchemes.dark colorScheme: hifi.colorSchemes.dark
model: inputPlugins() model: inputPlugins()
label: "" label: ""
onCurrentIndexChanged: { onCurrentIndexChanged: {
changeSource(); changeSource();
} }
} }
HifiControls.CheckBox { HifiControls.CheckBox {
id: checkBox id: checkBox
colorScheme: hifi.colorSchemes.dark colorScheme: hifi.colorSchemes.dark
text: "show all input plugins" text: "show all input plugins"
onClicked: { onClicked: {
console.log("clicked"); console.log("clicked");
inputPlugins(); inputPlugins();
changeSource(); changeSource();
} }
} }
} }
@ -166,13 +166,13 @@ Rectangle {
} }
} }
} }
function inputPlugins() { function inputPlugins() {
if (checkBox.checked) { if (checkBox.checked) {
return InputConfiguration.inputPlugins(); return InputConfiguration.inputPlugins();
} else { } else {
return InputConfiguration.activeInputPlugins(); return InputConfiguration.activeInputPlugins();
} }
} }
function initialize() { function initialize() {
@ -180,14 +180,14 @@ Rectangle {
} }
function changeSource() { function changeSource() {
loader.source = ""; loader.source = "";
var source = InputConfiguration.configurationLayout(box.currentText); var source = InputConfiguration.configurationLayout(box.currentText);
loader.source = source; loader.source = source;
if (source === "") { if (source === "") {
box.label = "(not configurable)"; box.label = "(not configurable)";
} else { } else {
box.label = ""; box.label = "";
} }
} }
Timer { Timer {

View file

@ -84,13 +84,13 @@ Rectangle {
composeConfigurationSettings(); composeConfigurationSettings();
} }
} }
RalewayBold { RalewayBold {
size: 12 size: 12
text: "Vive HMD" text: "Vive HMD"
color: hifi.colors.lightGrayText color: hifi.colors.lightGrayText
} }
HifiControls.CheckBox { HifiControls.CheckBox {
id: headPuckBox id: headPuckBox
width: 15 width: 15
@ -116,10 +116,10 @@ Rectangle {
RalewayBold { RalewayBold {
id: hands id: hands
text: "Hands:" text: "Hands:"
size: 12 size: 12
color: "white" color: "white"
anchors.top: headConfig.bottom anchors.top: headConfig.bottom
@ -135,7 +135,7 @@ Rectangle {
anchors.left: openVrConfiguration.left anchors.left: openVrConfiguration.left
anchors.leftMargin: leftMargin + 20 anchors.leftMargin: leftMargin + 20
spacing: 10 spacing: 10
HifiControls.CheckBox { HifiControls.CheckBox {
id: handBox id: handBox
width: 15 width: 15
@ -151,13 +151,13 @@ Rectangle {
composeConfigurationSettings(); composeConfigurationSettings();
} }
} }
RalewayBold { RalewayBold {
size: 12 size: 12
text: "Controllers" text: "Controllers"
color: hifi.colors.lightGrayText color: hifi.colors.lightGrayText
} }
HifiControls.CheckBox { HifiControls.CheckBox {
id: handPuckBox id: handPuckBox
width: 12 width: 12
@ -173,7 +173,7 @@ Rectangle {
composeConfigurationSettings(); composeConfigurationSettings();
} }
} }
RalewayBold { RalewayBold {
size: 12 size: 12
text: "Trackers" text: "Trackers"
@ -183,10 +183,10 @@ Rectangle {
RalewayBold { RalewayBold {
id: additional id: additional
text: "Additional Trackers" text: "Additional Trackers"
size: 12 size: 12
color: hifi.colors.white color: hifi.colors.white
anchors.top: handConfig.bottom anchors.top: handConfig.bottom
@ -202,7 +202,7 @@ Rectangle {
anchors.left: openVrConfiguration.left anchors.left: openVrConfiguration.left
anchors.leftMargin: leftMargin + 20 anchors.leftMargin: leftMargin + 20
spacing: 10 spacing: 10
HifiControls.CheckBox { HifiControls.CheckBox {
id: feetBox id: feetBox
width: 15 width: 15
@ -216,7 +216,7 @@ Rectangle {
composeConfigurationSettings(); composeConfigurationSettings();
} }
} }
RalewayBold { RalewayBold {
size: 12 size: 12
text: "Feet" text: "Feet"
@ -231,7 +231,7 @@ Rectangle {
anchors.left: openVrConfiguration.left anchors.left: openVrConfiguration.left
anchors.leftMargin: leftMargin + 20 anchors.leftMargin: leftMargin + 20
spacing: 10 spacing: 10
HifiControls.CheckBox { HifiControls.CheckBox {
id: hipBox id: hipBox
width: 15 width: 15
@ -249,7 +249,7 @@ Rectangle {
composeConfigurationSettings(); composeConfigurationSettings();
} }
} }
RalewayBold { RalewayBold {
size: 12 size: 12
text: "Hips" text: "Hips"
@ -271,7 +271,7 @@ Rectangle {
anchors.left: openVrConfiguration.left anchors.left: openVrConfiguration.left
anchors.leftMargin: leftMargin + 20 anchors.leftMargin: leftMargin + 20
spacing: 10 spacing: 10
HifiControls.CheckBox { HifiControls.CheckBox {
id: chestBox id: chestBox
width: 15 width: 15
@ -286,7 +286,7 @@ Rectangle {
composeConfigurationSettings(); composeConfigurationSettings();
} }
} }
RalewayBold { RalewayBold {
size: 12 size: 12
text: "Chest" text: "Chest"
@ -308,7 +308,7 @@ Rectangle {
anchors.left: openVrConfiguration.left anchors.left: openVrConfiguration.left
anchors.leftMargin: leftMargin + 20 anchors.leftMargin: leftMargin + 20
spacing: 10 spacing: 10
HifiControls.CheckBox { HifiControls.CheckBox {
id: shoulderBox id: shoulderBox
width: 15 width: 15
@ -323,7 +323,7 @@ Rectangle {
composeConfigurationSettings(); composeConfigurationSettings();
} }
} }
RalewayBold { RalewayBold {
size: 12 size: 12
text: "Shoulders" text: "Shoulders"
@ -336,7 +336,7 @@ Rectangle {
color: hifi.colors.lightGray color: hifi.colors.lightGray
} }
} }
Separator { Separator {
id: bottomSeperator id: bottomSeperator
width: parent.width width: parent.width
@ -367,9 +367,9 @@ Rectangle {
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: 30 anchors.leftMargin: 30
} }
RalewayRegular { RalewayRegular {
id: calibrate id: calibrate
text: "CALIBRATE" text: "CALIBRATE"
@ -413,6 +413,7 @@ Rectangle {
info.showCountDown = false; info.showCountDown = false;
info.calibrationFailed = false info.calibrationFailed = false
info.calibrationSucceed = false; info.calibrationSucceed = false;
info.calibrationSucceed = false;
info.showCalibrationStatus = false; info.showCalibrationStatus = false;
info.visible = false; info.visible = false;
} }
@ -439,7 +440,7 @@ Rectangle {
numberAnimation.duration = calibrationTimer.interval; numberAnimation.duration = calibrationTimer.interval;
} }
} }
NumberAnimation { NumberAnimation {
id: numberAnimation id: numberAnimation
target: openVrConfiguration target: openVrConfiguration
@ -455,6 +456,9 @@ Rectangle {
} else if (!status["calibrated"]) { } else if (!status["calibrated"]) {
var uncalibrated = status["success"]; var uncalibrated = status["success"];
if (uncalibrated) { if (uncalibrated) {
info.visible = true;
info.showCalibrationStatus = true;
info.uncalibrationSucceed = true;
} else { } else {
info.visible = true; info.visible = true;
info.showCalibrationStatus = true; info.showCalibrationStatus = true;
@ -496,10 +500,10 @@ Rectangle {
var configurationType = settings["trackerConfiguration"]; var configurationType = settings["trackerConfiguration"];
displayTrackerConfiguration(configurationType); displayTrackerConfiguration(configurationType);
var HmdHead = settings["HMDHead"]; var HmdHead = settings["HMDHead"];
var viveController = settings["handController"]; var viveController = settings["handController"];
if (HmdHead) { if (HmdHead) {
headBox.checked = true; headBox.checked = true;
headPuckBox.checked = false; headPuckBox.checked = false;
@ -524,7 +528,8 @@ Rectangle {
property bool showCalibrationStatus: false property bool showCalibrationStatus: false
property bool calibrationFailed: false property bool calibrationFailed: false
property bool calibrationSucceed: false property bool calibrationSucceed: false
property bool uncalibrationSucceed: false
visible: false visible: false
color: hifi.colors.baseGray color: hifi.colors.baseGray
anchors.top: openVrConfiguration.top anchors.top: openVrConfiguration.top
@ -538,12 +543,12 @@ Rectangle {
anchors.centerIn: parent anchors.centerIn: parent
RalewayBold { RalewayBold {
id: countDownText id: countDownText
text: openVrConfiguration.countDown text: openVrConfiguration.countDown
size: 92 size: 92
color: hifi.colors.blueHighlight color: hifi.colors.blueHighlight
anchors.centerIn: parent anchors.centerIn: parent
} }
} }
@ -576,11 +581,24 @@ Rectangle {
color: hifi.colors.redAccent color: hifi.colors.redAccent
anchors.centerIn: parent anchors.centerIn: parent
} }
} }
Item {
id: uncalibrateInfo
visible: info.uncalibrationSucceed
anchors.centerIn: parent
RalewayBold {
id: uncalibrateText
text: "Uncalibration Successful"
size: 42
color: hifi.colors.greenHighlight
anchors.centerIn: parent
}
}
} }
} }
function displayTrackerConfiguration(type) { function displayTrackerConfiguration(type) {
if (type === "Feet") { if (type === "Feet") {
feetBox.checked = true; feetBox.checked = true;
@ -631,8 +649,8 @@ Rectangle {
} else if (handPuck) { } else if (handPuck) {
overrideHandController = true; overrideHandController = true;
} }
var settingsObject = { var settingsObject = {
"trackerConfiguration": trackerConfiguration, "trackerConfiguration": trackerConfiguration,
"overrideHead": overrideHead, "overrideHead": overrideHead,
@ -640,6 +658,6 @@ Rectangle {
} }
InputConfiguration.setConfigurationSettings(settingsObject, pluginName); InputConfiguration.setConfigurationSettings(settingsObject, pluginName);
} }
} }

View file

@ -8,6 +8,9 @@
#include "InputConfiguration.h" #include "InputConfiguration.h"
#include <QThread>
#include "DisplayPlugin.h" #include "DisplayPlugin.h"
#include "InputPlugin.h" #include "InputPlugin.h"
#include "PluginManager.h" #include "PluginManager.h"
@ -16,6 +19,13 @@ InputConfiguration::InputConfiguration() {
} }
QStringList InputConfiguration::inputPlugins() { QStringList InputConfiguration::inputPlugins() {
if (QThread::currentThread() != thread()) {
QStringList result;
QMetaObject::invokeMethod(this, "inputPlugins", Qt::BlockingQueuedConnection,
Q_RETURN_ARG(QStringList, result));
return result;
}
QStringList inputPlugins; QStringList inputPlugins;
for (auto plugin : PluginManager::getInstance()->getInputPlugins()) { for (auto plugin : PluginManager::getInstance()->getInputPlugins()) {
inputPlugins << QString(plugin->getName()); inputPlugins << QString(plugin->getName());
@ -25,6 +35,13 @@ QStringList InputConfiguration::inputPlugins() {
QStringList InputConfiguration::activeInputPlugins() { QStringList InputConfiguration::activeInputPlugins() {
if (QThread::currentThread() != thread()) {
QStringList result;
QMetaObject::invokeMethod(this, "activeInputPlugins", Qt::BlockingQueuedConnection,
Q_RETURN_ARG(QStringList, result));
return result;
}
QStringList activePlugins; QStringList activePlugins;
for (auto plugin : PluginManager::getInstance()->getInputPlugins()) { for (auto plugin : PluginManager::getInstance()->getInputPlugins()) {
if (plugin->configurable()) { if (plugin->configurable()) {
@ -35,8 +52,15 @@ QStringList InputConfiguration::activeInputPlugins() {
} }
QString InputConfiguration::configurationLayout(QString pluginName) { QString InputConfiguration::configurationLayout(QString pluginName) {
QString sourcePath; if (QThread::currentThread() != thread()) {
QString result;
QMetaObject::invokeMethod(this, "configurationLayout", Qt::BlockingQueuedConnection,
Q_RETURN_ARG(QString, result),
Q_ARG(QString, pluginName));
return result;
}
QString sourcePath;
for (auto plugin : PluginManager::getInstance()->getInputPlugins()) { for (auto plugin : PluginManager::getInstance()->getInputPlugins()) {
if (plugin->getName() == pluginName) { if (plugin->getName() == pluginName) {
return plugin->configurationLayout(); return plugin->configurationLayout();
@ -46,6 +70,13 @@ QString InputConfiguration::configurationLayout(QString pluginName) {
} }
void InputConfiguration::setConfigurationSettings(QJsonObject configurationSettings, QString pluginName) { void InputConfiguration::setConfigurationSettings(QJsonObject configurationSettings, QString pluginName) {
if (QThread::currentThread() != thread()) {
QMetaObject::invokeMethod(this, "setConfigurationSettings", Qt::BlockingQueuedConnection,
Q_ARG(QJsonObject, configurationSettings),
Q_ARG(QString, pluginName));
return;
}
for (auto plugin : PluginManager::getInstance()->getInputPlugins()) { for (auto plugin : PluginManager::getInstance()->getInputPlugins()) {
if (plugin->getName() == pluginName) { if (plugin->getName() == pluginName) {
plugin->setConfigurationSettings(configurationSettings); plugin->setConfigurationSettings(configurationSettings);
@ -54,6 +85,14 @@ void InputConfiguration::setConfigurationSettings(QJsonObject configurationSetti
} }
QJsonObject InputConfiguration::configurationSettings(QString pluginName) { QJsonObject InputConfiguration::configurationSettings(QString pluginName) {
if (QThread::currentThread() != thread()) {
QJsonObject result;
QMetaObject::invokeMethod(this, "configurationSettings", Qt::BlockingQueuedConnection,
Q_RETURN_ARG(QJsonObject, result),
Q_ARG(QString, pluginName));
return result;
}
for (auto plugin : PluginManager::getInstance()->getInputPlugins()) { for (auto plugin : PluginManager::getInstance()->getInputPlugins()) {
if (plugin->getName() == pluginName) { if (plugin->getName() == pluginName) {
return plugin->configurationSettings(); return plugin->configurationSettings();
@ -63,14 +102,14 @@ QJsonObject InputConfiguration::configurationSettings(QString pluginName) {
} }
void InputConfiguration::calibratePlugin(QString pluginName) { void InputConfiguration::calibratePlugin(QString pluginName) {
if (QThread::currentThread() != thread()) {
QMetaObject::invokeMethod(this, "calibratePlugin", Qt::BlockingQueuedConnection);
return;
}
for (auto plugin : PluginManager::getInstance()->getInputPlugins()) { for (auto plugin : PluginManager::getInstance()->getInputPlugins()) {
if (plugin->getName() == pluginName) { if (plugin->getName() == pluginName) {
qDebug() << "calibrating plauin " << pluginName;
plugin->calibrate(); plugin->calibrate();
} }
} }
} }
void InputConfiguration::calibrated(const QJsonObject& status) {
emit calibrationStatus(status);
}

View file

@ -28,7 +28,6 @@ public:
Q_INVOKABLE void setConfigurationSettings(QJsonObject configurationSettings, QString pluginName); Q_INVOKABLE void setConfigurationSettings(QJsonObject configurationSettings, QString pluginName);
Q_INVOKABLE void calibratePlugin(QString pluginName); Q_INVOKABLE void calibratePlugin(QString pluginName);
Q_INVOKABLE QJsonObject configurationSettings(QString pluginName); Q_INVOKABLE QJsonObject configurationSettings(QString pluginName);
void calibrated(const QJsonObject& status);
signals: signals:
void calibrationStatus(const QJsonObject& status); void calibrationStatus(const QJsonObject& status);

View file

@ -314,7 +314,6 @@ void ViveControllerManager::InputDevice::calibrateFromUI(const controller::Input
void ViveControllerManager::InputDevice::configureCalibrationSettings(const QJsonObject configurationSettings) { void ViveControllerManager::InputDevice::configureCalibrationSettings(const QJsonObject configurationSettings) {
Locker locker(_lock); Locker locker(_lock);
if (!configurationSettings.empty()) { if (!configurationSettings.empty()) {
auto iter = configurationSettings.begin(); auto iter = configurationSettings.begin();
auto end = configurationSettings.end(); auto end = configurationSettings.end();
@ -372,7 +371,7 @@ void ViveControllerManager::InputDevice::emitCalibrationStatus(const bool succes
status["puckCount"] = (int)_validTrackedObjects.size(); status["puckCount"] = (int)_validTrackedObjects.size();
} }
inputConfiguration->calibrated(status); emit inputConfiguration->calibrationStatus(status); //inputConfiguration->calibrated(status);
} }
void ViveControllerManager::InputDevice::handleTrackedObject(uint32_t deviceIndex, const controller::InputCalibrationData& inputCalibrationData) { void ViveControllerManager::InputDevice::handleTrackedObject(uint32_t deviceIndex, const controller::InputCalibrationData& inputCalibrationData) {