aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava/Common/ApplicationHelper.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Ava/Common/ApplicationHelper.cs')
-rw-r--r--Ryujinx.Ava/Common/ApplicationHelper.cs31
1 files changed, 16 insertions, 15 deletions
diff --git a/Ryujinx.Ava/Common/ApplicationHelper.cs b/Ryujinx.Ava/Common/ApplicationHelper.cs
index 161ef859..8c36a636 100644
--- a/Ryujinx.Ava/Common/ApplicationHelper.cs
+++ b/Ryujinx.Ava/Common/ApplicationHelper.cs
@@ -13,6 +13,7 @@ using LibHac.Tools.Fs;
using LibHac.Tools.FsSystem;
using LibHac.Tools.FsSystem.NcaUtils;
using Ryujinx.Ava.Common.Locale;
+using Ryujinx.Ava.UI.Controls;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Common.Logging;
@@ -152,25 +153,17 @@ namespace Ryujinx.Ava.Common
string destination = await folderDialog.ShowAsync(_owner);
var cancellationToken = new CancellationTokenSource();
+ UpdateWaitWindow waitingDialog = new(
+ LocaleManager.Instance[LocaleKeys.DialogNcaExtractionTitle],
+ LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogNcaExtractionMessage, ncaSectionType, Path.GetFileName(titleFilePath)),
+ cancellationToken);
+
if (!string.IsNullOrWhiteSpace(destination))
{
Thread extractorThread = new(() =>
{
- Dispatcher.UIThread.Post(async () =>
- {
- UserResult result = await ContentDialogHelper.CreateConfirmationDialog(
- LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogNcaExtractionMessage, ncaSectionType, Path.GetFileName(titleFilePath)),
- "",
- "",
- LocaleManager.Instance[LocaleKeys.InputDialogCancel],
- LocaleManager.Instance[LocaleKeys.DialogNcaExtractionTitle]);
-
- if (result == UserResult.Cancel)
- {
- cancellationToken.Cancel();
- }
- });
-
+ Dispatcher.UIThread.Post(waitingDialog.Show);
+
using FileStream file = new(titleFilePath, FileMode.Open, FileAccess.Read);
Nca mainNca = null;
@@ -222,6 +215,8 @@ namespace Ryujinx.Ava.Common
Dispatcher.UIThread.InvokeAsync(async () =>
{
+ waitingDialog.Close();
+
await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogNcaExtractionMainNcaNotFoundErrorMessage]);
});
@@ -263,11 +258,15 @@ namespace Ryujinx.Ava.Common
Dispatcher.UIThread.InvokeAsync(async () =>
{
+ waitingDialog.Close();
+
await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogNcaExtractionCheckLogErrorMessage]);
});
}
else if (resultCode.Value.IsSuccess())
{
+ Dispatcher.UIThread.Post(waitingDialog.Close);
+
NotificationHelper.Show(
LocaleManager.Instance[LocaleKeys.DialogNcaExtractionTitle],
$"{titleName}\n\n{LocaleManager.Instance[LocaleKeys.DialogNcaExtractionSuccessMessage]}",
@@ -284,6 +283,8 @@ namespace Ryujinx.Ava.Common
Dispatcher.UIThread.InvokeAsync(async () =>
{
+ waitingDialog.Close();
+
await ContentDialogHelper.CreateErrorDialog(ex.Message);
});
}