diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp index 549f5e87e23..4c3c6a4a2e3 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp @@ -1288,6 +1288,7 @@ void ItemLibraryAssetImportDialog::onImportReadyForPreview( if (!data.previewData.name.isEmpty()) { QVariantHash msgData; msgData.insert("name", data.previewData.name); + msgData.insert("qmlName", data.previewData.qmlName); msgData.insert("folder", data.previewData.folderName); m_nodeInstanceView->view3DAction(View3DActionType::Import3dAddPreviewModel, msgData); } diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimporter.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimporter.cpp index 55e5c19e7e9..c0dd7f4b2b8 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimporter.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimporter.cpp @@ -290,10 +290,12 @@ bool ItemLibraryAssetImporter::preParseQuick3DAsset(const QString &file, ParseDa currentChar = QLatin1Char('_'); } const QChar firstChar = pd.assetName[0]; - if (firstChar.isDigit()) - pd.assetName[0] = QLatin1Char('_'); - if (firstChar.isLower()) + if (firstChar.isDigit()) { + // Match quick3d importer logic on starting digit + pd.assetName.prepend("Node"); + } else if (firstChar.isLower()) { pd.assetName[0] = firstChar.toUpper(); + } } pd.targetDirPath = pd.targetDir.filePath(pd.assetName); @@ -401,6 +403,8 @@ void ItemLibraryAssetImporter::postParseQuick3DAsset(ParseData &pd) while (qmlIt.hasNext()) { qmlIt.next(); QFileInfo fi = QFileInfo(qmlIt.filePath()); + if (pd.importedQmlName.isEmpty()) + pd.importedQmlName = fi.baseName(); qmlInfo.append(fi.baseName()); qmlInfo.append(' '); qmlInfo.append(version); @@ -661,6 +665,7 @@ void ItemLibraryAssetImporter::postImport() PreviewData data; data.name = pd.assetName; data.folderName = pd.outDir.dirName(); + data.qmlName = pd.importedQmlName; data.renderedOptions = pd.options; data.currentOptions = pd.options; data.optionsIndex = pd.optionsIndex; diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimporter.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimporter.h index 0739976b77d..dcdc1150a6b 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimporter.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimporter.h @@ -56,6 +56,7 @@ public: QJsonObject currentOptions; QString name; QString folderName; + QString qmlName; QString type; qint64 size; }; @@ -81,6 +82,7 @@ private: QFileInfo sourceInfo; QString assetName; QString originalAssetName; + QString importedQmlName; qint64 assetSize; int importId = -1; int optionsIndex = -1; diff --git a/src/tools/qml2puppet/qml2puppet/instances/qt5import3dnodeinstanceserver.cpp b/src/tools/qml2puppet/qml2puppet/instances/qt5import3dnodeinstanceserver.cpp index 7d86d6bc982..978fcbe8f65 100644 --- a/src/tools/qml2puppet/qml2puppet/instances/qt5import3dnodeinstanceserver.cpp +++ b/src/tools/qml2puppet/qml2puppet/instances/qt5import3dnodeinstanceserver.cpp @@ -115,6 +115,7 @@ void Qt5Import3dNodeInstanceServer::view3DAction([[maybe_unused]] const View3DAc case View3DActionType::Import3dAddPreviewModel: { const QVariantHash cmd = command.value().toHash(); const QString name = cmd["name"].toString(); + const QString qmlName = cmd["qmlName"].toString(); const QString folder = cmd["folder"].toString(); bool isUpdate = m_previewData.contains(name); @@ -136,7 +137,7 @@ void Qt5Import3dNodeInstanceServer::view3DAction([[maybe_unused]] const View3DAc } QFileInfo fi(fileUrl().toLocalFile()); - QString compPath = fi.absolutePath() + '/' + folder + '/' + name + ".qml"; + QString compPath = fi.absolutePath() + '/' + folder + '/' + qmlName + ".qml"; QQmlComponent comp(engine(), compPath, QQmlComponent::PreferSynchronous); data.node = qobject_cast(comp.create(context())); if (data.node) {