forked from qt-creator/qt-creator
For now changing the path triggers the "restart needed" dialog. Some refactoring (for future) is needed to make the change works right away. Also added few missing ContentLibraryBackend uses. Fixes: QDS-9233 Change-Id: I3a576d397b0452a70d9940edaaa38193c41af347 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
125 lines
3.9 KiB
QML
125 lines
3.9 KiB
QML
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
|
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import QtQuickDesignerTheme
|
|
import HelperWidgets 2.0 as HelperWidgets
|
|
import StudioControls 1.0 as StudioControls
|
|
import StudioTheme 1.0 as StudioTheme
|
|
import ContentLibraryBackend
|
|
|
|
Item {
|
|
id: root
|
|
|
|
// Called also from C++ to close context menu on focus out
|
|
function closeContextMenu()
|
|
{
|
|
materialsView.closeContextMenu()
|
|
texturesView.closeContextMenu()
|
|
environmentsView.closeContextMenu()
|
|
}
|
|
|
|
// Called from C++
|
|
function clearSearchFilter()
|
|
{
|
|
searchBox.clear();
|
|
}
|
|
|
|
Column {
|
|
id: col
|
|
anchors.fill: parent
|
|
spacing: 5
|
|
|
|
Rectangle {
|
|
width: parent.width
|
|
height: StudioTheme.Values.doubleToolbarHeight
|
|
color: StudioTheme.Values.themeToolbarBackground
|
|
|
|
Column {
|
|
anchors.fill: parent
|
|
anchors.topMargin: 6
|
|
anchors.bottomMargin: 6
|
|
anchors.leftMargin: 10
|
|
anchors.rightMargin: 10
|
|
spacing: 12
|
|
|
|
StudioControls.SearchBox {
|
|
id: searchBox
|
|
width: parent.width
|
|
style: StudioTheme.Values.searchControlStyle
|
|
enabled: {
|
|
if (tabBar.currIndex === 0) { // Materials tab
|
|
ContentLibraryBackend.materialsModel.matBundleExists
|
|
&& ContentLibraryBackend.rootView.hasMaterialLibrary
|
|
&& ContentLibraryBackend.materialsModel.hasRequiredQuick3DImport
|
|
} else { // Textures / Environments tabs
|
|
ContentLibraryBackend.texturesModel.texBundleExists
|
|
}
|
|
}
|
|
|
|
onSearchChanged: (searchText) => {
|
|
ContentLibraryBackend.rootView.handleSearchFilterChanged(searchText)
|
|
|
|
// make sure categories with matches are expanded
|
|
materialsView.expandVisibleSections()
|
|
texturesView.expandVisibleSections()
|
|
environmentsView.expandVisibleSections()
|
|
}
|
|
}
|
|
|
|
ContentLibraryTabBar {
|
|
id: tabBar
|
|
width: parent.width
|
|
height: StudioTheme.Values.toolbarHeight
|
|
tabsModel: [{name: qsTr("Materials"), icon: StudioTheme.Constants.material_medium},
|
|
{name: qsTr("Textures"), icon: StudioTheme.Constants.textures_medium},
|
|
{name: qsTr("Environments"), icon: StudioTheme.Constants.languageList_medium}]
|
|
}
|
|
}
|
|
}
|
|
|
|
UnimportBundleMaterialDialog {
|
|
id: confirmUnimportDialog
|
|
}
|
|
|
|
StackLayout {
|
|
width: root.width
|
|
height: root.height - y
|
|
currentIndex: tabBar.currIndex
|
|
|
|
ContentLibraryMaterialsView {
|
|
id: materialsView
|
|
|
|
width: root.width
|
|
|
|
searchBox: searchBox
|
|
|
|
onUnimport: (bundleMat) => {
|
|
confirmUnimportDialog.targetBundleMaterial = bundleMat
|
|
confirmUnimportDialog.open()
|
|
}
|
|
}
|
|
|
|
ContentLibraryTexturesView {
|
|
id: texturesView
|
|
|
|
width: root.width
|
|
model: ContentLibraryBackend.texturesModel
|
|
|
|
searchBox: searchBox
|
|
}
|
|
|
|
ContentLibraryTexturesView {
|
|
id: environmentsView
|
|
|
|
width: root.width
|
|
model: ContentLibraryBackend.environmentsModel
|
|
|
|
searchBox: searchBox
|
|
}
|
|
}
|
|
}
|
|
}
|