diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp index 8af81a7b82e..1cbced4dfac 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp @@ -215,8 +215,6 @@ ItemLibraryAssetImportDialog::ItemLibraryAssetImportDialog( connect(ui->closeButton, &QPushButton::clicked, this, &ItemLibraryAssetImportDialog::onClose); - connect(ui->acceptButton, &QPushButton::clicked, - this, &ItemLibraryAssetImportDialog::onAccept); connect(ui->tabWidget, &QTabWidget::currentChanged, this, &ItemLibraryAssetImportDialog::updateUi); connect(canvas(), &Import3dCanvas::requestImageUpdate, @@ -239,14 +237,22 @@ ItemLibraryAssetImportDialog::ItemLibraryAssetImportDialog( connect(&m_importer, &ItemLibraryAssetImporter::importReadyForPreview, this, &ItemLibraryAssetImportDialog::onImportReadyForPreview); - addInfo(tr("Select import options and press \"Import\" to import the following files:")); - for (const auto &file : std::as_const(m_quick3DFiles)) - addInfo(file); - connect(ui->advancedSettingsButton, &QPushButton::clicked, this, &ItemLibraryAssetImportDialog::toggleAdvanced); QTimer::singleShot(0, this, &ItemLibraryAssetImportDialog::updateUi); + + if (m_quick3DFiles.size() != 1) { + addInfo(tr("Select import options and press \"Import\" to import the following files:")); + } else { + addInfo(tr("Importing:")); + QTimer::singleShot(0, this, &ItemLibraryAssetImportDialog::onImport); + } + + for (const auto &file : std::as_const(m_quick3DFiles)) + addInfo(file); + + updateImportButtonState(); } ItemLibraryAssetImportDialog::~ItemLibraryAssetImportDialog() @@ -495,6 +501,7 @@ QGridLayout *ItemLibraryAssetImportDialog::createOptionsGrid( QJsonValue value(optCheck->isChecked()); optObj.insert("value", value); m_importOptions[optionsIndex].insert(optKey, optObj); + updateImportButtonState(); }); } else { // Simple options also exist in advanced, so don't connect simple controls directly @@ -502,13 +509,17 @@ QGridLayout *ItemLibraryAssetImportDialog::createOptionsGrid( auto *advCheck = qobject_cast( m_labelToControlWidgetMaps[optionsIndex].value(optKey)); if (advCheck) { - QObject::connect(optCheck, &QCheckBox::toggled, this, [optCheck, advCheck]() { - if (advCheck->isChecked() != optCheck->isChecked()) + QObject::connect(optCheck, &QCheckBox::toggled, this, [this, optCheck, advCheck]() { + if (advCheck->isChecked() != optCheck->isChecked()) { advCheck->setChecked(optCheck->isChecked()); + updateImportButtonState(); + } }); - QObject::connect(advCheck, &QCheckBox::toggled, this, [optCheck, advCheck]() { - if (advCheck->isChecked() != optCheck->isChecked()) + QObject::connect(advCheck, &QCheckBox::toggled, this, [this, optCheck, advCheck]() { + if (advCheck->isChecked() != optCheck->isChecked()) { optCheck->setChecked(advCheck->isChecked()); + updateImportButtonState(); + } }); } } @@ -544,6 +555,7 @@ QGridLayout *ItemLibraryAssetImportDialog::createOptionsGrid( QJsonValue value(optSpin->value()); optObj.insert("value", value); m_importOptions[optionsIndex].insert(optKey, optObj); + updateImportButtonState(); }); } else { auto *advSpin = qobject_cast( @@ -551,14 +563,18 @@ QGridLayout *ItemLibraryAssetImportDialog::createOptionsGrid( if (advSpin) { // Connect corresponding advanced control QObject::connect(optSpin, &QDoubleSpinBox::valueChanged, - this, [optSpin, advSpin] { - if (advSpin->value() != optSpin->value()) + this, [this, optSpin, advSpin] { + if (advSpin->value() != optSpin->value()) { advSpin->setValue(optSpin->value()); + updateImportButtonState(); + } }); QObject::connect(advSpin, &QDoubleSpinBox::valueChanged, - this, [optSpin, advSpin] { - if (advSpin->value() != optSpin->value()) + this, [this, optSpin, advSpin] { + if (advSpin->value() != optSpin->value()) { optSpin->setValue(advSpin->value()); + updateImportButtonState(); + } }); } } @@ -994,6 +1010,11 @@ void ItemLibraryAssetImportDialog::setCloseButtonState(bool importing) ui->closeButton->setText(importing ? tr("Cancel") : tr("Close")); } +void ItemLibraryAssetImportDialog::updateImportButtonState() +{ + ui->importButton->setText(m_previewOptions == m_importOptions ? tr("Accept") : tr("Import")); +} + void ItemLibraryAssetImportDialog::addError(const QString &error, const QString &srcPath) { m_closeOnFinish = false; @@ -1013,8 +1034,14 @@ void ItemLibraryAssetImportDialog::addInfo(const QString &info, const QString &s void ItemLibraryAssetImportDialog::onImport() { - ui->acceptButton->setEnabled(false); ui->importButton->setEnabled(false); + + if (!m_previewCompName.isEmpty() && m_previewOptions == m_importOptions) { + cleanupPreviewPuppet(); + m_importer.finalizeQuick3DImport(); + return; + } + setCloseButtonState(true); ui->progressBar->setValue(0); @@ -1041,15 +1068,17 @@ void ItemLibraryAssetImportDialog::setImportProgress(int value, const QString &t void ItemLibraryAssetImportDialog::onImportReadyForPreview(const QString &path, const QString &compName) { + addInfo(tr("Import is ready for preview.")); + if (m_previewCompName.isEmpty()) + addInfo(tr("Click \"Accept\" to finish the import or adjust options and click \"Import\" to import again.")); + m_previewFile = Utils::FilePath::fromString(path).pathAppended(m_importer.previewFileName()); m_previewCompName = compName; + m_previewOptions = m_importOptions; QTimer::singleShot(0, this, &ItemLibraryAssetImportDialog::startPreview); - ui->acceptButton->setEnabled(true); ui->importButton->setEnabled(true); - - addInfo(tr("Import is ready for preview.")); - addInfo(tr("Click \"Accept\" to finish the import or adjust options an click \"Import\" to import again.")); + updateImportButtonState(); } void ItemLibraryAssetImportDialog::onRequestImageUpdate() @@ -1093,7 +1122,6 @@ void ItemLibraryAssetImportDialog::onImportFinished() void ItemLibraryAssetImportDialog::onClose() { ui->importButton->setEnabled(false); - ui->acceptButton->setEnabled(false); m_explicitClose = true; doClose(); } @@ -1113,16 +1141,6 @@ void ItemLibraryAssetImportDialog::doClose() } } -void ItemLibraryAssetImportDialog::onAccept() -{ - cleanupPreviewPuppet(); - - ui->importButton->setEnabled(false); - ui->acceptButton->setEnabled(false); - - m_importer.finalizeQuick3DImport(); -} - void ItemLibraryAssetImportDialog::toggleAdvanced() { m_advancedMode = !m_advancedMode; diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.h index 635be6db696..e7c49330561 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.h @@ -63,6 +63,7 @@ private slots: private: void setCloseButtonState(bool importing); + void updateImportButtonState(); void onImport(); void setImportProgress(int value, const QString &text); @@ -73,7 +74,6 @@ private: void onImportFinished(); void onClose(); void doClose(); - void onAccept(); void toggleAdvanced(); void createTab(const QString &tabLabel, int optionsIndex, const QJsonObject &groups); @@ -110,6 +110,7 @@ private: QString m_quick3DImportPath; ItemLibraryAssetImporter m_importer; QVector m_importOptions; + QVector m_previewOptions; QHash m_extToImportOptionsMap; QSet m_preselectedFilesForOverwrite; bool m_closeOnFinish = true; diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.ui b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.ui index a35875a5eb7..e0b9d925fca 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.ui +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.ui @@ -151,16 +151,6 @@ - - - - false - - - Accept - - -