Merge pull request #10899 from druiz17/calibration-update-2.0

Updates to the Calibration UI
This commit is contained in:
druiz17 2017-07-06 14:24:45 -07:00 committed by GitHub
commit b4182fe7ac
8 changed files with 166 additions and 37 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View file

@ -0,0 +1,64 @@
//
// ImageMessageBox.qml
//
// Created by Dante Ruiz on 7/5/2017
// Copyright 2017 High Fidelity, Inc.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
import QtQuick 2.5
import QtQuick.Controls 1.4
import "../styles-uit"
Item {
id: imageBox
visible: false
anchors.fill: parent
property alias source: image.source
property alias imageWidth: image.width
property alias imageHeight: image.height
Rectangle {
anchors.fill: parent
color: "black"
opacity: 0.3
}
Image {
id: image
anchors.centerIn: parent
HiFiGlyphs {
id: closeGlyphButton
text: hifi.glyphs.close
size: 25
anchors {
top: parent.top
topMargin: 15
right: parent.right
rightMargin: 15
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onEntered: {
parent.text = hifi.glyphs.closeInverted;
}
onExited: {
parent.text = hifi.glyphs.close;
}
onClicked: {
imageBox.visible = false;
}
}
}
}
}

View file

@ -65,7 +65,7 @@ Rectangle {
HiFiGlyphs { HiFiGlyphs {
id: image id: image
text: hifi.glyphs.avatar1 text: hifi.glyphs.avatarTPose
size: 190 size: 190
color: hifi.colors.white color: hifi.colors.white

View file

@ -16,6 +16,7 @@ import "../../controls-uit" as HifiControls
StackView { StackView {
id: stack id: stack
initialItem: inputConfiguration initialItem: inputConfiguration
property alias messageVisible: imageMessageBox.visible
Rectangle { Rectangle {
id: inputConfiguration id: inputConfiguration
anchors.fill: parent anchors.fill: parent
@ -26,6 +27,15 @@ StackView {
property var pluginSettings: null property var pluginSettings: null
HifiControls.ImageMessageBox {
id: imageMessageBox
anchors.fill: parent
z: 2000
imageWidth: 442
imageHeight: 670
source: "../../../images/calibration-help.png"
}
Rectangle { Rectangle {
width: inputConfiguration.width width: inputConfiguration.width
height: 1 height: 1
@ -167,7 +177,7 @@ StackView {
loader.item.pluginName = box.currentText; loader.item.pluginName = box.currentText;
} }
} }
if (loader.item.hasOwnProperty("displayInformation")) { if (loader.item.hasOwnProperty("displayInformation")) {
loader.item.displayConfiguration(); loader.item.displayConfiguration();
} }
@ -183,20 +193,20 @@ StackView {
return InputConfiguration.activeInputPlugins(); return InputConfiguration.activeInputPlugins();
} }
} }
function initialize() { function initialize() {
changeSource(); changeSource();
} }
function changeSource() { function changeSource() {
loader.source = ""; loader.source = "";
var source = ""; var source = "";
if (box.currentText == "Vive") { if (box.currentText == "Vive") {
source = InputConfiguration.configurationLayout("OpenVR"); source = InputConfiguration.configurationLayout("OpenVR");
} else { } else {
source = InputConfiguration.configurationLayout(box.currentText); source = InputConfiguration.configurationLayout(box.currentText);
} }
loader.source = source; loader.source = source;
if (source === "") { if (source === "") {
box.label = "(not configurable)"; box.label = "(not configurable)";
@ -204,14 +214,14 @@ StackView {
box.label = ""; box.label = "";
} }
} }
Timer { Timer {
id: timer id: timer
repeat: false repeat: false
interval: 300 interval: 300
onTriggered: initialize() onTriggered: initialize()
} }
Component.onCompleted: { Component.onCompleted: {
timer.start(); timer.start();
} }

View file

@ -50,9 +50,12 @@ Rectangle {
readonly property int apply: 1 readonly property int apply: 1
readonly property int applyAndCalibrate: 2 readonly property int applyAndCalibrate: 2
readonly property int calibrate: 3 readonly property int calibrate: 3
} }
MouseArea { MouseArea {
id: mouseArea id: mouseArea
@ -64,6 +67,7 @@ Rectangle {
mouse.accepted = false; mouse.accepted = false;
} }
} }
color: hifi.colors.baseGray color: hifi.colors.baseGray
RalewayBold { RalewayBold {
@ -146,6 +150,7 @@ Rectangle {
label: "Y: offset" label: "Y: offset"
minimumValue: -10 minimumValue: -10
stepSize: 0.0254 stepSize: 0.0254
value: -0.05
colorScheme: hifi.colorSchemes.dark colorScheme: hifi.colorSchemes.dark
onEditingFinished: { onEditingFinished: {
@ -161,15 +166,16 @@ Rectangle {
minimumValue: -10 minimumValue: -10
stepSize: 0.0254 stepSize: 0.0254
decimals: 4 decimals: 4
value: -0.05
colorScheme: hifi.colorSchemes.dark colorScheme: hifi.colorSchemes.dark
onEditingFinished: { onEditingFinished: {
sendConfigurationSettings(); sendConfigurationSettings();
} }
} }
} }
RalewayBold { RalewayBold {
id: hands id: hands
@ -245,7 +251,7 @@ Rectangle {
anchors.left: openVrConfiguration.left anchors.left: openVrConfiguration.left
anchors.leftMargin: leftMargin + 10 anchors.leftMargin: leftMargin + 10
spacing: 10 spacing: 10
HifiControls.SpinBox { HifiControls.SpinBox {
id: handYOffset id: handYOffset
decimals: 4 decimals: 4
@ -269,7 +275,7 @@ Rectangle {
stepSize: 0.0254 stepSize: 0.0254
decimals: 4 decimals: 4
colorScheme: hifi.colorSchemes.dark colorScheme: hifi.colorSchemes.dark
onEditingFinished: { onEditingFinished: {
sendConfigurationSettings(); sendConfigurationSettings();
} }
@ -290,6 +296,52 @@ Rectangle {
anchors.leftMargin: leftMargin anchors.leftMargin: leftMargin
} }
RalewayRegular {
id: info
text: "See Recommended Tracker Placement"
color: hifi.colors.blueHighlight
size: 10
anchors {
left: additional.right
leftMargin: 10
verticalCenter: additional.verticalCenter
}
Rectangle {
id: selected
color: hifi.colors.blueHighlight
width: info.width
height: 1
anchors {
top: info.bottom
topMargin: 1
left: info.left
right: info.right
}
visible: false
}
MouseArea {
anchors.fill: parent;
hoverEnabled: true
onEntered: {
selected.visible = true;
}
onExited: {
selected.visible = false;
}
onClicked: {
stack.messageVisible = true;
}
}
}
Row { Row {
id: feetConfig id: feetConfig
anchors.top: additional.bottom anchors.top: additional.bottom
@ -379,6 +431,7 @@ Rectangle {
if (checked) { if (checked) {
hipBox.checked = true; hipBox.checked = true;
feetBox.checked = true; feetBox.checked = true;
shoulderBox.checked = false;
} }
sendConfigurationSettings(); sendConfigurationSettings();
} }
@ -416,6 +469,7 @@ Rectangle {
if (checked) { if (checked) {
hipBox.checked = true; hipBox.checked = true;
feetBox.checked = true; feetBox.checked = true;
chestBox.checked = false;
} }
sendConfigurationSettings(); sendConfigurationSettings();
} }
@ -463,7 +517,7 @@ Rectangle {
anchors.leftMargin: leftMargin anchors.leftMargin: leftMargin
radius: hifi.buttons.radius radius: hifi.buttons.radius
gradient: Gradient { gradient: Gradient {
GradientStop { GradientStop {
position: 0.2 position: 0.2
@ -479,7 +533,7 @@ Rectangle {
} }
} }
} }
GradientStop { GradientStop {
position: 1.0 position: 1.0
color: { color: {
@ -495,10 +549,10 @@ Rectangle {
} }
} }
} }
HiFiGlyphs { HiFiGlyphs {
id: glyphButton id: glyphButton
color: enabled ? hifi.buttons.textColor[calibrationButton.color] color: enabled ? hifi.buttons.textColor[calibrationButton.color]
@ -512,7 +566,7 @@ Rectangle {
bottomMargin: 1 bottomMargin: 1
} }
} }
RalewayBold { RalewayBold {
id: calibrationText id: calibrationText
font.capitalization: Font.AllUppercase font.capitalization: Font.AllUppercase
@ -527,7 +581,7 @@ Rectangle {
topMargin: 7 topMargin: 7
} }
} }
MouseArea { MouseArea {
anchors.fill: parent anchors.fill: parent
@ -549,19 +603,19 @@ Rectangle {
} }
} }
} }
onPressed: { onPressed: {
calibrationButton.pressed = true; calibrationButton.pressed = true;
} }
onReleased: { onReleased: {
calibrationButton.pressed = false; calibrationButton.pressed = false;
} }
onEntered: { onEntered: {
calibrationButton.hovered = true; calibrationButton.hovered = true;
} }
onExited: { onExited: {
calibrationButton.hovered = false; calibrationButton.hovered = false;
} }
@ -652,7 +706,7 @@ Rectangle {
RalewayBold { RalewayBold {
id: advanceSettings id: advanceSettings
text: "Advance Settings" text: "Advanced Settings"
size: 12 size: 12
color: hifi.colors.white color: hifi.colors.white
@ -683,7 +737,7 @@ Rectangle {
RalewayBold { RalewayBold {
id: viveDesktopText id: viveDesktopText
size: 10 size: 10
text: "Use vive devices in desktop mode" text: "Use Vive devices in desktop mode"
color: hifi.colors.white color: hifi.colors.white
anchors { anchors {
@ -718,14 +772,14 @@ Rectangle {
calibratingScreen = screen.createObject(); calibratingScreen = screen.createObject();
stack.push(calibratingScreen); stack.push(calibratingScreen);
} }
if (status["calibrated"]) { if (status["calibrated"]) {
calibrationScreen.success(); calibrationScreen.success();
if (status["UI"]) { if (status["UI"]) {
logAction("mocap_ui_success", status); logAction("mocap_ui_success", status);
} }
} else if (!status["calibrated"]) { } else if (!status["calibrated"]) {
calibrationScreen.failure(); calibrationScreen.failure();
@ -840,11 +894,11 @@ Rectangle {
var handOverride = handSetting["override"]; var handOverride = handSetting["override"];
var settingsChanged = false; var settingsChanged = false;
if (lastConfiguration["bodyConfiguration"] !== bodySetting) { if (lastConfiguration["bodyConfiguration"] !== bodySetting) {
settingsChanged = true; settingsChanged = true;
} }
var lastHead = lastConfiguration["headConfiguration"]; var lastHead = lastConfiguration["headConfiguration"];
if (lastHead["override"] !== headOverride) { if (lastHead["override"] !== headOverride) {
settingsChanged = true; settingsChanged = true;
@ -854,13 +908,13 @@ Rectangle {
if (lastHand["override"] !== handOverride) { if (lastHand["override"] !== handOverride) {
settingsChanged = true; settingsChanged = true;
} }
if (settingsChanged) { if (settingsChanged) {
if ((!handOverride) && (!headOverride) && (bodySetting === "None")) { if ((!handOverride) && (!headOverride) && (bodySetting === "None")) {
state = buttonState.apply; state = buttonState.apply;
} else { } else {
state = buttonState.applyAndCalibrate; state = buttonState.applyAndCalibrate;
} }
} else { } else {
if (state == buttonState.apply) { if (state == buttonState.apply) {
state = buttonState.disabled; state = buttonState.disabled;
@ -868,7 +922,7 @@ Rectangle {
state = buttonState.calibrate; state = buttonState.calibrate;
} }
} }
lastConfiguration = settings; lastConfiguration = settings;
} }
@ -885,7 +939,7 @@ Rectangle {
state = buttonState.disabled; state = buttonState.disabled;
} else { } else {
state = buttonState.calibrate; state = buttonState.calibrate;
} }
} }
function updateCalibrationButton() { function updateCalibrationButton() {
@ -951,7 +1005,7 @@ Rectangle {
"Y": handYOffset.value, "Y": handYOffset.value,
"Z": handZOffset.value "Z": handZOffset.value
} }
var settingsObject = { var settingsObject = {
"bodyConfiguration": trackerConfiguration, "bodyConfiguration": trackerConfiguration,
"headConfiguration": headObject, "headConfiguration": headObject,

View file

@ -336,5 +336,6 @@ Item {
readonly property string source: "\ue01c" readonly property string source: "\ue01c"
readonly property string playback_play: "\ue01d" readonly property string playback_play: "\ue01d"
readonly property string stop_square: "\ue01e" readonly property string stop_square: "\ue01e"
readonly property string avatarTPose: "\ue01f"
} }
} }

View file

@ -319,7 +319,7 @@ Menu::Menu() {
QString("../../hifi/tablet/TabletLodPreferences.qml"), "LodPreferencesDialog"); QString("../../hifi/tablet/TabletLodPreferences.qml"), "LodPreferencesDialog");
}); });
action = addActionToQMenuAndActionHash(settingsMenu, "Controller Settings"); action = addActionToQMenuAndActionHash(settingsMenu, "Controller Settings...");
connect(action, &QAction::triggered, [] { connect(action, &QAction::triggered, [] {
auto tablet = DependencyManager::get<TabletScriptingInterface>()->getTablet("com.highfidelity.interface.tablet.system"); auto tablet = DependencyManager::get<TabletScriptingInterface>()->getTablet("com.highfidelity.interface.tablet.system");
auto hmd = DependencyManager::get<HMDScriptingInterface>(); auto hmd = DependencyManager::get<HMDScriptingInterface>();