mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-25 21:15:07 +02:00
199 lines
6.3 KiB
QML
199 lines
6.3 KiB
QML
//
|
|
// highlight.qml
|
|
// developer/utilities/render
|
|
//
|
|
// Olivier Prat, created on 08/08/2017.
|
|
// Copyright 2017 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
import QtQuick 2.7
|
|
import QtQuick.Controls 1.4
|
|
import QtQuick.Layouts 1.3
|
|
|
|
import stylesUit 1.0
|
|
import controlsUit 1.0 as HifiControls
|
|
import "configSlider"
|
|
import "../lib/plotperf"
|
|
import "highlight"
|
|
|
|
Item {
|
|
id: root
|
|
HifiConstants { id: hifi;}
|
|
anchors.margins: 0
|
|
property var listName: "contextOverlayHighlightList"
|
|
|
|
property var styleList: Selection.getHighlightedListNames()
|
|
|
|
signal sendToScript(var message);
|
|
|
|
Component.onCompleted: {
|
|
// Connect the signal from Selection when any selection content change and use it to refresh the current selection view
|
|
Selection.selectedItemsListChanged.connect(resetSelectionView)
|
|
}
|
|
|
|
function resetSelectionView() {
|
|
if (selectionView !== undefined) {
|
|
selectionView.resetSelectionView();
|
|
}
|
|
}
|
|
|
|
Column {
|
|
id: col
|
|
spacing: 5
|
|
anchors.fill: root
|
|
anchors.margins: hifi.dimensions.contentMargin.x
|
|
|
|
Row {
|
|
id: controlbar
|
|
spacing: 10
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
height: 24
|
|
|
|
HifiControls.Button {
|
|
id: debug
|
|
text: "Refresh"
|
|
height: 24
|
|
width: 82
|
|
onClicked: {
|
|
print("list of highlight styles")
|
|
root.styleList = Selection.getHighlightedListNames()
|
|
|
|
print(root.styleList)
|
|
styleSelectorLoader.sourceComponent = undefined;
|
|
styleSelectorLoader.sourceComponent = selectorWidget;
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
id: styleSelectorLoader
|
|
sourceComponent: selectorWidget
|
|
width: 300
|
|
//anchors.right: parent.right
|
|
}
|
|
Component {
|
|
id: selectorWidget
|
|
HifiControls.ComboBox {
|
|
id: box
|
|
z: 999
|
|
editable: true
|
|
colorScheme: hifi.colorSchemes.dark
|
|
model: root.styleList
|
|
label: ""
|
|
|
|
Timer {
|
|
id: postpone
|
|
interval: 100; running: false; repeat: false
|
|
onTriggered: {
|
|
styleWidgetLoader.sourceComponent = styleWidget
|
|
resetSelectionView();
|
|
}
|
|
}
|
|
onCurrentIndexChanged: {
|
|
root.listName = model[currentIndex];
|
|
// This is a hack to be sure the widgets below properly reflect the change of category: delete the Component
|
|
// by setting the loader source to Null and then recreate it 100ms later
|
|
styleWidgetLoader.sourceComponent = undefined;
|
|
postpone.interval = 100
|
|
postpone.start()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Separator {}
|
|
Loader {
|
|
id: styleWidgetLoader
|
|
sourceComponent: styleWidget
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
height: 240
|
|
}
|
|
|
|
Separator {}
|
|
|
|
HifiControls.CheckBox {
|
|
text: "Highlight Hovered"
|
|
checked: false
|
|
onCheckedChanged: {
|
|
if (checked) {
|
|
root.sendToScript("pick true")
|
|
} else {
|
|
root.sendToScript("pick false")
|
|
}
|
|
}
|
|
}
|
|
Separator {}
|
|
Rectangle {
|
|
id: selectionView
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
height: 250
|
|
color: hifi.colors.lightGray
|
|
|
|
function resetSelectionView() {
|
|
myModel.clear()
|
|
var entities = Selection.getSelectedItemsList(root.listName)["entities"]
|
|
if (entities !== undefined) {
|
|
myModel.append({ "objectID": "Entities" })
|
|
for (var i = 0; i < entities.length; i++) {
|
|
myModel.append({ "objectID": JSON.stringify(entities[i]) })
|
|
}
|
|
}
|
|
var overlays = Selection.getSelectedItemsList(root.listName)["overlays"]
|
|
if (overlays !== undefined) {
|
|
myModel.append({ "objectID": "Overlays" })
|
|
for (var i = 0; i < overlays.length; i++) {
|
|
myModel.append({ "objectID": JSON.stringify(overlays[i]) })
|
|
}
|
|
}
|
|
var avatars = Selection.getSelectedItemsList(root.listName)["avatars"]
|
|
if (avatars !== undefined) {
|
|
myModel.append({ "objectID": "Avatars" })
|
|
for (var i = 0; i < avatars.length; i++) {
|
|
myModel.append({ "objectID": JSON.stringify(avatars[i]) })
|
|
}
|
|
}
|
|
}
|
|
|
|
ListModel {
|
|
id: myModel
|
|
}
|
|
|
|
Component {
|
|
id: myDelegate
|
|
Row {
|
|
id: fruit
|
|
Text { text: objectID }
|
|
}
|
|
}
|
|
|
|
ListView {
|
|
id: selectionListView
|
|
anchors.fill: parent
|
|
anchors.topMargin: 30
|
|
model: myModel
|
|
delegate: myDelegate
|
|
}
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: styleWidget
|
|
|
|
HighlightStyle {
|
|
id: highlightStyle
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
highlightStyle: Selection.getListHighlightStyle(root.listName)
|
|
|
|
onNewStyle: {
|
|
var style = getStyle()
|
|
// print("new style " + JSON.stringify(style) )
|
|
Selection.enableListHighlight(root.listName, style)
|
|
}
|
|
}
|
|
}
|
|
}
|