forked from qt-creator/qt-creator
Task-number: QDS-11177 Change-Id: I94a537af1d55d503aa04dd79c6194ef1a0647e83 Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
119 lines
3.8 KiB
QML
119 lines
3.8 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.Layouts
|
|
import HelperWidgets
|
|
import StudioTheme as StudioTheme
|
|
import MaterialBrowserBackend
|
|
|
|
Item {
|
|
id: root
|
|
|
|
signal showContextMenu()
|
|
|
|
function refreshPreview() {
|
|
img.source = ""
|
|
img.source = "image://materialBrowser/" + materialInternalId
|
|
}
|
|
|
|
function forceFinishEditing() {
|
|
matName.commitRename()
|
|
}
|
|
|
|
function startRename() {
|
|
matName.startRename()
|
|
}
|
|
|
|
visible: materialVisible
|
|
|
|
DropArea {
|
|
anchors.fill: parent
|
|
|
|
onEntered: (drag) => {
|
|
drag.accepted = drag.formats[0] === "application/vnd.qtdesignstudio.texture"
|
|
|| drag.formats[0] === "application/vnd.qtdesignstudio.bundletexture"
|
|
|| (drag.formats[0] === "application/vnd.qtdesignstudio.assets"
|
|
&& rootView.hasAcceptableAssets(drag.urls))
|
|
}
|
|
|
|
onDropped: (drag) => {
|
|
drag.accept()
|
|
|
|
if (drag.formats[0] === "application/vnd.qtdesignstudio.texture")
|
|
MaterialBrowserBackend.rootView.acceptTextureDropOnMaterial(index, drag.getDataAsString(drag.keys[0]))
|
|
else if (drag.formats[0] === "application/vnd.qtdesignstudio.bundletexture")
|
|
MaterialBrowserBackend.rootView.acceptBundleTextureDropOnMaterial(index, drag.urls[0])
|
|
else if (drag.formats[0] === "application/vnd.qtdesignstudio.assets")
|
|
MaterialBrowserBackend.rootView.acceptAssetsDropOnMaterial(index, drag.urls)
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
id: mouseArea
|
|
|
|
anchors.fill: parent
|
|
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
|
|
|
onPressed: (mouse) => {
|
|
MaterialBrowserBackend.materialBrowserModel.selectMaterial(index)
|
|
MaterialBrowserBackend.rootView.focusMaterialSection(true)
|
|
|
|
if (mouse.button === Qt.LeftButton)
|
|
MaterialBrowserBackend.rootView.startDragMaterial(index, mapToGlobal(mouse.x, mouse.y))
|
|
else if (mouse.button === Qt.RightButton)
|
|
root.showContextMenu()
|
|
}
|
|
|
|
onDoubleClicked: MaterialBrowserBackend.materialBrowserModel.openMaterialEditor();
|
|
}
|
|
|
|
Column {
|
|
anchors.fill: parent
|
|
spacing: 1
|
|
|
|
Image {
|
|
id: img
|
|
|
|
width: root.width
|
|
height: img.width
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
source: "image://materialBrowser/" + materialInternalId
|
|
cache: false
|
|
}
|
|
|
|
// Eat keys so they are not passed to parent while editing name
|
|
Keys.onPressed: (event) => {
|
|
event.accepted = true
|
|
}
|
|
|
|
MaterialBrowserItemName {
|
|
id: matName
|
|
|
|
text: materialName
|
|
width: img.width
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
|
|
onRenamed: (newName) => {
|
|
MaterialBrowserBackend.materialBrowserModel.renameMaterial(index, newName);
|
|
mouseArea.forceActiveFocus()
|
|
}
|
|
|
|
onClicked: {
|
|
MaterialBrowserBackend.materialBrowserModel.selectMaterial(index)
|
|
MaterialBrowserBackend.rootView.focusMaterialSection(true)
|
|
}
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
id: marker
|
|
anchors.fill: parent
|
|
border.width: MaterialBrowserBackend.materialBrowserModel.selectedIndex === index ? MaterialBrowserBackend.rootView.materialSectionFocused ? 3 : 1 : 0
|
|
border.color: MaterialBrowserBackend.materialBrowserModel.selectedIndex === index
|
|
? StudioTheme.Values.themeControlOutlineInteraction
|
|
: "transparent"
|
|
color: "transparent"
|
|
}
|
|
}
|