From ed263f5ee5b659180fb1e7fab65c11c6b03c5029 Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Mon, 10 Jun 2024 17:18:20 +0300 Subject: [PATCH] QmlDesigner: Add 'import' action to material browser context menu Change-Id: I68577899841d8884d96446c762e7d228a1b03dc5 Reviewed-by: Shrief Gabr Reviewed-by: Miikka Heikkinen --- .../materialBrowserQmlSource/MaterialBrowserContextMenu.qml | 6 ++++++ .../components/contentlibrary/contentlibraryview.cpp | 2 +- src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp | 2 +- .../components/materialbrowser/materialbrowserwidget.cpp | 5 +++++ .../components/materialbrowser/materialbrowserwidget.h | 1 + 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml index b3ca25c2e92..02ee76cd099 100644 --- a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml +++ b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml @@ -135,6 +135,12 @@ StudioControls.Menu { onTriggered: MaterialBrowserBackend.rootView.addMaterialToContentLibrary() } + StudioControls.MenuItem { + text: qsTr("Import Material") + + onTriggered: MaterialBrowserBackend.rootView.importMaterial() + } + StudioControls.MenuItem { text: qsTr("Export Material") enabled: !materialBrowserModel.selectedMaterialIsComponent // TODO: support component materials diff --git a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp index eb7fc6a4864..96d15b72dc5 100644 --- a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp +++ b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp @@ -388,7 +388,7 @@ void ContentLibraryView::customNotification(const AbstractView *view, exportLib3DItem(nodeList.first()); } else if (identifier == "export_material_as_bundle") { exportLib3DItem(nodeList.first(), data.first().value()); - } else if (identifier == "import_bundle_to_3d_scene") { + } else if (identifier == "import_bundle") { importBundle(); } } diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp index 34733d3f0e8..f6f514431a9 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp @@ -373,7 +373,7 @@ void Edit3DWidget::createContextMenu() m_importBundleAction = m_contextMenu->addAction( contextIcon(DesignerIcons::CreateIcon), // TODO: placeholder icon tr("Import Components"), [&] { - view()->emitCustomNotification("import_bundle_to_3d_scene", {m_contextMenuTarget}); // To ContentLibrary + view()->emitCustomNotification("import_bundle"); // To ContentLibrary }); m_exportBundleAction = m_contextMenu->addAction( diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp index 4de8cea7893..86fb13a7a33 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp @@ -371,6 +371,11 @@ void MaterialBrowserWidget::addMaterialToContentLibrary() {m_previewImageProvider->getPixmap(mat)}); // to ContentLibrary } +void MaterialBrowserWidget::importMaterial() +{ + ModelNode mat = m_materialBrowserModel->selectedMaterial(); + m_materialBrowserView->emitCustomNotification("import_bundle"); // to ContentLibrary +} void MaterialBrowserWidget::exportMaterial() { ModelNode mat = m_materialBrowserModel->selectedMaterial(); diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h index d319fc562e8..36cb40ac0d2 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h @@ -63,6 +63,7 @@ public: Q_INVOKABLE void acceptTextureDropOnMaterial(int matIndex, const QString &texId); Q_INVOKABLE void focusMaterialSection(bool focusMatSec); Q_INVOKABLE void addMaterialToContentLibrary(); + Q_INVOKABLE void importMaterial(); Q_INVOKABLE void exportMaterial(); StudioQuickWidget *quickWidget() const;