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 <mahmoud.badri@qt.io>
This commit is contained in:
Miikka Heikkinen
2023-03-07 16:05:41 +02:00
parent 333ebb5bc2
commit 269738d7e5
2 changed files with 20 additions and 1 deletions

View File

@@ -61,6 +61,9 @@ const int labelMinWidth = 130;
const int controlMinWidth = 65; const int controlMinWidth = 65;
const int columnSpacing = 16; const int columnSpacing = 16;
constexpr QStringView qdsWorkaroundsKey{u"designStudioWorkarounds"};
constexpr QStringView expandValuesKey{u"expandValueComponents"};
} // namespace } // namespace
ItemLibraryAssetImportDialog::ItemLibraryAssetImportDialog( ItemLibraryAssetImportDialog::ItemLibraryAssetImportDialog(
@@ -170,6 +173,11 @@ ItemLibraryAssetImportDialog::ItemLibraryAssetImportDialog(
while (optIt != supportedOpts.constEnd()) { while (optIt != supportedOpts.constEnd()) {
QJsonObject options = QJsonObject::fromVariantMap(qvariant_cast<QVariantMap>(optIt.value())); QJsonObject options = QJsonObject::fromVariantMap(qvariant_cast<QVariantMap>(optIt.value()));
m_importOptions << options.value("options").toObject(); 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(); auto it = defaultOpts.constBegin();
while (it != defaultOpts.constEnd()) { while (it != defaultOpts.constEnd()) {
if (m_importOptions.last().contains(it.key())) { if (m_importOptions.last().contains(it.key())) {
@@ -475,7 +483,7 @@ QGridLayout *ItemLibraryAssetImportDialog::createOptionsGrid(
QJsonObject &options = m_importOptions[optionsIndex]; QJsonObject &options = m_importOptions[optionsIndex];
const auto optKeys = options.keys(); const auto optKeys = options.keys();
for (const auto &optKey : optKeys) { for (const auto &optKey : optKeys) {
if (!advanced && !isSimpleOption(optKey)) if ((!advanced && !isSimpleOption(optKey)) || isHiddenOption(optKey))
continue; continue;
QJsonObject optObj = options.value(optKey).toObject(); QJsonObject optObj = options.value(optKey).toObject();
const QString optName = optObj.value("name").toString(); const QString optName = optObj.value("name").toString();
@@ -837,6 +845,16 @@ bool ItemLibraryAssetImportDialog::isSimpleOption(const QString &id)
return simpleOptions.contains(id); return simpleOptions.contains(id);
} }
bool ItemLibraryAssetImportDialog::isHiddenOption(const QString &id)
{
static QList<QStringView> hiddenOptions {
qdsWorkaroundsKey,
expandValuesKey // Hidden because qdsWorkaroundsKey we force true implies this
};
return hiddenOptions.contains(id);
}
void ItemLibraryAssetImportDialog::resizeEvent(QResizeEvent *event) void ItemLibraryAssetImportDialog::resizeEvent(QResizeEvent *event)
{ {
m_dialogHeight = event->size().height(); m_dialogHeight = event->size().height();

View File

@@ -67,6 +67,7 @@ private:
bool isSimpleGroup(const QString &id); bool isSimpleGroup(const QString &id);
bool isSimpleOption(const QString &id); bool isSimpleOption(const QString &id);
bool isHiddenOption(const QString &id);
Ui::ItemLibraryAssetImportDialog *ui = nullptr; Ui::ItemLibraryAssetImportDialog *ui = nullptr;
Utils::OutputFormatter *m_outputFormatter = nullptr; Utils::OutputFormatter *m_outputFormatter = nullptr;