diff --git a/src/Ryujinx/App.axaml b/src/Ryujinx/App.axaml
index d38293404..5c96f97f2 100644
--- a/src/Ryujinx/App.axaml
+++ b/src/Ryujinx/App.axaml
@@ -14,4 +14,4 @@
-
\ No newline at end of file
+
diff --git a/src/Ryujinx/App.axaml.cs b/src/Ryujinx/App.axaml.cs
index 61ccf6dd9..22c8d59de 100644
--- a/src/Ryujinx/App.axaml.cs
+++ b/src/Ryujinx/App.axaml.cs
@@ -1,5 +1,6 @@
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
+using Avalonia.Input.Platform;
using Avalonia.Markup.Xaml;
using Avalonia.Platform;
using Avalonia.Styling;
@@ -24,8 +25,11 @@ namespace Ryujinx.Ava
.ApplicationLifetime.Cast()
.MainWindow.Cast();
- public static IClassicDesktopStyleApplicationLifetime DesktopLifetime => Current!
- .ApplicationLifetime.Cast();
+ public static bool IsClipboardAvailable(out IClipboard clipboard)
+ {
+ clipboard = MainWindow.Clipboard;
+ return clipboard != null;
+ }
public override void Initialize()
{
diff --git a/src/Ryujinx/UI/Controls/ApplicationListView.axaml.cs b/src/Ryujinx/UI/Controls/ApplicationListView.axaml.cs
index d6c91956b..5fae5337a 100644
--- a/src/Ryujinx/UI/Controls/ApplicationListView.axaml.cs
+++ b/src/Ryujinx/UI/Controls/ApplicationListView.axaml.cs
@@ -1,8 +1,6 @@
using Avalonia.Controls;
-using Avalonia.Controls.Notifications;
using Avalonia.Input;
using Avalonia.Interactivity;
-using FluentAvalonia.UI.Controls;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.UI.App.Common;
@@ -58,17 +56,19 @@ namespace Ryujinx.Ava.UI.Controls
if (sender is not Button { Content: TextBlock idText })
return;
+
+ if (!App.IsClipboardAvailable(out var clipboard))
+ return;
- if (App.MainWindow.Clipboard is { } clipboard)
- {
- var appData = mwvm.Applications.FirstOrDefault(it => it.IdString == idText.Text);
- if (appData is null)
- return;
+ var appData = mwvm.Applications.FirstOrDefault(it => it.IdString == idText.Text);
+ if (appData is null)
+ return;
+
+ await clipboard.SetTextAsync(appData.IdString);
- await clipboard.SetTextAsync(appData.IdString);
-
- NotificationHelper.Show("Copied Title ID", $"{appData.Name} ({appData.IdString})", NotificationType.Information);
- }
+ NotificationHelper.ShowInformation(
+ "Copied Title ID",
+ $"{appData.Name} ({appData.IdString})");
}
}
}
diff --git a/src/Ryujinx/UI/Helpers/NotificationHelper.cs b/src/Ryujinx/UI/Helpers/NotificationHelper.cs
index 656a8b52f..74029a4b1 100644
--- a/src/Ryujinx/UI/Helpers/NotificationHelper.cs
+++ b/src/Ryujinx/UI/Helpers/NotificationHelper.cs
@@ -62,9 +62,46 @@ namespace Ryujinx.Ava.UI.Helpers
_notifications.Add(new Notification(title, text, type, delay, onClick, onClose));
}
- public static void ShowError(string message)
- {
- Show(LocaleManager.Instance[LocaleKeys.DialogErrorTitle], $"{LocaleManager.Instance[LocaleKeys.DialogErrorMessage]}\n\n{message}", NotificationType.Error);
- }
+ public static void ShowError(string message) =>
+ ShowError(
+ LocaleManager.Instance[LocaleKeys.DialogErrorTitle],
+ $"{LocaleManager.Instance[LocaleKeys.DialogErrorMessage]}\n\n{message}"
+ );
+
+ public static void ShowInformation(string title, string text, bool waitingExit = false, Action onClick = null, Action onClose = null) =>
+ Show(
+ title,
+ text,
+ NotificationType.Information,
+ waitingExit,
+ onClick,
+ onClose);
+
+ public static void ShowSuccess(string title, string text, bool waitingExit = false, Action onClick = null, Action onClose = null) =>
+ Show(
+ title,
+ text,
+ NotificationType.Success,
+ waitingExit,
+ onClick,
+ onClose);
+
+ public static void ShowWarning(string title, string text, bool waitingExit = false, Action onClick = null, Action onClose = null) =>
+ Show(
+ title,
+ text,
+ NotificationType.Warning,
+ waitingExit,
+ onClick,
+ onClose);
+
+ public static void ShowError(string title, string text, bool waitingExit = false, Action onClick = null, Action onClose = null) =>
+ Show(
+ title,
+ text,
+ NotificationType.Error,
+ waitingExit,
+ onClick,
+ onClose);
}
}