diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2023-02-26 20:21:11 +0100 |
|---|---|---|
| committer | Admiral H. Curtiss <pikachu025@gmail.com> | 2023-02-28 20:31:55 +0100 |
| commit | fe26b54efde06ef0f65874b70ea33e57cc0ff3e4 (patch) | |
| tree | e11a314e25cff8216acfa0b97aa102f2a2a47ede /Source/Core | |
| parent | 435d8c39ee0144d76a6ca5b15f73331de4c0b2a1 (diff) | |
Qt/WiiPane: Add progress window for SD card conversion.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/DolphinQt/Settings/WiiPane.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/Source/Core/DolphinQt/Settings/WiiPane.cpp b/Source/Core/DolphinQt/Settings/WiiPane.cpp index dd6eb0aafd..40674ece3a 100644 --- a/Source/Core/DolphinQt/Settings/WiiPane.cpp +++ b/Source/Core/DolphinQt/Settings/WiiPane.cpp @@ -3,6 +3,8 @@ #include "DolphinQt/Settings/WiiPane.h" +#include <future> + #include <QCheckBox> #include <QComboBox> #include <QDir> @@ -30,6 +32,7 @@ #include "DolphinQt/QtUtils/DolphinFileDialog.h" #include "DolphinQt/QtUtils/ModalMessageBox.h" #include "DolphinQt/QtUtils/NonDefaultQPushButton.h" +#include "DolphinQt/QtUtils/ParallelProgressDialog.h" #include "DolphinQt/QtUtils/SignalBlocking.h" #include "DolphinQt/Settings.h" #include "DolphinQt/Settings/USBDeviceAddToWhitelistDialog.h" @@ -228,7 +231,17 @@ void WiiPane::CreateSDCard() QMessageBox::Yes | QMessageBox::No); if (result == QMessageBox::Yes) { - if (!Common::SyncSDFolderToSDImage([]() { return false; }, false)) + ParallelProgressDialog progress_dialog(tr("Converting..."), tr("Cancel"), 0, 0, this); + progress_dialog.GetRaw()->setWindowModality(Qt::WindowModal); + progress_dialog.GetRaw()->setWindowTitle(tr("Progress")); + auto success = std::async(std::launch::async, [&] { + const bool good = Common::SyncSDFolderToSDImage( + [&progress_dialog]() { return progress_dialog.WasCanceled(); }, false); + progress_dialog.Reset(); + return good; + }); + progress_dialog.GetRaw()->exec(); + if (!success.get()) ModalMessageBox::warning(this, tr("Convert Folder to File Now"), tr("Conversion failed.")); } }); @@ -242,7 +255,17 @@ void WiiPane::CreateSDCard() QMessageBox::Yes | QMessageBox::No); if (result == QMessageBox::Yes) { - if (!Common::SyncSDImageToSDFolder([]() { return false; })) + ParallelProgressDialog progress_dialog(tr("Converting..."), tr("Cancel"), 0, 0, this); + progress_dialog.GetRaw()->setWindowModality(Qt::WindowModal); + progress_dialog.GetRaw()->setWindowTitle(tr("Progress")); + auto success = std::async(std::launch::async, [&] { + const bool good = Common::SyncSDImageToSDFolder( + [&progress_dialog]() { return progress_dialog.WasCanceled(); }); + progress_dialog.Reset(); + return good; + }); + progress_dialog.GetRaw()->exec(); + if (!success.get()) ModalMessageBox::warning(this, tr("Convert File to Folder Now"), tr("Conversion failed.")); } }); |
