summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2023-02-26 20:21:11 +0100
committerAdmiral H. Curtiss <pikachu025@gmail.com>2023-02-28 20:31:55 +0100
commitfe26b54efde06ef0f65874b70ea33e57cc0ff3e4 (patch)
treee11a314e25cff8216acfa0b97aa102f2a2a47ede /Source/Core
parent435d8c39ee0144d76a6ca5b15f73331de4c0b2a1 (diff)
Qt/WiiPane: Add progress window for SD card conversion.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DolphinQt/Settings/WiiPane.cpp27
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."));
}
});