From 269738d7e5a080a59b3478d3fe1277040eea56b9 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 7 Mar 2023 16:05:41 +0200 Subject: [PATCH] QmlDesigner: Force QDS compatibility mode 3D import option QDS requires 3D imports to use QDS compatibility mode to work correctly, so we force designStudioWorkarounds option on in all imports we do and hide the option from UI so user can't toggle it off. Since designStudioWorkarounds supercedes expandValueComponents option, we also hide that as setting it has no effect. Fixes: QDS-9219 Change-Id: Id40a45338ea630228f59b111703eba661ebd357b Reviewed-by: Mahmoud Badri --- .../itemlibraryassetimportdialog.cpp | 20 ++++++++++++++++++- .../itemlibraryassetimportdialog.h | 1 + 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp index ab829f1e6f2..23956dd2684 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp @@ -61,6 +61,9 @@ const int labelMinWidth = 130; const int controlMinWidth = 65; const int columnSpacing = 16; +constexpr QStringView qdsWorkaroundsKey{u"designStudioWorkarounds"}; +constexpr QStringView expandValuesKey{u"expandValueComponents"}; + } // namespace ItemLibraryAssetImportDialog::ItemLibraryAssetImportDialog( @@ -170,6 +173,11 @@ ItemLibraryAssetImportDialog::ItemLibraryAssetImportDialog( while (optIt != supportedOpts.constEnd()) { QJsonObject options = QJsonObject::fromVariantMap(qvariant_cast(optIt.value())); m_importOptions << options.value("options").toObject(); + if (m_importOptions.last().contains(qdsWorkaroundsKey)) { + QJsonObject optObj = m_importOptions.last()[qdsWorkaroundsKey].toObject(); + optObj.insert("value", QJsonValue{true}); + m_importOptions.last().insert(qdsWorkaroundsKey, optObj); + } auto it = defaultOpts.constBegin(); while (it != defaultOpts.constEnd()) { if (m_importOptions.last().contains(it.key())) { @@ -475,7 +483,7 @@ QGridLayout *ItemLibraryAssetImportDialog::createOptionsGrid( QJsonObject &options = m_importOptions[optionsIndex]; const auto optKeys = options.keys(); for (const auto &optKey : optKeys) { - if (!advanced && !isSimpleOption(optKey)) + if ((!advanced && !isSimpleOption(optKey)) || isHiddenOption(optKey)) continue; QJsonObject optObj = options.value(optKey).toObject(); const QString optName = optObj.value("name").toString(); @@ -837,6 +845,16 @@ bool ItemLibraryAssetImportDialog::isSimpleOption(const QString &id) return simpleOptions.contains(id); } +bool ItemLibraryAssetImportDialog::isHiddenOption(const QString &id) +{ + static QList hiddenOptions { + qdsWorkaroundsKey, + expandValuesKey // Hidden because qdsWorkaroundsKey we force true implies this + }; + + return hiddenOptions.contains(id); +} + void ItemLibraryAssetImportDialog::resizeEvent(QResizeEvent *event) { m_dialogHeight = event->size().height(); diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.h index e795bba7620..2ecf7795e61 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.h @@ -67,6 +67,7 @@ private: bool isSimpleGroup(const QString &id); bool isSimpleOption(const QString &id); + bool isHiddenOption(const QString &id); Ui::ItemLibraryAssetImportDialog *ui = nullptr; Utils::OutputFormatter *m_outputFormatter = nullptr;