Files
qt-creator/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibrary.qml
Mahmoud Badri 0b79db5c17 QmlDesigner: Close section's context-menu on view focus out
When clicking outside any view that has sections and a section's
context-menu is visible, it is now closed.

Fixes: QDS-9564
Change-Id: I73cd3a9754c5a18360427525a2a943c2c549e83f
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
2023-03-30 07:31:24 +00:00

128 lines
4.1 KiB
QML

// Copyright (C) 2023 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 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()
HelperWidgets.Controller.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
sectionCategory: "ContentLib_Tex"
searchBox: searchBox
}
ContentLibraryTexturesView {
id: environmentsView
width: root.width
model: ContentLibraryBackend.environmentsModel
sectionCategory: "ContentLib_Env"
searchBox: searchBox
}
}
}
}