diff options
Diffstat (limited to 'src/Authoring/Qt3DStudio/Palettes/Inspector/DataInputChooser.qml')
-rw-r--r-- | src/Authoring/Qt3DStudio/Palettes/Inspector/DataInputChooser.qml | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/src/Authoring/Qt3DStudio/Palettes/Inspector/DataInputChooser.qml b/src/Authoring/Qt3DStudio/Palettes/Inspector/DataInputChooser.qml new file mode 100644 index 00000000..8b522e91 --- /dev/null +++ b/src/Authoring/Qt3DStudio/Palettes/Inspector/DataInputChooser.qml @@ -0,0 +1,212 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt 3D Studio. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.8 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.3 +import "../controls" + +Rectangle { + id: root + + color: _backgroundColor + + border.color: _studioColor3 + + StyledLabel { + id: title + color: _dataInputColor + text: qsTr("Select Controlling Data Input") + leftPadding: 8 + height: 20 + } + + StyledMenuSeparator { + id: separator + anchors.top: title.bottom + leftPadding: 8 + rightPadding: 8 + } + + ColumnLayout { + anchors.fill: parent + anchors.topMargin: 30 + spacing: 10 + RowLayout { + Layout.fillHeight: true + Layout.fillWidth: true + StyledComboBox { + id: filterCombo + readonly property int numOfFixedChoices: 2 + Layout.leftMargin: 8 + Layout.preferredWidth: 150 + + // Data type list must match with EDataType enum so we can use enum + // index directly without going through string -> int table lookup + model: [qsTr("[Compatible types]"), qsTr("[All types]"), qsTr("Boolean"), + qsTr("Float"), qsTr("Ranged Number"), qsTr("String"), qsTr("Variant"), + qsTr("Vector2"), qsTr("Vector3"), qsTr("Vector4")] + + onCurrentIndexChanged: _parentView.setTypeFilter(currentIndex - numOfFixedChoices); + + MouseArea { + id: filterBoxMouseArea + anchors.fill: parent + hoverEnabled: true + // pass through mouse click to Combobox + onPressed: { + mouse.accepted = false; + } + } + + StyledTooltip { + text: qsTr("Filter the list by Data Input type or\n" + + "by compatibility with current property") + enabled: filterBoxMouseArea.containsMouse && !filterCombo.popup.activeFocus + } + Connections { + target: _parentView + // Filter type can be changed also from cpp side + onFilterChanged: { + filterCombo.currentIndex = _parentView.typeFilter + + filterCombo.numOfFixedChoices; + } + } + } + + StyledTextField { + Layout.leftMargin: 8 + Layout.rightMargin: 8 + Layout.preferredWidth: 200 + Layout.fillWidth: true + id: searchField + placeholderText: qsTr("[search]") + horizontalAlignment: TextInput.AlignLeft + + property string value + + rightPadding: clearText.width + 2 + + onTextChanged: _parentView.setSearchString(text); + + MouseArea { + id: searchMouseArea + anchors.fill: parent + propagateComposedEvents: true + hoverEnabled: true + onClicked: { + searchField.forceActiveFocus(); + } + } + + StyledTooltip { + id: searchTt + text: qsTr("Search for Data Input") + enabled: searchMouseArea.containsMouse && !searchField.focus + } + + Image { + anchors { verticalCenter: parent.verticalCenter; right: parent.right; } + id: clearText + fillMode: Image.PreserveAspectFit + smooth: true; + source: _resDir + "add.png" + rotation: 45 + + MouseArea { + id: clear + anchors { + horizontalCenter: parent.horizontalCenter; + verticalCenter: parent.verticalCenter + } + height: clearText.height; width: clearText.height + onClicked: { + searchField.text = "" + searchField.forceActiveFocus() + } + } + } + } + } + + ListView { + id: listView + Layout.leftMargin: 8 + Layout.fillHeight: true + Layout.fillWidth: true + + boundsBehavior: Flickable.StopAtBounds + spacing: 4 + clip: true + + ScrollBar.vertical: ScrollBar {} + + model: _dataInputSelectModel + + delegate: Row { + height: 20 + Image { + // do not show item icon for fixed items + visible: index >= _dataInputSelectModel.fixedItemCount + source: index === _parentView.selected + ? _dataInputSelectModel.getActiveIconPath() + : _dataInputSelectModel.getInactiveIconPath(); + } + StyledLabel { + leftPadding: 5 + text: model.display + width: listView.width / 2; + color: (index >= _dataInputSelectModel.fixedItemCount) + && (index === _parentView.selected) + ? _dataInputColor : _textColor; + + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.LeftButton + onClicked: _parentView.setSelection(index) + } + } + StyledLabel { + leftPadding: 5 + visible: index >= _dataInputSelectModel.fixedItemCount + text: "(" + model.datatype + ")" + color: (index >= _dataInputSelectModel.fixedItemCount) + && (index === _parentView.selected) + ? _dataInputColor : _textColor; + + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.LeftButton + onClicked: _parentView.setSelection(index) + } + } + } + } + } +} + |