UI: Add keybinds to useful things

This commit is contained in:
Evan Husted 2024-10-19 16:39:21 -05:00
parent 59b3ff7802
commit 741eba2798
13 changed files with 88 additions and 70 deletions

View file

@ -33,7 +33,7 @@ namespace Ryujinx.Ava.UI.ViewModels
private readonly string _amiiboJsonPath;
private readonly byte[] _amiiboLogoBytes;
private readonly HttpClient _httpClient;
private readonly StyleableAppWindow _owner;
private readonly AmiiboWindow _owner;
private Bitmap _amiiboImage;
private List<AmiiboApi> _amiiboList;
@ -49,7 +49,7 @@ namespace Ryujinx.Ava.UI.ViewModels
private static readonly AmiiboJsonSerializerContext _serializerContext = new(JsonHelper.GetDefaultSerializerOptions());
public AmiiboWindowViewModel(StyleableAppWindow owner, string lastScannedAmiiboId, string titleId)
public AmiiboWindowViewModel(AmiiboWindow owner, string lastScannedAmiiboId, string titleId)
{
_owner = owner;
@ -186,6 +186,22 @@ namespace Ryujinx.Ava.UI.ViewModels
}
}
public void Scan()
{
if (AmiiboSelectedIndex > -1)
{
_owner.ScannedAmiibo = AmiiboList[AmiiboSelectedIndex];
_owner.IsScanned = true;
_owner.Close();
}
}
public void Cancel()
{
_owner.IsScanned = false;
_owner.Close();
}
public void Dispose()
{
GC.SuppressFinalize(this);

View file

@ -110,6 +110,8 @@ namespace Ryujinx.Ava.UI.ViewModels
public ApplicationData ListSelectedApplication;
public ApplicationData GridSelectedApplication;
public MainWindow Window { get; init; }
internal AppHost AppHost { get; set; }
public MainWindowViewModel()
@ -1424,7 +1426,7 @@ namespace Ryujinx.Ava.UI.ViewModels
public async Task ExitCurrentState()
{
if (WindowState == WindowState.FullScreen)
if (WindowState == MainWindow.FullScreenWindowState)
{
ToggleFullscreen();
}
@ -1710,6 +1712,28 @@ namespace Ryujinx.Ava.UI.ViewModels
});
}
public async Task OpenAmiiboWindow()
{
if (!IsAmiiboRequested)
return;
if (AppHost.Device.System.SearchingForAmiibo(out int deviceId))
{
string titleId = AppHost.Device.Processes.ActiveApplication.ProgramIdText.ToUpper();
AmiiboWindow window = new(ShowAll, LastScannedAmiiboId, titleId);
await window.ShowDialog(Window);
if (window.IsScanned)
{
ShowAll = window.ViewModel.ShowAllAmiibo;
LastScannedAmiiboId = window.ScannedAmiibo.GetId();
AppHost.Device.System.ScanAmiibo(deviceId, LastScannedAmiiboId, window.ViewModel.UseRandomUuid);
}
}
}
public void ToggleFullscreen()
{
if (Environment.TickCount64 - LastFullscreenToggle < HotKeyPressDelayMs)
@ -1719,7 +1743,7 @@ namespace Ryujinx.Ava.UI.ViewModels
LastFullscreenToggle = Environment.TickCount64;
if (WindowState == WindowState.FullScreen)
if (WindowState is not WindowState.Normal)
{
WindowState = WindowState.Normal;
@ -1730,7 +1754,7 @@ namespace Ryujinx.Ava.UI.ViewModels
}
else
{
WindowState = WindowState.FullScreen;
WindowState = MainWindow.FullScreenWindowState;
if (IsGameRunning)
{
@ -1738,7 +1762,7 @@ namespace Ryujinx.Ava.UI.ViewModels
}
}
IsFullScreen = WindowState == WindowState.FullScreen;
IsFullScreen = WindowState == MainWindow.FullScreenWindowState;
}
public static void SaveConfig()