Files
qt-creator/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibrary.qml
Mahmoud Badri a0df1fd61a QmlDesigner: Allow changing downloaded textures path
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>
2023-03-09 11:47:01 +00:00

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
}
}
}
}