199 lines · 6.3 KB · Text
RawDownload
////  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.7import QtQuick.Controls 1.4import QtQuick.Layouts 1.3 import stylesUit 1.0import controlsUit 1.0 as HifiControlsimport  "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)            }        }    }}