From e1bb5d058debe84ee01bfb0bc92c0d4fd7344b5d Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Wed, 1 Jun 2022 13:59:03 +0300 Subject: [PATCH 01/17] QmlDesigner: Mark unused params in material editor and browser Change-Id: I5d1e2dcd340e766f829fe78edb63dfa8beacfa78 Reviewed-by: Miikka Heikkinen --- .../materialbrowser/materialbrowserview.cpp | 15 ++++++++++++++- .../materialeditor/materialeditorview.cpp | 7 +++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp index 41186302144..9d6072856e9 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp @@ -135,6 +135,8 @@ void MaterialBrowserView::modelAboutToBeDetached(Model *model) void MaterialBrowserView::selectedNodesChanged(const QList &selectedNodeList, const QList &lastSelectedNodeList) { + Q_UNUSED(lastSelectedNodeList) + ModelNode selectedModel; for (const ModelNode &node : selectedNodeList) { @@ -176,6 +178,8 @@ void MaterialBrowserView::modelNodePreviewPixmapChanged(const ModelNode &node, c void MaterialBrowserView::variantPropertiesChanged(const QList &propertyList, PropertyChangeFlags propertyChange) { + Q_UNUSED(propertyChange) + for (const VariantProperty &property : propertyList) { ModelNode node(property.parentModelNode()); @@ -189,6 +193,8 @@ void MaterialBrowserView::nodeReparented(const ModelNode &node, const NodeAbstractProperty &oldPropertyParent, PropertyChangeFlags propertyChange) { + Q_UNUSED(propertyChange) + if (!isMaterial(node)) return; @@ -226,6 +232,9 @@ void MaterialBrowserView::nodeRemoved(const ModelNode &removedNode, const NodeAbstractProperty &parentProperty, PropertyChangeFlags propertyChange) { + Q_UNUSED(removedNode) + Q_UNUSED(propertyChange) + if (parentProperty.parentModelNode().id() != Constants::MATERIAL_LIB_ID) return; @@ -234,6 +243,9 @@ void MaterialBrowserView::nodeRemoved(const ModelNode &removedNode, void MaterialBrowserView::importsChanged(const QList &addedImports, const QList &removedImports) { + Q_UNUSED(addedImports) + Q_UNUSED(removedImports) + bool hasQuick3DImport = model()->hasImport("QtQuick3D"); if (hasQuick3DImport == m_hasQuick3DImport) @@ -241,12 +253,13 @@ void MaterialBrowserView::importsChanged(const QList &addedImports, cons m_hasQuick3DImport = hasQuick3DImport; refreshModel(); - } void MaterialBrowserView::customNotification(const AbstractView *view, const QString &identifier, const QList &nodeList, const QList &data) { + Q_UNUSED(data) + if (view == this) return; diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp index 29b07bb3b6d..8a4dabb057c 100644 --- a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp @@ -672,6 +672,8 @@ WidgetInfo MaterialEditorView::widgetInfo() void MaterialEditorView::selectedNodesChanged(const QList &selectedNodeList, const QList &lastSelectedNodeList) { + Q_UNUSED(lastSelectedNodeList) + m_selectedModels.clear(); for (const ModelNode &node : selectedNodeList) { @@ -727,6 +729,9 @@ void MaterialEditorView::modelNodePreviewPixmapChanged(const ModelNode &node, co void MaterialEditorView::importsChanged(const QList &addedImports, const QList &removedImports) { + Q_UNUSED(addedImports) + Q_UNUSED(removedImports) + m_hasQuick3DImport = model()->hasImport("QtQuick3D"); m_qmlBackEnd->contextObject()->setHasQuick3DImport(m_hasQuick3DImport); @@ -784,6 +789,8 @@ void MaterialEditorView::duplicateMaterial(const ModelNode &material) void MaterialEditorView::customNotification(const AbstractView *view, const QString &identifier, const QList &nodeList, const QList &data) { + Q_UNUSED(view) + if (identifier == "selected_material_changed") { m_selectedMaterial = nodeList.first(); QTimer::singleShot(0, this, &MaterialEditorView::resetView); From ffe94d177cb28c0657f72b8cd3a9bc6140cebd9b Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 31 May 2022 17:42:18 +0300 Subject: [PATCH 02/17] QmlDesigner: Fix corrupted preview images in material editor/browser Now a default preview image is shown if real preview is not yet available. Fixes: QDS-7055 Change-Id: Ia2f9ee3aa3b29f49224b6ba8ae8f22f1b36f629a Reviewed-by: Mahmoud Badri Reviewed-by: Reviewed-by: Samuel Ghinet --- src/plugins/qmldesigner/CMakeLists.txt | 1 + .../materialbrowser/materialbrowserwidget.cpp | 4 ++++ .../images/defaultmaterialpreview.png | Bin 0 -> 2685 bytes .../components/materialeditor/materialeditor.qrc | 5 +++++ .../materialeditor/materialeditorqmlbackend.cpp | 9 +++++++-- src/plugins/qmldesigner/qmldesignerplugin.qbs | 1 + 6 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 src/plugins/qmldesigner/components/materialeditor/images/defaultmaterialpreview.png create mode 100644 src/plugins/qmldesigner/components/materialeditor/materialeditor.qrc diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 9f2c3e091cb..1d56e323e9a 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -320,6 +320,7 @@ extend_qtc_plugin(QmlDesigner materialeditorqmlbackend.cpp materialeditorqmlbackend.h materialeditortransaction.cpp materialeditortransaction.h materialeditorview.cpp materialeditorview.h + materialeditor.qrc ) extend_qtc_plugin(QmlDesigner diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp index 4ca84cdfb9d..156add5d2da 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp @@ -81,11 +81,15 @@ public: { Q_UNUSED(requestedSize) + static QPixmap defaultPreview = QPixmap::fromImage(QImage(":/materialeditor/images/defaultmaterialpreview.png")); + QPixmap pixmap{150, 150}; qint32 internalId = id.toInt(); if (m_pixmaps.contains(internalId)) pixmap = m_pixmaps.value(internalId); + else + pixmap = defaultPreview; if (size) *size = pixmap.size(); diff --git a/src/plugins/qmldesigner/components/materialeditor/images/defaultmaterialpreview.png b/src/plugins/qmldesigner/components/materialeditor/images/defaultmaterialpreview.png new file mode 100644 index 0000000000000000000000000000000000000000..93073719f55f658c6dfcfb2a2f45e4839567a12b GIT binary patch literal 2685 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 Iol`;+0Psp60ssI2 literal 0 HcmV?d00001 diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditor.qrc b/src/plugins/qmldesigner/components/materialeditor/materialeditor.qrc new file mode 100644 index 00000000000..4ed3c769175 --- /dev/null +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditor.qrc @@ -0,0 +1,5 @@ + + + images/defaultmaterialpreview.png + + diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorqmlbackend.cpp b/src/plugins/qmldesigner/components/materialeditor/materialeditorqmlbackend.cpp index 828e5fab006..7c5d8436226 100644 --- a/src/plugins/qmldesigner/components/materialeditor/materialeditorqmlbackend.cpp +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorqmlbackend.cpp @@ -77,16 +77,21 @@ public: { Q_UNUSED(requestedSize) + static QPixmap defaultPreview = QPixmap::fromImage(QImage(":/materialeditor/images/defaultmaterialpreview.png")); + QPixmap pixmap{150, 150}; if (id == "preview") { if (!m_previewPixmap.isNull()) pixmap = m_previewPixmap; + else + pixmap = defaultPreview; } else { - QString path = Core::ICore::resourcePath("qmldesigner/materialEditorQmlSources/images/" + id).toString(); - pixmap = QPixmap{path}; + qWarning() << __FUNCTION__ << "Unsupported image id:" << id; + pixmap.fill(Qt::red); } + if (size) *size = pixmap.size(); diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs index 2d0055b8c93..ed113d4fe57 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.qbs +++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs @@ -693,6 +693,7 @@ Project { "materialeditor/materialeditortransaction.h", "materialeditor/materialeditorview.cpp", "materialeditor/materialeditorview.h", + "materialeditor/materialeditor.qrc", "navigator/iconcheckboxitemdelegate.cpp", "navigator/iconcheckboxitemdelegate.h", "navigator/nameitemdelegate.cpp", From 57cb9d888b74459f8b0fa4aaed0abf316890cff1 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 31 May 2022 17:59:23 +0200 Subject: [PATCH 03/17] QmlDesigner: Fix potential crash Change-Id: I85e5b7d8f03e270540294a20ccc24658943a2c9b Reviewed-by: Mahmoud Badri Reviewed-by: --- .../components/itemlibrary/itemlibrarycategoriesmodel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarycategoriesmodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarycategoriesmodel.cpp index 4962f5d6b4c..6ca0ddbc749 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarycategoriesmodel.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarycategoriesmodel.cpp @@ -207,10 +207,11 @@ void ItemLibraryCategoriesModel::clearSelectedCategory(int categoryIndex) QPointer ItemLibraryCategoriesModel::selectCategory(int categoryIndex) { - if (categoryIndex == -1 || m_categoryList.isEmpty()) + if (m_categoryList.isEmpty() || categoryIndex < 0 || categoryIndex >= m_categoryList.size()) return nullptr; const QPointer category = m_categoryList.at(categoryIndex); + if (!category->categorySelected()) { category->setCategorySelected(true); emit dataChanged(index(categoryIndex),index(categoryIndex), {m_roleNames.key("categorySelected")}); From d47ad107288681ac52699658c15e84c683e64eae Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Thu, 2 Jun 2022 11:51:24 +0300 Subject: [PATCH 04/17] QmlDesigner: Fix small typo Change-Id: Ic3fb65b8f8ecf80dcf65c21f5f3e5a35c42d0735 Reviewed-by: Miikka Heikkinen --- .../components/materialeditor/materialeditorview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp index 8a4dabb057c..33d7b67b784 100644 --- a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp @@ -92,7 +92,7 @@ void MaterialEditorView::ensureMaterialLibraryNode() return; // create material library node - TypeName nodeType = rootModelNode().isSubclassOf("QtQuick3D.Node") ? "Quick3D.Node" : "QtQuick.Item"; + TypeName nodeType = rootModelNode().isSubclassOf("QtQuick3D.Node") ? "QtQuick3D.Node" : "QtQuick.Item"; NodeMetaInfo metaInfo = model()->metaInfo(nodeType); m_materialLibrary = createModelNode(nodeType, metaInfo.majorVersion(), metaInfo.minorVersion()); From beb28f81995d31062284fd5bdcd6f9c7104ac4b6 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 2 Jun 2022 11:04:10 +0200 Subject: [PATCH 05/17] QmlDesigner: Fix Qt5 build Amends c3b90c0ce5e. Change-Id: I16e37678a7981c22c62eaf772c6d8f4f15594bac Reviewed-by: Samuel Ghinet Reviewed-by: Mahmoud Badri --- src/plugins/qmldesigner/designersettings.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/designersettings.cpp b/src/plugins/qmldesigner/designersettings.cpp index 9c1aec1b364..20083068c16 100644 --- a/src/plugins/qmldesigner/designersettings.cpp +++ b/src/plugins/qmldesigner/designersettings.cpp @@ -80,7 +80,8 @@ void DesignerSettings::fromSettings(QSettings *settings) restoreValue(settings, DesignerSettingsKey::ALWAYS_DESIGN_MODE, true); restoreValue(settings, DesignerSettingsKey::DISABLE_ITEM_LIBRARY_UPDATE_TIMER, false); restoreValue(settings, DesignerSettingsKey::ASK_BEFORE_DELETING_ASSET, true); - restoreValue(settings, DesignerSettingsKey::EDIT3DVIEW_BACKGROUND_COLOR, QList{"#222222", "#999999"}); + const QStringList defaultValue = QStringList() << "#222222" << "#999999"; + restoreValue(settings, DesignerSettingsKey::EDIT3DVIEW_BACKGROUND_COLOR, defaultValue); settings->endGroup(); settings->endGroup(); From 87b0f2a3544212d2ae55bf0b770af819965029f5 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 2 Jun 2022 13:33:39 +0200 Subject: [PATCH 06/17] QmlDesigner: Fixup compile fix Use explicit type for local variable to have a consistent approach. Amends 6469f99. Change-Id: I6b7612e1f646e497699e278e4538f9cb4ae37c64 Reviewed-by: Samuel Ghinet Reviewed-by: David Schulz --- .../qmldesigner/designercore/instances/nodeinstanceview.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 1cb07d95ed1..29bf14d0269 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -1147,12 +1147,12 @@ CreateSceneCommand NodeInstanceView::createCreateSceneCommand() if (stateNode.isValid() && stateNode.metaInfo().isSubclassOf("QtQuick.State", 1, 0)) stateInstanceId = stateNode.internalId(); - auto value + QVariant value #ifndef QMLDESIGNER_TEST = QmlDesigner::DesignerSettings::getValue( QmlDesigner::DesignerSettingsKey::EDIT3DVIEW_BACKGROUND_COLOR); #else - = QColor(); + = {}; #endif QList edit3dBackgroundColor; if (value.isValid()) From a734e1b4e865209b3364e0a98c9ace3e87d244fe Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 2 Jun 2022 13:03:26 +0200 Subject: [PATCH 07/17] QmlDesigner: Move reparenting of materials into transaction Without a transaction we will reparse the document for each reparent. This will make the process very slow if there are e.g. 20 materials in the document. The new parent has to be created first. This cannot be part of the same transaction, because of limiations in the rewriter. Change-Id: Ie2c587d0f072b8163846c660dc2dd66bee7146c1 Reviewed-by: Mahmoud Badri --- .../materialeditor/materialeditorview.cpp | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp index 33d7b67b784..4a9487d9239 100644 --- a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp @@ -99,16 +99,23 @@ void MaterialEditorView::ensureMaterialLibraryNode() m_materialLibrary.setIdWithoutRefactoring(Constants::MATERIAL_LIB_ID); rootModelNode().defaultNodeListProperty().reparentHere(m_materialLibrary); - // move all materials to under material library node - for (const ModelNode &node : materials) { - // if material has no name, set name to id - QString matName = node.variantProperty("objectName").value().toString(); - if (matName.isEmpty()) { - VariantProperty objNameProp = node.variantProperty("objectName"); - objNameProp.setValue(node.id()); - } + RewriterTransaction transaction = beginRewriterTransaction( + "MaterialEditorView::ensureMaterialLibraryNode"); - m_materialLibrary.defaultNodeListProperty().reparentHere(node); + try { + // move all materials to under material library node + for (const ModelNode &node : materials) { + // if material has no name, set name to id + QString matName = node.variantProperty("objectName").value().toString(); + if (matName.isEmpty()) { + VariantProperty objNameProp = node.variantProperty("objectName"); + objNameProp.setValue(node.id()); + } + + m_materialLibrary.defaultNodeListProperty().reparentHere(node); + } + } catch (Exception &e) { + e.showException(); } } From fe4d8e3eda2639b049862ac90b230060b48b623a Mon Sep 17 00:00:00 2001 From: Samuel Ghinet Date: Thu, 2 Jun 2022 15:26:41 +0300 Subject: [PATCH 08/17] Fix tooltip text in 3D Editor toolbar background color button Task-number: QDS-6585 Change-Id: I397de9ac51b69697234f5f0dc48b90f330ec49d2 Reviewed-by: Miikka Heikkinen Reviewed-by: Mahmoud Badri --- src/plugins/qmldesigner/components/edit3d/edit3dview.cpp | 8 ++++---- .../qmldesigner/components/edit3d/edit3dwidget.cpp | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp index 28b6cc93cc7..1ef3055ada6 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp @@ -344,13 +344,13 @@ void Edit3DView::createEdit3DActions() m_backgroundColorSelectionAction = new Edit3DAction( QmlDesigner::Constants::EDIT3D_EDIT_SELECT_BACKGROUND_COLOR, View3DActionCommand::SelectBackgroundColor, - QCoreApplication::translate("SelectBackgroundColorAction", "Select Background color"), + QCoreApplication::translate("SelectBackgroundColorAction", "Select Background Color"), {}, false, false, {}, {}, showBackgroundColorSelection, - QCoreApplication::translate("SelectBackgroundColorAction", "Choose a color for the background.")); + QCoreApplication::translate("SelectBackgroundColorAction", "Select a color for the background of the 3D Editor.")); m_resetBackgroundColorAction = new Edit3DAction( QmlDesigner::Constants::EDIT3D_EDIT_RESET_BACKGROUND_COLOR, View3DActionCommand::ResetBackgroundColor, - QCoreApplication::translate("ResetBackgroundColorAction", "Reset Background color"), + QCoreApplication::translate("ResetBackgroundColorAction", "Reset Background Color"), {}, false, false, {}, {}, [](const SelectionContext &) { QList colors = {QRgb(0x222222), QRgb(0x999999)}; auto view = QmlDesignerPlugin::instance()->viewManager().nodeInstanceView(); @@ -362,7 +362,7 @@ void Edit3DView::createEdit3DActions() QmlDesigner::DesignerSettingsKey::EDIT3DVIEW_BACKGROUND_COLOR, QVariant::fromValue(colorsToSave)); }, - QCoreApplication::translate("ResetBackgroundColorAction", "Reset Background color to the default value.")); + QCoreApplication::translate("ResetBackgroundColorAction", "Reset background color of the 3D Editor to the default value.")); m_showSelectionBoxAction = new Edit3DAction( QmlDesigner::Constants::EDIT3D_EDIT_SHOW_SELECTION_BOX, View3DActionCommand::ShowSelectionBox, diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp index 6f685123cfd..afa05dd67e2 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp @@ -141,7 +141,9 @@ Edit3DWidget::Edit3DWidget(Edit3DView *view) : m_visibilityTogglesMenu = new Edit3DVisibilityTogglesMenu(this); handleActions(view->visibilityToggleActions(), m_visibilityTogglesMenu, false); - m_backgroundColorMenu = new Edit3DVisibilityTogglesMenu(this); + m_backgroundColorMenu = new QMenu(this); + m_backgroundColorMenu->setToolTipsVisible(true); + handleActions(view->backgroundColorActions(), m_backgroundColorMenu, false); view->setSeeker(seeker); From 35d8bc4ad85ef0463d78510ddea183c5a74b6555 Mon Sep 17 00:00:00 2001 From: Aleksei German Date: Thu, 2 Jun 2022 09:50:38 +0200 Subject: [PATCH 09/17] QmlDesigner: Update MCUs metadata for MCUs 2.2 Task-number: QDS-7064 Change-Id: I645ece6228e30cb5d645c67a57b51f76e7375a3b Reviewed-by: Aleksei German --- .../qtcreator/qmldesigner/qt4mcu/metadata.qml | 8 +- share/qtcreator/qmldesigner/qt4mcu/qul-22.qml | 225 ++++++++++++++++++ 2 files changed, 232 insertions(+), 1 deletion(-) create mode 100644 share/qtcreator/qmldesigner/qt4mcu/qul-22.qml diff --git a/share/qtcreator/qmldesigner/qt4mcu/metadata.qml b/share/qtcreator/qmldesigner/qt4mcu/metadata.qml index 5e5c515199d..97f058f2c70 100644 --- a/share/qtcreator/qmldesigner/qt4mcu/metadata.qml +++ b/share/qtcreator/qmldesigner/qt4mcu/metadata.qml @@ -27,7 +27,7 @@ Metadata { id: metadataFile - defaultVersion: v21 + defaultVersion: v22 VersionData { id: v14 @@ -64,4 +64,10 @@ Metadata { name: "Qt for MCUs 2.1" path: "qul-21.qml" } + + VersionData { + id: v22 + name: "Qt for MCUs 2.2" + path: "qul-22.qml" + } } diff --git a/share/qtcreator/qmldesigner/qt4mcu/qul-22.qml b/share/qtcreator/qmldesigner/qt4mcu/qul-22.qml new file mode 100644 index 00000000000..a539a0aeb25 --- /dev/null +++ b/share/qtcreator/qmldesigner/qt4mcu/qul-22.qml @@ -0,0 +1,225 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +//differences from 2.0: +//2.1: + text.elide +//2.2: + text.wrapMode + +VersionData { + name: "Qt for MCUs 2.2" + + bannedItems: ["QtQuick.AnimatedImage", + "QtQuick.FocusScope", + "QtQuick.TextInput", + "QtQuick.TextEdit", + "QtQuick.Flow", + "QtQuick.Grid", + "QtQuick.GridView", + "QtQuick.PathView", + "QtQuick.Loader", + "QtQuick.Controls", + "QtQuick.Controls.BusyIndicator", + "QtQuick.Controls.ButtonGroup", + "QtQuick.Controls.CheckDelegate", + "QtQuick.Controls.Container", + "QtQuick.Controls.ComboBox", + "QtQuick.Controls.DelayButton", + "QtQuick.Controls.Frame", + "QtQuick.Controls.GroupBox", + "QtQuick.Controls.ItemDelegate", + "QtQuick.Controls.Label", + "QtQuick.Controls.Page", + "QtQuick.Controls.PageIndicator", + "QtQuick.Controls.Pane", + "QtQuick.Controls.RadioDelegate", + "QtQuick.Controls.RangeSlider", + "QtQuick.Controls.RoundButton", + "QtQuick.Controls.ScrollView", + "QtQuick.Controls.SpinBox", + "QtQuick.Controls.StackView", + "QtQuick.Controls.SwipeDelegate", + "QtQuick.Controls.SwitchDelegate", + "QtQuick.Controls.ToolBar", + "QtQuick.Controls.ToolButton", + "QtQuick.Controls.TabBar", + "QtQuick.Controls.TabButton", + "QtQuick.Controls.TextArea", + "QtQuick.Controls.TextField", + "QtQuick.Controls.ToolSeparator", + "QtQuick.Controls.Tumbler", + "QtQuick.Shapes.ConicalGradient", + "QtQuick.Shapes.LinearGradient", + "QtQuick.Shapes.RadialGradient", + "QtQuick.Shapes.ShapeGradient"] + + allowedImports: ["QtQuick", + "QtQuick.Shapes", + "QtQuick.Controls", + "QtQuick.Timeline", + "QtQuickUltralite.Extras", + "QtQuickUltralite.Layers"] + + bannedImports: ["FlowView"] + + //ComplexProperty is not a type, it's just a way to handle bigger props + ComplexProperty { + prefix: "font" + bannedProperties: ["wordSpacing", "letterSpacing", "hintingPreference", + "kerning", "preferShaping", "capitalization", + "strikeout", "underline", "styleName"] + } + + QtQuick.Item { + bannedProperties: ["layer", "opacity", "smooth", "antialiasing", + "baselineOffset", "focus", "activeFocusOnTab", + "rotation", "scale", "transformOrigin"] + } + + QtQuick.Rectangle { + bannedProperties: ["gradient", "border"] + } + + QtQuick.Flickable { + bannedProperties: ["boundsBehavior", "boundsMovement", "flickDeceleration", + "flickableDirection", "leftMargin", "rightMargin", "bottomMargin", "topMargin", + "originX", "originY", "pixelAligned", "pressDelay", "synchronousDrag"] + } + + QtQuick.MouseArea { + bannedProperties: ["propagateComposedEvents", "preventStealing", "cursorShape", + "scrollGestureEnabled", "drag", "acceptedButtons", "hoverEnabled"] + } + + QtQuick.Image { + allowChildren: false + allowedProperties: ["rotation", "scale", "transformOrigin"] + bannedProperties: ["mirror", "mipmap", "cache", "autoTransform", "asynchronous", + "sourceSize", "smooth"] + } + + QtQuick.BorderImage { + bannedProperties: ["asynchronous", "cache", "currentFrame", "frameCount", + "horizontalTileMode", "mirror", "progress", "smooth", "sourceSize", + "status", "verticalTileMode"] + } + + QtQuick.Text { + allowChildren: false + allowedProperties: ["rotation", "scale", "transformOrigin"] + bannedProperties: ["lineHeight", "lineHeightMode", "style", + "styleColor", "minimumPointSize", "minimumPixelSize", + "fontSizeMode", "renderType", "renderTypeQuality", "textFormat", "maximumLineCount"] + } + + //Padding is not an actual item, but rather set of properties in Text + Padding { + bannedProperties: ["bottomPadding", "topPadding", "leftPadding", "rightPadding"] + } + + QtQuick.Column { + bannedProperties: ["bottomPadding", "leftPadding", "rightPadding", "topPadding"] + } + + QtQuick.Row { + bannedProperties: ["bottomPadding", "leftPadding", "rightPadding", "topPadding", + "effectiveLayoutDirection", "layoutDirection"] + } + + QtQuick.ListView { + bannedProperties: ["cacheBuffer", "highlightRangeMode", "highlightMoveDuration", + "highlightResizeDuration", "preferredHighlightBegin", "layoutDirection", + "preferredHighlightEnd", "highlightFollowsCurrentItem", "keyNavigationWraps", + "snapMode", "highlightMoveVelocity", "highlightResizeVelocity"] + } + + QtQuick.Animation { + bannedProperties: ["paused"] + } + + //Quick Controls2 Items and properties: + + QtQuick.Controls.Control { + bannedProperties: ["focusPolicy", "hoverEnabled", "wheelEnabled"] + } + + QtQuick.Controls.AbstractButton { + bannedProperties: ["display", "autoExclusive"] + } + + QtQuick.Controls.ProgressBar { + bannedProperties: ["indeterminate"] + } + + QtQuick.Controls.Slider { + bannedProperties: ["live", "snapMode", "touchDragThreshold"] + } + + //Path and Shapes related: + + QtQuick.Path { + bannedProperties: ["scale", "pathElements"] + } + + QtQuick.PathArc { + bannedProperties: ["relativeX", "relativeY"] + } + + QtQuick.PathLine { + bannedProperties: ["relativeX", "relativeY"] + } + + QtQuick.PathMove { + bannedProperties: ["relativeX", "relativeY"] + } + + QtQuick.PathQuad { + bannedProperties: ["relativeX", "relativeY", + "relativeControlX", "relativeControlY"] + } + + QtQuick.PathCubic { + bannedProperties: ["relativeX", "relativeY", + "relativeControl1X", "relativeControl1Y", + "relativeControl2X", "relativeControl2Y"] + } + + QtQuick.PathElement { + //nothing + } + + QtQuick.PathSvg { + //nothing + } + + QtQuick.Shapes.Shape { + bannedProperties: ["asynchronous", "containsMode", "data", + "renderType", "status", "vendorExtensionsEnabled"] + } + + QtQuick.Shapes.ShapePath { + bannedProperties: ["dashOffset", "dashPattern", + "fillGradient", "strokeStyle"] + } +} From 6a7f853ec940ed69358a3de58f6d1051d71db35f Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Thu, 2 Jun 2022 22:31:10 +0300 Subject: [PATCH 10/17] QmlDesigner: Switch to components view upon model attach the "add imports" view looks confusing when it appears upon switching from edit mode or welcome screen to design mode. Even worse when it stays after creating a new project. Change-Id: Ibc3ff1adc7f6b653d443fec2b8f1803d6ac56ed9 Reviewed-by: Reviewed-by: Miikka Heikkinen --- .../components/itemlibrary/itemlibraryview.cpp | 1 + .../components/itemlibrary/itemlibrarywidget.cpp | 9 +++++++-- .../components/itemlibrary/itemlibrarywidget.h | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp index 21928ea06ae..5ad81ef9a20 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp @@ -77,6 +77,7 @@ void ItemLibraryView::modelAttached(Model *model) AbstractView::modelAttached(model); m_widget->clearSearchFilter(); + m_widget->switchToComponentsView(); m_widget->setModel(model); updateImports(); if (model) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 75a564d7384..e6f2b2825e5 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -278,7 +278,7 @@ void ItemLibraryWidget::handleAddImport(int index) imports.append(import); model->changeImports(imports, {}); - QMetaObject::invokeMethod(m_itemsWidget->rootObject(), "switchToComponentsView"); + switchToComponentsView(); updateSearch(); } @@ -310,7 +310,7 @@ void ItemLibraryWidget::setModel(Model *model) m_subCompEditMode = subCompEditMode; // Switch out of add module view if it's active if (m_subCompEditMode) - QMetaObject::invokeMethod(m_itemsWidget->rootObject(), "switchToComponentsView"); + switchToComponentsView(); emit subCompEditModeChanged(); } } @@ -330,6 +330,11 @@ void ItemLibraryWidget::clearSearchFilter() QMetaObject::invokeMethod(m_itemsWidget->rootObject(), "clearSearchFilter"); } +void ItemLibraryWidget::switchToComponentsView() +{ + QMetaObject::invokeMethod(m_itemsWidget->rootObject(), "switchToComponentsView"); +} + void ItemLibraryWidget::reloadQmlSource() { const QString itemLibraryQmlPath = qmlSourcesPath() + "/ItemsView.qml"; diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h index be905f181ae..1b63c2fc660 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h @@ -73,8 +73,9 @@ public: QList createToolBarWidgets(); static QString qmlSourcesPath(); - void clearSearchFilter(); + void clearSearchFilter(); + void switchToComponentsView(); void delayedUpdateModel(); void updateModel(); void updatePossibleImports(const QList &possibleImports); From 8d11ec26566071a3118e222ab8d15641357d3f7d Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Thu, 2 Jun 2022 19:07:23 +0300 Subject: [PATCH 11/17] QmlDesigner: Fix adding the first material to the material library Fixed that material editor node was not being created when no materials exist. Fixes: QDS-7069 Change-Id: I358c497325e8865fc5f012531783dcbe46c32490 Reviewed-by: Reviewed-by: Miikka Heikkinen --- .../components/materialeditor/materialeditorview.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp index 4a9487d9239..8476f0910a7 100644 --- a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp @@ -87,10 +87,6 @@ void MaterialEditorView::ensureMaterialLibraryNode() if (m_materialLibrary.isValid()) return; - const QList materials = rootModelNode().subModelNodesOfType("QtQuick3D.Material"); - if (materials.isEmpty()) - return; - // create material library node TypeName nodeType = rootModelNode().isSubclassOf("QtQuick3D.Node") ? "QtQuick3D.Node" : "QtQuick.Item"; NodeMetaInfo metaInfo = model()->metaInfo(nodeType); @@ -99,6 +95,10 @@ void MaterialEditorView::ensureMaterialLibraryNode() m_materialLibrary.setIdWithoutRefactoring(Constants::MATERIAL_LIB_ID); rootModelNode().defaultNodeListProperty().reparentHere(m_materialLibrary); + const QList materials = rootModelNode().subModelNodesOfType("QtQuick3D.Material"); + if (materials.isEmpty()) + return; + RewriterTransaction transaction = beginRewriterTransaction( "MaterialEditorView::ensureMaterialLibraryNode"); From e9a78b13b38425e50589dc72e72d0e14d0e4cfbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Thu, 2 Jun 2022 21:24:18 +0200 Subject: [PATCH 12/17] Squish: Remove exec permission where not needed These python scripts cannot be executed directly anyway. Change-Id: I9ac3170450c4f8be4063b02ee8ec9df28f90cec5 Reviewed-by: Christian Stenger --- tests/system/shared/suites_qtta.py | 0 tests/system/suite_CCOM/tst_CCOM01/test.py | 0 tests/system/suite_CCOM/tst_CCOM02/test.py | 0 tests/system/suite_HELP/tst_HELP02/test.py | 0 tests/system/suite_HELP/tst_HELP05/test.py | 0 tests/system/suite_HELP/tst_HELP06/test.py | 0 tests/system/suite_WELP/tst_WELP01/test.py | 0 tests/system/tools/objectsToTable.py | 0 8 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 tests/system/shared/suites_qtta.py mode change 100755 => 100644 tests/system/suite_CCOM/tst_CCOM01/test.py mode change 100755 => 100644 tests/system/suite_CCOM/tst_CCOM02/test.py mode change 100755 => 100644 tests/system/suite_HELP/tst_HELP02/test.py mode change 100755 => 100644 tests/system/suite_HELP/tst_HELP05/test.py mode change 100755 => 100644 tests/system/suite_HELP/tst_HELP06/test.py mode change 100755 => 100644 tests/system/suite_WELP/tst_WELP01/test.py mode change 100755 => 100644 tests/system/tools/objectsToTable.py diff --git a/tests/system/shared/suites_qtta.py b/tests/system/shared/suites_qtta.py old mode 100755 new mode 100644 diff --git a/tests/system/suite_CCOM/tst_CCOM01/test.py b/tests/system/suite_CCOM/tst_CCOM01/test.py old mode 100755 new mode 100644 diff --git a/tests/system/suite_CCOM/tst_CCOM02/test.py b/tests/system/suite_CCOM/tst_CCOM02/test.py old mode 100755 new mode 100644 diff --git a/tests/system/suite_HELP/tst_HELP02/test.py b/tests/system/suite_HELP/tst_HELP02/test.py old mode 100755 new mode 100644 diff --git a/tests/system/suite_HELP/tst_HELP05/test.py b/tests/system/suite_HELP/tst_HELP05/test.py old mode 100755 new mode 100644 diff --git a/tests/system/suite_HELP/tst_HELP06/test.py b/tests/system/suite_HELP/tst_HELP06/test.py old mode 100755 new mode 100644 diff --git a/tests/system/suite_WELP/tst_WELP01/test.py b/tests/system/suite_WELP/tst_WELP01/test.py old mode 100755 new mode 100644 diff --git a/tests/system/tools/objectsToTable.py b/tests/system/tools/objectsToTable.py old mode 100755 new mode 100644 From d1a56ddcfad81bd1a4757096753f609269243c4e Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 2 Jun 2022 15:01:02 +0300 Subject: [PATCH 13/17] QmlDesigner: Fix issues with quick3d private API changes in Qt 6.4 Change-Id: I5974c7f663262c88810ddaac6f9c775d95749266 Reviewed-by: Reviewed-by: Thomas Hartmann --- .../qmlpuppet/qml2puppet/editor3d/generalhelper.cpp | 7 +++++++ .../qml2puppet/editor3d/selectionboxgeometry.cpp | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp index dd21622b5dc..74c2eb270ef 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp @@ -826,8 +826,15 @@ bool GeneralHelper::getBounds(QQuick3DViewport *view3D, QQuick3DNode *node, QVec auto renderNode = static_cast(nodePriv->spatialNode); if (recursive && renderNode) { +#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0) if (renderNode->flags.testFlag(QSSGRenderNode::Flag::TransformDirty)) renderNode->calculateLocalTransform(); +#else + if (renderNode->isDirty(QSSGRenderNode::DirtyFlag::TransformDirty)) { + renderNode->localTransform = QSSGRenderNode::calculateTransformMatrix( + node->position(), node->scale(), node->pivot(), node->rotation()); + } +#endif localTransform = renderNode->localTransform; } diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/selectionboxgeometry.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/selectionboxgeometry.cpp index 8296c9155d7..dc4484de9d9 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/selectionboxgeometry.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/selectionboxgeometry.cpp @@ -192,7 +192,11 @@ void SelectionBoxGeometry::doUpdateGeometry() m = targetRN->parent->globalTransform; } rootRN->localTransform = m; +#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0) rootRN->markDirty(QSSGRenderNode::TransformDirtyFlag::TransformNotDirty); +#else + rootRN->markDirty(QSSGRenderNode::DirtyFlag::TransformDirty); +#endif rootRN->calculateGlobalVariables(); } else if (!m_spatialNodeUpdatePending) { // Necessary spatial nodes do not yet exist. Defer selection box creation one frame. @@ -236,8 +240,15 @@ void SelectionBoxGeometry::getBounds( if (node != m_targetNode) { if (renderNode) { +#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0) if (renderNode->flags.testFlag(QSSGRenderNode::Flag::TransformDirty)) renderNode->calculateLocalTransform(); +#else + if (renderNode->isDirty(QSSGRenderNode::DirtyFlag::TransformDirty)) { + renderNode->localTransform = QSSGRenderNode::calculateTransformMatrix( + node->position(), node->scale(), node->pivot(), node->rotation()); + } +#endif localTransform = renderNode->localTransform; } trackNodeChanges(node); From 92a3ebd3ef2e867b4bf681e3df8c099d55362748 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 3 Jun 2022 16:19:05 +0300 Subject: [PATCH 14/17] QmlDesigner: Fix crash on project load Creating material library node in response to model change notifications is problematic, so don't do that. Fixes: QDS-7075 Change-Id: Ib688d71223a851b8a98e1c8fcfe598f6decdaf16 Reviewed-by: Mahmoud Badri --- .../components/materialeditor/materialeditorview.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp index 8476f0910a7..29a74304d80 100644 --- a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp @@ -567,8 +567,6 @@ void MaterialEditorView::modelAttached(Model *model) m_hasQuick3DImport = model->hasImport("QtQuick3D"); - ensureMaterialLibraryNode(); - if (!m_setupCompleted) { reloadQml(); m_setupCompleted = true; @@ -742,7 +740,6 @@ void MaterialEditorView::importsChanged(const QList &addedImports, const m_hasQuick3DImport = model()->hasImport("QtQuick3D"); m_qmlBackEnd->contextObject()->setHasQuick3DImport(m_hasQuick3DImport); - ensureMaterialLibraryNode(); // create the material lib if Quick3D import is added resetView(); } From d0af1c03168cfa687b2bb036c740f37d95142121 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 3 Jun 2022 17:20:47 +0300 Subject: [PATCH 15/17] QmlDesigner: Fix typo in module name in subclass checks Change-Id: I3c235a742450640869128500c21824c7b96a8ee5 Reviewed-by: Mahmoud Badri --- .../designercore/imagecache/imagecachecollector.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/imagecache/imagecachecollector.cpp b/src/plugins/qmldesigner/designercore/imagecache/imagecachecollector.cpp index 7890086bd5f..429ca328afd 100644 --- a/src/plugins/qmldesigner/designercore/imagecache/imagecachecollector.cpp +++ b/src/plugins/qmldesigner/designercore/imagecache/imagecachecollector.cpp @@ -97,8 +97,8 @@ void ImageCacheCollector::start(Utils::SmallStringView name, model->setRewriterView(&rewriterView); bool is3DRoot = !rewriterView.inErrorState() - && (rewriterView.rootModelNode().isSubclassOf("Quick3D.Node") - || rewriterView.rootModelNode().isSubclassOf("Quick3D.Material")); + && (rewriterView.rootModelNode().isSubclassOf("QtQuick3D.Node") + || rewriterView.rootModelNode().isSubclassOf("QtQuick3D.Material")); if (rewriterView.inErrorState() || (!rewriterView.rootModelNode().metaInfo().isGraphicalItem() && !is3DRoot)) { From 3335698fba0617f2d4a2570b5d5b940f10855c09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Str=C3=B8mme?= Date: Tue, 22 Mar 2022 12:57:46 +0100 Subject: [PATCH 16/17] Import3D: Update call to importFile() after change in QtQuick3d The function in QtQuick3d will from Qt 6.4.0 accept the json object directly meaning it's no longer necessary to convert to a variant map first. Change-Id: If180672963cbfea78582f245431e246f84111c9b Reviewed-by: Miikka Heikkinen Reviewed-by: Qt CI Bot Reviewed-by: Mahmoud Badri --- .../qml/qmlpuppet/qml2puppet/import3d/import3d.cpp | 7 ++++++- .../instances/qt5informationnodeinstanceserver.cpp | 13 +++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/import3d/import3d.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/import3d/import3d.cpp index 1f24aaca8f8..2bc6135ce9b 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/import3d/import3d.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/import3d/import3d.cpp @@ -52,7 +52,12 @@ void import3D(const QString &sourceAsset, const QString &outDir, const QString & if (!optDoc.isNull() && optDoc.isObject()) { QJsonObject optObj = optDoc.object(); - if (importer->importFile(sourceAsset, outDir, optObj.toVariantMap(), &errorStr) +#if (QT_VERSION >= QT_VERSION_CHECK(6, 4, 0)) + const auto &optionsMap = optObj; +#else + const auto optionsMap = optObj.toVariantMap(); +#endif // QT_VERSION >= 6.4.0 + if (importer->importFile(sourceAsset, outDir, optionsMap, &errorStr) != QSSGAssetImportManager::ImportState::Success) { } } else { diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index 4b369bb1c5a..effa871ce6d 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -118,6 +118,7 @@ #endif #ifdef IMPORT_QUICK3D_ASSETS +#include #include #endif @@ -303,7 +304,15 @@ void Qt5InformationNodeInstanceServer::resolveImportSupport() #ifdef IMPORT_QUICK3D_ASSETS QSSGAssetImportManager importManager; const QHash supportedExtensions = importManager.getSupportedExtensions(); - const QHash supportedOptions = importManager.getAllOptions(); +#if (QT_VERSION >= QT_VERSION_CHECK(6, 4, 0)) +#define AS_VARIANT_MAP(IT) IT.value().toVariantMap() + using PluginOptionMaps = QSSGAssetImportManager::PluginOptionMaps; +#else +#define AS_VARIANT_MAP(IT) IT.value() + using PluginOptionMaps = QHash; +#endif // QT_VERSION >= 6.4.0 + + const PluginOptionMaps supportedOptions = importManager.getAllOptions(); QVariantMap supportMap; @@ -317,7 +326,7 @@ void Qt5InformationNodeInstanceServer::resolveImportSupport() QVariantMap optMap; auto itOpt = supportedOptions.constBegin(); while (itOpt != supportedOptions.constEnd()) { - optMap.insert(itOpt.key(), itOpt.value()); + optMap.insert(itOpt.key(), AS_VARIANT_MAP(itOpt)); ++itOpt; } From 62ff1c9b52b0a16e0581cb8b8a86e46cbc39dd2c Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 6 Jun 2022 13:20:03 +0300 Subject: [PATCH 17/17] QmlDesigner: Add material library to 3D application project template Fixes: QDS-7065 Change-Id: Ifd270312c352d47facd32ff50543003171c0f718 Reviewed-by: Reviewed-by: Mahmoud Badri --- .../projects/application-3d/Screen01.ui.qml.tpl | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/application-3d/Screen01.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/application-3d/Screen01.ui.qml.tpl index 1da5c8844ba..338621b72e0 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/application-3d/Screen01.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/application-3d/Screen01.ui.qml.tpl @@ -49,13 +49,18 @@ Rectangle { id: cubeModel eulerRotation.y: 45 eulerRotation.x: 30 - materials: cubeMaterial + materials: defaultMaterial source: "#Cube" - DefaultMaterial { - id: cubeMaterial - diffuseColor: "#4aee45" - } } } } + + Item { + id: __materialLibrary__ + DefaultMaterial { + id: defaultMaterial + objectName: "Default Material" + diffuseColor: "#4aee45" + } + } }