forked from qt-creator/qt-creator
Task-number: QDS-12368 Change-Id: Ia65ca2cb5c89507b5290a32f1829551cec236192 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
152 lines
4.1 KiB
QML
152 lines
4.1 KiB
QML
// Copyright (C) 2022 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
|
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtCore
|
|
import HelperWidgets
|
|
import StudioControls 1.0 as StudioControls
|
|
|
|
Item {
|
|
id: root
|
|
|
|
property string __previewEnv
|
|
property string __previewModel
|
|
|
|
width: 420
|
|
height: 420
|
|
|
|
signal toolBarAction(int action)
|
|
signal previewEnvChanged(string env)
|
|
signal previewModelChanged(string model)
|
|
|
|
// invoked from C++ to refresh material preview image
|
|
signal refreshPreview()
|
|
|
|
// Called from C++ to close context menu on focus out
|
|
function closeContextMenu()
|
|
{
|
|
Controller.closeContextMenu()
|
|
}
|
|
|
|
// Called from C++ to initialize preview menu checkmarks
|
|
function initPreviewData(env, model) {
|
|
root.__previewEnv = env
|
|
root.__previewModel = model
|
|
}
|
|
|
|
MaterialEditorToolBar {
|
|
id: toolbar
|
|
|
|
width: parent.width
|
|
|
|
onToolBarAction: (action) => root.toolBarAction(action)
|
|
}
|
|
|
|
Settings {
|
|
id: settings
|
|
|
|
property var topSection
|
|
property bool dockMode
|
|
}
|
|
|
|
StudioControls.SplitView {
|
|
id: splitView
|
|
|
|
readonly property bool isHorizontal: splitView.orientation == Qt.Horizontal
|
|
|
|
anchors.top: toolbar.bottom
|
|
anchors.bottom: parent.bottom
|
|
width: parent.width
|
|
orientation: splitView.width > 1000 ? Qt.Horizontal : Qt.Vertical
|
|
clip: true
|
|
|
|
Loader {
|
|
id: leftSideView
|
|
|
|
SplitView.fillWidth: leftSideView.visible
|
|
SplitView.fillHeight: leftSideView.visible
|
|
SplitView.minimumWidth: leftSideView.visible ? 300 : 0
|
|
SplitView.minimumHeight: leftSideView.visible ? 300 : 0
|
|
|
|
active: splitView.isHorizontal
|
|
visible: leftSideView.active && leftSideView.item
|
|
|
|
sourceComponent: PreviewComponent {}
|
|
}
|
|
|
|
PropertyEditorPane {
|
|
id: itemPane
|
|
|
|
clip: true
|
|
SplitView.fillWidth: !leftSideView.visible
|
|
SplitView.fillHeight: true
|
|
SplitView.minimumWidth: leftSideView.visible ? 400 : 0
|
|
SplitView.maximumWidth: leftSideView.visible ? 800 : -1
|
|
|
|
headerDocked: !leftSideView.visible && settings.dockMode
|
|
|
|
headerComponent: MaterialEditorTopSection {
|
|
id: topSection
|
|
|
|
Component.onCompleted: topSection.restoreState(settings.topSection)
|
|
Component.onDestruction: settings.topSection = topSection.saveState()
|
|
previewComponent: PreviewComponent {}
|
|
showImage: !splitView.isHorizontal
|
|
}
|
|
|
|
DynamicPropertiesSection {
|
|
propertiesModel: MaterialEditorDynamicPropertiesModel {}
|
|
}
|
|
|
|
Loader {
|
|
id: specificsTwo
|
|
|
|
property string theSource: specificQmlData
|
|
|
|
width: itemPane.width
|
|
visible: specificsTwo.theSource !== ""
|
|
sourceComponent: specificQmlComponent
|
|
|
|
onTheSourceChanged: {
|
|
specificsTwo.active = false
|
|
specificsTwo.active = true
|
|
}
|
|
}
|
|
|
|
Item { // spacer
|
|
width: 1
|
|
height: 10
|
|
visible: specificsTwo.visible
|
|
}
|
|
|
|
Loader {
|
|
id: specificsOne
|
|
width: itemPane.width
|
|
source: specificsUrl
|
|
}
|
|
}
|
|
}
|
|
|
|
component PreviewComponent : MaterialEditorPreview {
|
|
id: previewItem
|
|
|
|
onPreviewEnvChanged: root.previewEnvChanged(previewEnv)
|
|
onPreviewModelChanged: root.previewModelChanged(previewModel)
|
|
|
|
previewEnv: root.__previewEnv
|
|
previewModel: root.__previewModel
|
|
pinned: settings.dockMode
|
|
showPinButton: !leftSideView.visible
|
|
onPinnedChanged: settings.dockMode = previewItem.pinned
|
|
|
|
Connections {
|
|
target: root
|
|
|
|
function onRefreshPreview() {
|
|
previewItem.refreshPreview()
|
|
}
|
|
}
|
|
}
|
|
}
|