aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Ava/UI/Helpers
diff options
context:
space:
mode:
authorIsaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com>2024-01-13 00:41:57 +0000
committerGitHub <noreply@github.com>2024-01-13 01:41:57 +0100
commitf037fcba9a5713e68cadbbf8a823913943ac2626 (patch)
treebd9ea67a604b80a9801fa799a5e68f1af97c6c36 /src/Ryujinx.Ava/UI/Helpers
parent59a0c7cfd86e618ea947e498448077ecc362e366 (diff)
Ava UI: Better Controller Applet (#5756)
* Start work on better Controller Applet * Don’t require title * UI improvements * Border around TBD area * Formatting * Better SVGs * Add missing margin * Use Locale * Rename function * Make buttons ourselves * Make the buttons do shit * Formatting * Adjust SVGs * Fix Open Settings Window * Make field readonly * Final tweaks * Update src/Ryujinx.Ava/UI/Applet/AvaHostUiHandler.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Update src/Ryujinx.Ava/UI/Applet/ControllerAppletDialog.axaml.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * Update src/Ryujinx.Ava/UI/Applet/ControllerAppletDialog.axaml.cs Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Move icons to Ava project * Reorder arguments * Try to focus Settings Window * Fix icons Project shenangians * Add ContentDialogHelper.ShowWindowAsync method * Fix closed SettingsWindow reference in MainWindow * Fix SettingsWindow dialog * Suggestion --------- Co-authored-by: Ac_K <Acoustik666@gmail.com> Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com>
Diffstat (limited to 'src/Ryujinx.Ava/UI/Helpers')
-rw-r--r--src/Ryujinx.Ava/UI/Helpers/ContentDialogHelper.cs40
1 files changed, 26 insertions, 14 deletions
diff --git a/src/Ryujinx.Ava/UI/Helpers/ContentDialogHelper.cs b/src/Ryujinx.Ava/UI/Helpers/ContentDialogHelper.cs
index 086de953..a57deb1a 100644
--- a/src/Ryujinx.Ava/UI/Helpers/ContentDialogHelper.cs
+++ b/src/Ryujinx.Ava/UI/Helpers/ContentDialogHelper.cs
@@ -18,6 +18,7 @@ namespace Ryujinx.Ava.UI.Helpers
public static class ContentDialogHelper
{
private static bool _isChoiceDialogOpen;
+ private static ContentDialogOverlayWindow _contentDialogOverlayWindow;
private async static Task<UserResult> ShowContentDialog(
string title,
@@ -310,16 +311,20 @@ namespace Ryujinx.Ava.UI.Helpers
public static async Task<ContentDialogResult> ShowAsync(ContentDialog contentDialog)
{
ContentDialogResult result;
-
- ContentDialogOverlayWindow contentDialogOverlayWindow = null;
+ bool isTopDialog = true;
Window parent = GetMainWindow();
+ if (_contentDialogOverlayWindow != null)
+ {
+ isTopDialog = false;
+ }
+
if (parent is MainWindow window)
{
parent.Activate();
- contentDialogOverlayWindow = new()
+ _contentDialogOverlayWindow = new ContentDialogOverlayWindow
{
Height = parent.Bounds.Height,
Width = parent.Bounds.Width,
@@ -331,14 +336,14 @@ namespace Ryujinx.Ava.UI.Helpers
void OverlayOnPositionChanged(object sender, PixelPointEventArgs e)
{
- contentDialogOverlayWindow.Position = parent.PointToScreen(new Point());
+ _contentDialogOverlayWindow.Position = parent.PointToScreen(new Point());
}
- contentDialogOverlayWindow.ContentDialog = contentDialog;
+ _contentDialogOverlayWindow.ContentDialog = contentDialog;
bool opened = false;
- contentDialogOverlayWindow.Opened += OverlayOnActivated;
+ _contentDialogOverlayWindow.Opened += OverlayOnActivated;
async void OverlayOnActivated(object sender, EventArgs e)
{
@@ -349,12 +354,12 @@ namespace Ryujinx.Ava.UI.Helpers
opened = true;
- contentDialogOverlayWindow.Position = parent.PointToScreen(new Point());
+ _contentDialogOverlayWindow.Position = parent.PointToScreen(new Point());
result = await ShowDialog();
}
- result = await contentDialogOverlayWindow.ShowDialog<ContentDialogResult>(parent);
+ result = await _contentDialogOverlayWindow.ShowDialog<ContentDialogResult>(parent);
}
else
{
@@ -363,11 +368,11 @@ namespace Ryujinx.Ava.UI.Helpers
async Task<ContentDialogResult> ShowDialog()
{
- if (contentDialogOverlayWindow is not null)
+ if (_contentDialogOverlayWindow is not null)
{
- result = await contentDialog.ShowAsync(contentDialogOverlayWindow);
+ result = await contentDialog.ShowAsync(_contentDialogOverlayWindow);
- contentDialogOverlayWindow!.Close();
+ _contentDialogOverlayWindow!.Close();
}
else
{
@@ -379,15 +384,22 @@ namespace Ryujinx.Ava.UI.Helpers
return result;
}
- if (contentDialogOverlayWindow is not null)
+ if (isTopDialog && _contentDialogOverlayWindow is not null)
{
- contentDialogOverlayWindow.Content = null;
- contentDialogOverlayWindow.Close();
+ _contentDialogOverlayWindow.Content = null;
+ _contentDialogOverlayWindow.Close();
}
return result;
}
+ public static Task ShowWindowAsync(Window dialogWindow, Window mainWindow = null)
+ {
+ mainWindow ??= GetMainWindow();
+
+ return dialogWindow.ShowDialog(_contentDialogOverlayWindow ?? mainWindow);
+ }
+
private static Window GetMainWindow()
{
if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime al)