Merge pull request #9920 from ctrlaltdavid/21226

Fix tablet asset browser's add-to-world dialog
This commit is contained in:
Seth Alves 2017-03-16 09:08:57 -08:00 committed by GitHub
commit c472016a8d
4 changed files with 138 additions and 121 deletions

View file

@ -177,7 +177,7 @@ ScrollingWindow {
SHAPE_TYPE_STATIC_MESH SHAPE_TYPE_STATIC_MESH
], ],
checkStateOnDisable: false, checkStateOnDisable: false,
warningOnDisable: "Models with automatic collisions set to 'Exact' cannot be dynamic" warningOnDisable: "Models with 'Exact' automatic collisions cannot be dynamic"
} }
}); });

View file

@ -107,10 +107,10 @@ ModalWindow {
QtObject { QtObject {
id: d; id: d;
readonly property int minWidth: 480; readonly property int minWidth: 480
readonly property int maxWdith: 1280; readonly property int maxWdith: 1280
readonly property int minHeight: 120; readonly property int minHeight: 120
readonly property int maxHeight: 720; readonly property int maxHeight: 720
function resize() { function resize() {
var targetWidth = Math.max(titleWidth, pane.width); var targetWidth = Math.max(titleWidth, pane.width);
@ -259,6 +259,7 @@ ModalWindow {
visible: Boolean(root.warning); visible: Boolean(root.warning);
text: hifi.glyphs.alert; text: hifi.glyphs.alert;
size: hifi.dimensions.controlLineHeight; size: hifi.dimensions.controlLineHeight;
width: 20 // Line up with checkbox.
} }
} }

View file

@ -12,7 +12,7 @@ import QtQuick 2.5
import QtQuick.Controls 1.4 import QtQuick.Controls 1.4
import QtQuick.Dialogs 1.2 as OriginalDialogs import QtQuick.Dialogs 1.2 as OriginalDialogs
import "../controls-uit" as ControlsUIT import "../controls-uit"
import "../styles-uit" import "../styles-uit"
import "../windows" import "../windows"
@ -20,7 +20,9 @@ TabletModalWindow {
id: root; id: root;
HifiConstants { id: hifi; } HifiConstants { id: hifi; }
y: hifi.dimensions.tabletMenuHeader anchors.fill: parent
width: parent.width
height: parent.height
title: "" title: ""
visible: true; visible: true;
@ -108,18 +110,24 @@ TabletModalWindow {
TabletModalFrame { TabletModalFrame {
id: modalWindowItem id: modalWindowItem
width: parent.width - 12 width: parent.width - 6
height: 240 height: 240
anchors { anchors {
verticalCenter: parent.verticalCenter verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter horizontalCenter: parent.horizontalCenter
} }
MouseArea {
// Clicking dialog background defocuses active control.
anchors.fill: parent
onClicked: parent.forceActiveFocus();
}
QtObject { QtObject {
id: d; id: d;
readonly property int minWidth: 470 readonly property int minWidth: 470
readonly property int maxWidth: 470 readonly property int maxWidth: 470
readonly property int minHeight: 240 readonly property int minHeight: 120
readonly property int maxHeight: 720 readonly property int maxHeight: 720
function resize() { function resize() {
@ -130,8 +138,8 @@ TabletModalWindow {
((keyboardEnabled && keyboardRaised) ? (keyboard.raisedHeight + hifi.dimensions.contentSpacing.y) : 0); ((keyboardEnabled && keyboardRaised) ? (keyboard.raisedHeight + hifi.dimensions.contentSpacing.y) : 0);
root.width = (targetWidth < d.minWidth) ? d.minWidth : ((targetWidth > d.maxWdith) ? d.maxWidth : targetWidth); root.width = (targetWidth < d.minWidth) ? d.minWidth : ((targetWidth > d.maxWdith) ? d.maxWidth : targetWidth);
root.height = (targetHeight < d.minHeight) ? d.minHeight : ((targetHeight > d.maxHeight) ? modalWindowItem.height = (targetHeight < d.minHeight) ? d.minHeight : ((targetHeight > d.maxHeight) ?
d.maxHeight : targetHeight); d.maxHeight : targetHeight);
if (checkBoxField.visible && comboBoxField.visible) { if (checkBoxField.visible && comboBoxField.visible) {
checkBoxField.width = extraInputs.width / 2; checkBoxField.width = extraInputs.width / 2;
comboBoxField.width = extraInputs.width / 2; comboBoxField.width = extraInputs.width / 2;
@ -140,141 +148,149 @@ TabletModalWindow {
} }
} }
} }
// Item {
// anchors { Item {
// // top: parent.top; anchors {
// // bottom: extraInputs.visible ? extraInputs.top : buttons.top; top: parent.top;
// left: parent.left; bottom: extraInputs.visible ? extraInputs.top : buttons.top;
// right: parent.right; left: parent.left;
// topMargin: 20 right: parent.right;
// } leftMargin: 12
rightMargin: 12
}
// FIXME make a text field type that can be bound to a history for autocompletion // FIXME make a text field type that can be bound to a history for autocompletion
ControlsUIT.TextField { TextField {
id: textField; id: textField;
label: root.textInput.label; label: root.textInput.label;
focus: root.textInput ? true : false; focus: root.textInput ? true : false;
visible: root.textInput ? true : false; visible: root.textInput ? true : false;
anchors { anchors {
top: parent.top
left: parent.left; left: parent.left;
right: parent.right; right: parent.right;
leftMargin: 5; rightMargin: 5; bottom: keyboard.top;
topMargin: textField.controlHeight - textField.height + 5 bottomMargin: hifi.dimensions.contentSpacing.y;
} }
} }
ControlsUIT.Keyboard { property alias keyboardOverride: root.keyboardOverride
property alias keyboardRaised: root.keyboardRaised
property alias punctuationMode: root.punctuationMode
Keyboard {
id: keyboard id: keyboard
raised: keyboardEnabled && keyboardRaised raised: keyboardEnabled && keyboardRaised
numeric: punctuationMode numeric: punctuationMode
anchors { anchors {
left: parent.left left: parent.left
right: parent.right right: parent.right
leftMargin: 5; rightMargin: 5; bottom: parent.bottom
top: textField.bottom bottomMargin: raised ? hifi.dimensions.contentSpacing.y : 0
topMargin: raised ? hifi.dimensions.contentSpacing.y : 0
} }
} }
// } }
Row { Item {
id: extraInputs; id: extraInputs;
visible: Boolean(root.checkBox || root.comboBox); visible: Boolean(root.checkBox || root.comboBox);
anchors {
left: parent.left;
right: parent.right;
bottom: buttons.top;
bottomMargin: hifi.dimensions.contentSpacing.y;
leftMargin: 12
rightMargin: 12
}
height: comboBoxField.controlHeight;
onHeightChanged: d.resize();
onWidthChanged: d.resize();
z: 20
CheckBox {
id: checkBoxField;
text: root.checkBox.label;
focus: Boolean(root.checkBox);
visible: Boolean(root.checkBox);
anchors { anchors {
left: parent.left; left: parent.left;
right: parent.right;
leftMargin: 5; rightMargin: 5;
top: keyboard.bottom;
topMargin: hifi.dimensions.contentSpacing.y + 20;
}
height: comboBoxField.controlHeight;
onHeightChanged: d.resize();
onWidthChanged: d.resize();
ControlsUIT.CheckBox {
id: checkBoxField;
text: root.checkBox.label;
focus: Boolean(root.checkBox);
visible: Boolean(root.checkBox);
// anchors {
// left: parent.left;
// bottom: parent.bottom;
// leftMargin: 6; // Magic number to align with warning icon
// bottomMargin: 6;
// }
}
ControlsUIT.ComboBox {
id: comboBoxField;
label: root.comboBox.label;
focus: Boolean(root.comboBox);
visible: Boolean(root.comboBox);
// anchors {
// right: parent.right;
// bottom: parent.bottom;
// }
model: root.comboBox ? root.comboBox.items : [];
onAccepted: {
updateCheckbox();
focus = true;
}
}
}
Row {
id: buttons;
focus: true;
spacing: hifi.dimensions.contentSpacing.x;
layoutDirection: Qt.RightToLeft;
onHeightChanged: d.resize();
onWidthChanged: {
d.resize();
resizeWarningText();
}
anchors {
bottom: parent.bottom; bottom: parent.bottom;
left: parent.left; leftMargin: 6; // Magic number to align with warning icon
right: parent.right; bottomMargin: 6;
bottomMargin: hifi.dimensions.contentSpacing.y;
leftMargin: 5; rightMargin: 5;
}
function resizeWarningText() {
var rowWidth = buttons.width;
var buttonsWidth = acceptButton.width + cancelButton.width + hifi.dimensions.contentSpacing.x * 2;
var warningIconWidth = warningIcon.width + hifi.dimensions.contentSpacing.x;
warningText.width = rowWidth - buttonsWidth - warningIconWidth;
}
ControlsUIT.Button {
id: cancelButton;
action: cancelAction;
}
ControlsUIT.Button {
id: acceptButton;
action: acceptAction;
}
Text {
id: warningText;
visible: Boolean(root.warning);
text: root.warning;
wrapMode: Text.WordWrap;
font.italic: true;
maximumLineCount: 2;
}
HiFiGlyphs {
id: warningIcon;
visible: Boolean(root.warning);
text: hifi.glyphs.alert;
size: hifi.dimensions.controlLineHeight;
} }
} }
// }//column
ComboBox {
id: comboBoxField;
label: root.comboBox.label;
focus: Boolean(root.comboBox);
visible: Boolean(root.comboBox);
anchors {
right: parent.right;
bottom: parent.bottom;
}
model: root.comboBox ? root.comboBox.items : [];
onAccepted: {
updateCheckbox();
focus = true;
}
}
}
Row {
id: buttons;
focus: true;
spacing: hifi.dimensions.contentSpacing.x;
layoutDirection: Qt.RightToLeft;
onHeightChanged: d.resize();
onWidthChanged: {
d.resize();
resizeWarningText();
}
z: 10
anchors {
bottom: parent.bottom;
left: parent.left;
right: parent.right;
bottomMargin: hifi.dimensions.contentSpacing.y;
leftMargin: 12
rightMargin: 12
}
function resizeWarningText() {
var rowWidth = buttons.width;
var buttonsWidth = acceptButton.width + cancelButton.width + hifi.dimensions.contentSpacing.x * 2;
var warningIconWidth = warningIcon.width + hifi.dimensions.contentSpacing.x;
warningText.width = rowWidth - buttonsWidth - warningIconWidth;
}
Button {
id: cancelButton;
action: cancelAction;
}
Button {
id: acceptButton;
action: acceptAction;
}
Text {
id: warningText;
visible: Boolean(root.warning);
text: root.warning;
wrapMode: Text.WordWrap;
font.italic: true;
maximumLineCount: 2;
}
HiFiGlyphs {
id: warningIcon;
visible: Boolean(root.warning);
text: hifi.glyphs.alert;
size: hifi.dimensions.controlLineHeight;
width: 20 // Line up with checkbox.
}
}
Action { Action {
id: cancelAction; id: cancelAction;
text: qsTr("Cancel"); text: qsTr("Cancel");

View file

@ -176,7 +176,7 @@ Rectangle {
SHAPE_TYPE_STATIC_MESH SHAPE_TYPE_STATIC_MESH
], ],
checkStateOnDisable: false, checkStateOnDisable: false,
warningOnDisable: "Models with automatic collisions set to 'Exact' cannot be dynamic" warningOnDisable: "Models with 'Exact' automatic collisions cannot be dynamic"
} }
}); });