diff options
author | Vikas Pachdha <vikas.pachdha@qt.io> | 2020-06-26 21:03:05 +0200 |
---|---|---|
committer | Vikas Pachdha <vikas.pachdha@qt.io> | 2020-06-30 08:37:06 +0000 |
commit | d8e3bc43b579fe23d81792f77d6e0b734c083b16 (patch) | |
tree | c25268f6c96c547f7d5c3760eefd4d47cd38e915 /src/plugins/qmldesigner/assetexporterplugin | |
parent | fbb1fb3bf26e27be6092cc8b38b78e31233f4fe0 (diff) |
AssetExport: Let user cancel the export
Change-Id: I6c2ee983bf9633744a74ad1c1f01fda4cdefd0ca
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner/assetexporterplugin')
3 files changed, 21 insertions, 5 deletions
diff --git a/src/plugins/qmldesigner/assetexporterplugin/assetexportdialog.cpp b/src/plugins/qmldesigner/assetexporterplugin/assetexportdialog.cpp index 0b0c3c8af8..0de2a1b08d 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/assetexportdialog.cpp +++ b/src/plugins/qmldesigner/assetexporterplugin/assetexportdialog.cpp @@ -97,6 +97,7 @@ AssetExportDialog::AssetExportDialog(const Utils::FilePath &exportPath, switchView(false); connect(m_ui->buttonBox->button(QDialogButtonBox::Cancel), &QPushButton::clicked, [this]() { + m_ui->buttonBox->button(QDialogButtonBox::Cancel)->setEnabled(false); m_assetExporter.cancel(); }); diff --git a/src/plugins/qmldesigner/assetexporterplugin/assetexporter.cpp b/src/plugins/qmldesigner/assetexporterplugin/assetexporter.cpp index 5f3b46b7dc..bf2b53e4b5 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/assetexporter.cpp +++ b/src/plugins/qmldesigner/assetexporterplugin/assetexporter.cpp @@ -129,8 +129,11 @@ void AssetExporter::exportQml(const Utils::FilePaths &qmlFiles, const Utils::Fil void AssetExporter::cancel() { - // TODO Cancel export - m_assetDumper.reset(); + if (!m_cancelled) { + ExportNotification::addInfo(tr("Cancelling export.")); + m_assetDumper.reset(); + m_cancelled = true; + } } bool AssetExporter::isBusy() const @@ -142,8 +145,11 @@ bool AssetExporter::isBusy() const Utils::FilePath AssetExporter::exportAsset(const QmlObjectNode &node, const QString &uuid) { + if (m_cancelled) + return {}; Utils::FilePath assetPath = m_exportPath.pathAppended(QString("assets/%1.png").arg(uuid)); - m_assetDumper->dumpAsset(node.toQmlItemNode().instanceRenderPixmap(), assetPath); + if (m_assetDumper) + m_assetDumper->dumpAsset(node.toQmlItemNode().instanceRenderPixmap(), assetPath); return assetPath; } @@ -207,7 +213,7 @@ void AssetExporter::triggerLoadNextFile() void AssetExporter::loadNextFile() { - if (m_exportFiles.isEmpty()) { + if (m_cancelled || m_exportFiles.isEmpty()) { notifyProgress(0.8); m_currentState.change(ParsingState::ParsingFinished); writeMetadata(); @@ -223,6 +229,13 @@ void AssetExporter::loadNextFile() void AssetExporter::writeMetadata() const { + if (m_cancelled) { + notifyProgress(1.0); + ExportNotification::addInfo(tr("Export cancelled.")); + m_currentState.change(ParsingState::ExportingDone); + return; + } + Utils::FilePath metadataPath = m_exportPath.pathAppended(m_exportPath.fileName() + ".metadata"); ExportNotification::addInfo(tr("Writing metadata to file %1."). arg(metadataPath.toUserOutput())); @@ -243,7 +256,8 @@ void AssetExporter::writeMetadata() const } notifyProgress(1.0); ExportNotification::addInfo(tr("Export finished.")); - m_assetDumper->quitDumper(); + if (m_assetDumper) + m_assetDumper->quitDumper(); m_currentState.change(ParsingState::ExportingDone); } diff --git a/src/plugins/qmldesigner/assetexporterplugin/assetexporter.h b/src/plugins/qmldesigner/assetexporterplugin/assetexporter.h index 377142a16c..508147fa06 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/assetexporter.h +++ b/src/plugins/qmldesigner/assetexporterplugin/assetexporter.h @@ -104,6 +104,7 @@ private: QJsonArray m_components; QSet<QByteArray> m_usedHashes; std::unique_ptr<AssetDumper> m_assetDumper; + bool m_cancelled = false; }; QDebug operator<< (QDebug os, const QmlDesigner::AssetExporter::ParsingState& s); |