aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/assetexporterplugin
diff options
context:
space:
mode:
authorVikas Pachdha <vikas.pachdha@qt.io>2020-06-26 21:03:05 +0200
committerVikas Pachdha <vikas.pachdha@qt.io>2020-06-30 08:37:06 +0000
commitd8e3bc43b579fe23d81792f77d6e0b734c083b16 (patch)
treec25268f6c96c547f7d5c3760eefd4d47cd38e915 /src/plugins/qmldesigner/assetexporterplugin
parentfbb1fb3bf26e27be6092cc8b38b78e31233f4fe0 (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')
-rw-r--r--src/plugins/qmldesigner/assetexporterplugin/assetexportdialog.cpp1
-rw-r--r--src/plugins/qmldesigner/assetexporterplugin/assetexporter.cpp24
-rw-r--r--src/plugins/qmldesigner/assetexporterplugin/assetexporter.h1
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);