Move around VMs + Make most settings reactive
This commit is contained in:
parent
c628cd7af5
commit
2281b3b59e
23 changed files with 390 additions and 89 deletions
|
@ -1,5 +1,6 @@
|
||||||
using Avalonia.Svg.Skia;
|
using Avalonia.Svg.Skia;
|
||||||
using Ryujinx.Ava.UI.Models.Input;
|
using Ryujinx.Ava.UI.Models.Input;
|
||||||
|
using Ryujinx.Ava.UI.ViewModels.Settings;
|
||||||
using Ryujinx.Ava.UI.Views.Input;
|
using Ryujinx.Ava.UI.Views.Input;
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.ViewModels.Input
|
namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
|
@ -54,9 +55,9 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public readonly InputViewModel ParentModel;
|
public readonly SettingsInputViewModel ParentModel;
|
||||||
|
|
||||||
public ControllerInputViewModel(InputViewModel model, GamepadInputConfig config)
|
public ControllerInputViewModel(SettingsInputViewModel model, GamepadInputConfig config)
|
||||||
{
|
{
|
||||||
ParentModel = model;
|
ParentModel = model;
|
||||||
model.NotifyChangesEvent += OnParentModelChanged;
|
model.NotifyChangesEvent += OnParentModelChanged;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using Avalonia.Svg.Skia;
|
using Avalonia.Svg.Skia;
|
||||||
using Ryujinx.Ava.UI.Models.Input;
|
using Ryujinx.Ava.UI.Models.Input;
|
||||||
|
using Ryujinx.Ava.UI.ViewModels.Settings;
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.ViewModels.Input
|
namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
{
|
{
|
||||||
|
@ -53,9 +54,9 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public readonly InputViewModel ParentModel;
|
public readonly SettingsInputViewModel ParentModel;
|
||||||
|
|
||||||
public KeyboardInputViewModel(InputViewModel model, KeyboardInputConfig config)
|
public KeyboardInputViewModel(SettingsInputViewModel model, KeyboardInputConfig config)
|
||||||
{
|
{
|
||||||
ParentModel = model;
|
ParentModel = model;
|
||||||
model.NotifyChangesEvent += OnParentModelChanged;
|
model.NotifyChangesEvent += OnParentModelChanged;
|
||||||
|
|
|
@ -9,6 +9,7 @@ using Ryujinx.Ava.Input;
|
||||||
using Ryujinx.Ava.UI.Helpers;
|
using Ryujinx.Ava.UI.Helpers;
|
||||||
using Ryujinx.Ava.UI.Models;
|
using Ryujinx.Ava.UI.Models;
|
||||||
using Ryujinx.Ava.UI.Models.Input;
|
using Ryujinx.Ava.UI.Models.Input;
|
||||||
|
using Ryujinx.Ava.UI.ViewModels.Input;
|
||||||
using Ryujinx.Ava.UI.Windows;
|
using Ryujinx.Ava.UI.Windows;
|
||||||
using Ryujinx.Common;
|
using Ryujinx.Common;
|
||||||
using Ryujinx.Common.Configuration;
|
using Ryujinx.Common.Configuration;
|
||||||
|
@ -30,9 +31,9 @@ using ConfigGamepadInputId = Ryujinx.Common.Configuration.Hid.Controller.Gamepad
|
||||||
using ConfigStickInputId = Ryujinx.Common.Configuration.Hid.Controller.StickInputId;
|
using ConfigStickInputId = Ryujinx.Common.Configuration.Hid.Controller.StickInputId;
|
||||||
using Key = Ryujinx.Common.Configuration.Hid.Key;
|
using Key = Ryujinx.Common.Configuration.Hid.Key;
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.ViewModels.Input
|
namespace Ryujinx.Ava.UI.ViewModels.Settings
|
||||||
{
|
{
|
||||||
public class InputViewModel : BaseModel, IDisposable
|
public class SettingsInputViewModel : BaseModel, IDisposable
|
||||||
{
|
{
|
||||||
private const string Disabled = "disabled";
|
private const string Disabled = "disabled";
|
||||||
private const string ProControllerResource = "Ryujinx.UI.Common/Resources/Controller_ProCon.svg";
|
private const string ProControllerResource = "Ryujinx.UI.Common/Resources/Controller_ProCon.svg";
|
||||||
|
@ -102,12 +103,6 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
get => _playerId;
|
get => _playerId;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (SettingsViewModel.IsModified)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SettingsViewModel.IsModified = false;
|
|
||||||
_playerId = value;
|
_playerId = value;
|
||||||
|
|
||||||
if (!Enum.IsDefined(typeof(PlayerIndex), _playerId))
|
if (!Enum.IsDefined(typeof(PlayerIndex), _playerId))
|
||||||
|
@ -244,7 +239,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
|
|
||||||
public InputConfig Config { get; set; }
|
public InputConfig Config { get; set; }
|
||||||
|
|
||||||
public InputViewModel(UserControl owner, SettingsViewModel settingsViewModel) : this()
|
public SettingsInputViewModel(UserControl owner, SettingsViewModel settingsViewModel) : this()
|
||||||
{
|
{
|
||||||
SettingsViewModel = settingsViewModel;
|
SettingsViewModel = settingsViewModel;
|
||||||
|
|
||||||
|
@ -269,7 +264,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public InputViewModel()
|
public SettingsInputViewModel()
|
||||||
{
|
{
|
||||||
PlayerIndexes = new ObservableCollection<PlayerModel>();
|
PlayerIndexes = new ObservableCollection<PlayerModel>();
|
||||||
Controllers = new ObservableCollection<ControllerModel>();
|
Controllers = new ObservableCollection<ControllerModel>();
|
|
@ -5,6 +5,7 @@ using LibHac.Tools.FsSystem;
|
||||||
using Ryujinx.Audio.Backends.OpenAL;
|
using Ryujinx.Audio.Backends.OpenAL;
|
||||||
using Ryujinx.Audio.Backends.SDL2;
|
using Ryujinx.Audio.Backends.SDL2;
|
||||||
using Ryujinx.Audio.Backends.SoundIo;
|
using Ryujinx.Audio.Backends.SoundIo;
|
||||||
|
using Ryujinx.Ava;
|
||||||
using Ryujinx.Ava.Common.Locale;
|
using Ryujinx.Ava.Common.Locale;
|
||||||
using Ryujinx.Ava.UI.Helpers;
|
using Ryujinx.Ava.UI.Helpers;
|
||||||
using Ryujinx.Ava.UI.Models.Input;
|
using Ryujinx.Ava.UI.Models.Input;
|
||||||
|
@ -27,7 +28,7 @@ using System.Runtime.InteropServices;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
|
using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.ViewModels
|
namespace Ryujinx.Ava.UI.ViewModels.Settings
|
||||||
{
|
{
|
||||||
public class SettingsViewModel : BaseModel
|
public class SettingsViewModel : BaseModel
|
||||||
{
|
{
|
||||||
|
@ -57,7 +58,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
public bool IsModified
|
public bool IsModified
|
||||||
{
|
{
|
||||||
get => _isModified;
|
get => _isModified;
|
||||||
set
|
private set
|
||||||
{
|
{
|
||||||
DirtyEvent?.Invoke(value);
|
DirtyEvent?.Invoke(value);
|
||||||
_isModified = value;
|
_isModified = value;
|
||||||
|
@ -142,31 +143,261 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
public bool IsMacOS => OperatingSystem.IsMacOS();
|
public bool IsMacOS => OperatingSystem.IsMacOS();
|
||||||
|
|
||||||
public bool EnableDiscordIntegration { get; set; }
|
private bool _enableDiscordIntegration;
|
||||||
public bool CheckUpdatesOnStart { get; set; }
|
public bool EnableDiscordIntegration
|
||||||
public bool ShowConfirmExit { get; set; }
|
{
|
||||||
public bool RememberWindowState { get; set; }
|
get => _enableDiscordIntegration;
|
||||||
public int HideCursor { get; set; }
|
set
|
||||||
public bool EnableVsync { get; set; }
|
{
|
||||||
public bool EnablePptc { get; set; }
|
_enableDiscordIntegration = value;
|
||||||
public bool EnableInternetAccess { get; set; }
|
CheckIfModified();
|
||||||
public bool EnableFsIntegrityChecks { get; set; }
|
}
|
||||||
public bool IgnoreMissingServices { get; set; }
|
}
|
||||||
public bool ExpandDramSize { get; set; }
|
|
||||||
public bool EnableShaderCache { get; set; }
|
private bool _checkUpdatesOnStart;
|
||||||
public bool EnableTextureRecompression { get; set; }
|
public bool CheckUpdatesOnStart
|
||||||
public bool EnableMacroHLE { get; set; }
|
{
|
||||||
public bool EnableColorSpacePassthrough { get; set; }
|
get => _checkUpdatesOnStart;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_checkUpdatesOnStart = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _showConfirmExit;
|
||||||
|
public bool ShowConfirmExit
|
||||||
|
{
|
||||||
|
get => _showConfirmExit;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_showConfirmExit = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int _hideCursor;
|
||||||
|
public int HideCursor
|
||||||
|
{
|
||||||
|
get => _hideCursor;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_hideCursor = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableVsync;
|
||||||
|
public bool EnableVsync
|
||||||
|
{
|
||||||
|
get => _enableVsync;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableVsync = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enablePptc;
|
||||||
|
public bool EnablePptc
|
||||||
|
{
|
||||||
|
get => _enablePptc;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enablePptc = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableInternetAccess;
|
||||||
|
public bool EnableInternetAccess
|
||||||
|
{
|
||||||
|
get => _enableInternetAccess;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableInternetAccess = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableFsIntegrityChecks;
|
||||||
|
public bool EnableFsIntegrityChecks
|
||||||
|
{
|
||||||
|
get => _enableFsIntegrityChecks;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableFsIntegrityChecks = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _ignoreMissingServices;
|
||||||
|
public bool IgnoreMissingServices
|
||||||
|
{
|
||||||
|
get => _ignoreMissingServices;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_ignoreMissingServices = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _expandedDramSize;
|
||||||
|
public bool ExpandDramSize
|
||||||
|
{
|
||||||
|
get => _expandedDramSize;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_expandedDramSize = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableShaderCache;
|
||||||
|
public bool EnableShaderCache
|
||||||
|
{
|
||||||
|
get => _enableShaderCache;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableShaderCache = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableTextureRecompression;
|
||||||
|
public bool EnableTextureRecompression
|
||||||
|
{
|
||||||
|
get => _enableTextureRecompression;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableTextureRecompression = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableMacroHLE;
|
||||||
|
public bool EnableMacroHLE
|
||||||
|
{
|
||||||
|
get => _enableMacroHLE;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableMacroHLE = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableColorSpacePassthrough;
|
||||||
|
public bool EnableColorSpacePassthrough
|
||||||
|
{
|
||||||
|
get => _enableColorSpacePassthrough;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableColorSpacePassthrough = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool ColorSpacePassthroughAvailable => IsMacOS;
|
public bool ColorSpacePassthroughAvailable => IsMacOS;
|
||||||
public bool EnableFileLog { get; set; }
|
|
||||||
public bool EnableStub { get; set; }
|
private bool _enableFileLog;
|
||||||
public bool EnableInfo { get; set; }
|
public bool EnableFileLog
|
||||||
public bool EnableWarn { get; set; }
|
{
|
||||||
public bool EnableError { get; set; }
|
get => _enableFileLog;
|
||||||
public bool EnableTrace { get; set; }
|
set
|
||||||
public bool EnableGuest { get; set; }
|
{
|
||||||
public bool EnableFsAccessLog { get; set; }
|
_enableFileLog = value;
|
||||||
public bool EnableDebug { get; set; }
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableStub;
|
||||||
|
public bool EnableStub
|
||||||
|
{
|
||||||
|
get => _enableStub;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableStub = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableInfo;
|
||||||
|
public bool EnableInfo
|
||||||
|
{
|
||||||
|
get => _enableInfo;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableInfo = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableWarn;
|
||||||
|
public bool EnableWarn
|
||||||
|
{
|
||||||
|
get => _enableWarn;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableWarn = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableError;
|
||||||
|
public bool EnableError
|
||||||
|
{
|
||||||
|
get => _enableError;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableError = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableTrace;
|
||||||
|
public bool EnableTrace
|
||||||
|
{
|
||||||
|
get => _enableTrace;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableTrace = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableGuest;
|
||||||
|
public bool EnableGuest
|
||||||
|
{
|
||||||
|
get => _enableGuest;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableGuest = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableFsAccessLog;
|
||||||
|
public bool EnableFsAccessLog
|
||||||
|
{
|
||||||
|
get => _enableFsAccessLog;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableFsAccessLog = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _enableDebug;
|
||||||
|
public bool EnableDebug
|
||||||
|
{
|
||||||
|
get => _enableDebug;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_enableDebug = value;
|
||||||
|
CheckIfModified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsOpenAlEnabled { get; set; }
|
public bool IsOpenAlEnabled { get; set; }
|
||||||
public bool IsSoundIoEnabled { get; set; }
|
public bool IsSoundIoEnabled { get; set; }
|
||||||
public bool IsSDL2Enabled { get; set; }
|
public bool IsSDL2Enabled { get; set; }
|
||||||
|
@ -298,6 +529,93 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void CheckIfModified()
|
||||||
|
{
|
||||||
|
bool isDirty = false;
|
||||||
|
|
||||||
|
ConfigurationState config = ConfigurationState.Instance;
|
||||||
|
|
||||||
|
isDirty |= config.EnableDiscordIntegration.Value != EnableDiscordIntegration;
|
||||||
|
isDirty |= config.CheckUpdatesOnStart.Value != CheckUpdatesOnStart;
|
||||||
|
isDirty |= config.ShowConfirmExit.Value != ShowConfirmExit;
|
||||||
|
isDirty |= config.HideCursor.Value != (HideCursorMode)HideCursor;
|
||||||
|
|
||||||
|
// isDirty |= config.UI.GameDirs.Value != GameDirectories.ToList();
|
||||||
|
|
||||||
|
isDirty |= config.UI.BaseStyle.Value != (BaseStyleIndex == 0 ? "Light" : "Dark");
|
||||||
|
|
||||||
|
// Keyboard Hotkeys
|
||||||
|
// isDirty |= config.Hid.Hotkeys.Value != KeyboardHotkey.GetConfig();
|
||||||
|
|
||||||
|
// System
|
||||||
|
isDirty |= config.System.Region.Value != (Region)Region;
|
||||||
|
isDirty |= config.System.Language.Value != (Language)Language;
|
||||||
|
|
||||||
|
if (_validTzRegions.Contains(TimeZone))
|
||||||
|
{
|
||||||
|
isDirty |= config.System.TimeZone.Value != TimeZone;
|
||||||
|
}
|
||||||
|
|
||||||
|
// isDirty |= config.System.SystemTimeOffset.Value != Convert.ToInt64((CurrentDate.ToUnixTimeSeconds() + CurrentTime.TotalSeconds) - DateTimeOffset.Now.ToUnixTimeSeconds());
|
||||||
|
isDirty |= config.Graphics.EnableVsync.Value != EnableVsync;
|
||||||
|
isDirty |= config.System.EnableFsIntegrityChecks.Value != EnableFsIntegrityChecks;
|
||||||
|
isDirty |= config.System.ExpandRam.Value != ExpandDramSize;
|
||||||
|
isDirty |= config.System.IgnoreMissingServices.Value != IgnoreMissingServices;
|
||||||
|
|
||||||
|
// CPU
|
||||||
|
isDirty |= config.System.EnablePtc.Value != EnablePptc;
|
||||||
|
isDirty |= config.System.MemoryManagerMode.Value != (MemoryManagerMode)MemoryMode;
|
||||||
|
isDirty |= config.System.UseHypervisor.Value != UseHypervisor;
|
||||||
|
|
||||||
|
// Graphics
|
||||||
|
isDirty |= config.Graphics.GraphicsBackend.Value != (GraphicsBackend)GraphicsBackendIndex;
|
||||||
|
isDirty |= config.Graphics.PreferredGpu.Value != _gpuIds.ElementAtOrDefault(PreferredGpuIndex);
|
||||||
|
isDirty |= config.Graphics.EnableShaderCache.Value != EnableShaderCache;
|
||||||
|
isDirty |= config.Graphics.EnableTextureRecompression.Value != EnableTextureRecompression;
|
||||||
|
isDirty |= config.Graphics.EnableMacroHLE.Value != EnableMacroHLE;
|
||||||
|
isDirty |= config.Graphics.EnableColorSpacePassthrough.Value != EnableColorSpacePassthrough;
|
||||||
|
isDirty |= config.Graphics.ResScale.Value != (ResolutionScale == 4 ? -1 : ResolutionScale + 1);
|
||||||
|
isDirty |= config.Graphics.ResScaleCustom.Value != CustomResolutionScale;
|
||||||
|
isDirty |= config.Graphics.MaxAnisotropy.Value != (MaxAnisotropy == 0 ? -1 : MathF.Pow(2, MaxAnisotropy));
|
||||||
|
isDirty |= config.Graphics.AspectRatio.Value != (AspectRatio)AspectRatio;
|
||||||
|
isDirty |= config.Graphics.AntiAliasing.Value != (AntiAliasing)AntiAliasingEffect;
|
||||||
|
isDirty |= config.Graphics.ScalingFilter.Value != (ScalingFilter)ScalingFilter;
|
||||||
|
isDirty |= config.Graphics.ScalingFilterLevel.Value != ScalingFilterLevel;
|
||||||
|
|
||||||
|
if (ConfigurationState.Instance.Graphics.BackendThreading != (BackendThreading)GraphicsBackendMultithreadingIndex)
|
||||||
|
{
|
||||||
|
DriverUtilities.ToggleOGLThreading(GraphicsBackendMultithreadingIndex == (int)BackendThreading.Off);
|
||||||
|
}
|
||||||
|
|
||||||
|
isDirty |= config.Graphics.BackendThreading.Value != (BackendThreading)GraphicsBackendMultithreadingIndex;
|
||||||
|
isDirty |= config.Graphics.ShadersDumpPath.Value != ShaderDumpPath;
|
||||||
|
|
||||||
|
// Audio
|
||||||
|
isDirty |= config.System.AudioBackend.Value != (AudioBackend)AudioBackend;
|
||||||
|
isDirty |= config.System.AudioVolume.Value != Volume / 100;
|
||||||
|
|
||||||
|
// Network
|
||||||
|
isDirty |= config.System.EnableInternetAccess.Value != EnableInternetAccess;
|
||||||
|
|
||||||
|
// Logging
|
||||||
|
isDirty |= config.Logger.EnableFileLog.Value != EnableFileLog;
|
||||||
|
isDirty |= config.Logger.EnableStub.Value != EnableStub;
|
||||||
|
isDirty |= config.Logger.EnableInfo.Value != EnableInfo;
|
||||||
|
isDirty |= config.Logger.EnableWarn.Value != EnableWarn;
|
||||||
|
isDirty |= config.Logger.EnableError.Value != EnableError;
|
||||||
|
isDirty |= config.Logger.EnableTrace.Value != EnableTrace;
|
||||||
|
isDirty |= config.Logger.EnableGuest.Value != EnableGuest;
|
||||||
|
isDirty |= config.Logger.EnableDebug.Value != EnableDebug;
|
||||||
|
isDirty |= config.Logger.EnableFsAccessLog.Value != EnableFsAccessLog;
|
||||||
|
isDirty |= config.System.FsGlobalAccessLogMode.Value != FsGlobalAccessLogMode;
|
||||||
|
isDirty |= config.Logger.GraphicsDebugLevel.Value != (GraphicsDebugLevel)OpenglDebugLevel;
|
||||||
|
|
||||||
|
isDirty |= config.Multiplayer.LanInterfaceId.Value != _networkInterfaces[NetworkInterfaceList[NetworkInterfaceIndex]];
|
||||||
|
isDirty |= config.Multiplayer.Mode.Value != (MultiplayerMode)MultiplayerModeIndex;
|
||||||
|
|
||||||
|
IsModified = isDirty;
|
||||||
|
}
|
||||||
|
|
||||||
public async Task CheckSoundBackends()
|
public async Task CheckSoundBackends()
|
||||||
{
|
{
|
||||||
IsOpenAlEnabled = OpenALHardwareDeviceDriver.IsSupported;
|
IsOpenAlEnabled = OpenALHardwareDeviceDriver.IsSupported;
|
||||||
|
@ -402,19 +720,12 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
EnableDiscordIntegration = config.EnableDiscordIntegration;
|
EnableDiscordIntegration = config.EnableDiscordIntegration;
|
||||||
CheckUpdatesOnStart = config.CheckUpdatesOnStart;
|
CheckUpdatesOnStart = config.CheckUpdatesOnStart;
|
||||||
ShowConfirmExit = config.ShowConfirmExit;
|
ShowConfirmExit = config.ShowConfirmExit;
|
||||||
RememberWindowState = config.RememberWindowState;
|
|
||||||
HideCursor = (int)config.HideCursor.Value;
|
HideCursor = (int)config.HideCursor.Value;
|
||||||
|
|
||||||
GameDirectories.Clear();
|
GameDirectories.Clear();
|
||||||
GameDirectories.AddRange(config.UI.GameDirs.Value);
|
GameDirectories.AddRange(config.UI.GameDirs.Value);
|
||||||
|
|
||||||
BaseStyleIndex = config.UI.BaseStyle.Value switch
|
BaseStyleIndex = config.UI.BaseStyle == "Light" ? 0 : 1;
|
||||||
{
|
|
||||||
"Auto" => 0,
|
|
||||||
"Light" => 1,
|
|
||||||
"Dark" => 2,
|
|
||||||
_ => 0
|
|
||||||
};
|
|
||||||
|
|
||||||
// Keyboard Hotkeys
|
// Keyboard Hotkeys
|
||||||
KeyboardHotkey = new HotkeyConfig(config.Hid.Hotkeys.Value);
|
KeyboardHotkey = new HotkeyConfig(config.Hid.Hotkeys.Value);
|
||||||
|
@ -424,11 +735,10 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
Language = (int)config.System.Language.Value;
|
Language = (int)config.System.Language.Value;
|
||||||
TimeZone = config.System.TimeZone;
|
TimeZone = config.System.TimeZone;
|
||||||
|
|
||||||
DateTime currentHostDateTime = DateTime.Now;
|
DateTime currentDateTime = DateTime.Now;
|
||||||
TimeSpan systemDateTimeOffset = TimeSpan.FromSeconds(config.System.SystemTimeOffset);
|
|
||||||
DateTime currentDateTime = currentHostDateTime.Add(systemDateTimeOffset);
|
|
||||||
CurrentDate = currentDateTime.Date;
|
CurrentDate = currentDateTime.Date;
|
||||||
CurrentTime = currentDateTime.TimeOfDay;
|
CurrentTime = currentDateTime.TimeOfDay.Add(TimeSpan.FromSeconds(config.System.SystemTimeOffset));
|
||||||
|
|
||||||
EnableVsync = config.Graphics.EnableVsync;
|
EnableVsync = config.Graphics.EnableVsync;
|
||||||
EnableFsIntegrityChecks = config.System.EnableFsIntegrityChecks;
|
EnableFsIntegrityChecks = config.System.EnableFsIntegrityChecks;
|
||||||
|
@ -489,7 +799,6 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
config.EnableDiscordIntegration.Value = EnableDiscordIntegration;
|
config.EnableDiscordIntegration.Value = EnableDiscordIntegration;
|
||||||
config.CheckUpdatesOnStart.Value = CheckUpdatesOnStart;
|
config.CheckUpdatesOnStart.Value = CheckUpdatesOnStart;
|
||||||
config.ShowConfirmExit.Value = ShowConfirmExit;
|
config.ShowConfirmExit.Value = ShowConfirmExit;
|
||||||
config.RememberWindowState.Value = RememberWindowState;
|
|
||||||
config.HideCursor.Value = (HideCursorMode)HideCursor;
|
config.HideCursor.Value = (HideCursorMode)HideCursor;
|
||||||
|
|
||||||
if (_directoryChanged)
|
if (_directoryChanged)
|
||||||
|
@ -498,13 +807,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
config.UI.GameDirs.Value = gameDirs;
|
config.UI.GameDirs.Value = gameDirs;
|
||||||
}
|
}
|
||||||
|
|
||||||
config.UI.BaseStyle.Value = BaseStyleIndex switch
|
config.UI.BaseStyle.Value = BaseStyleIndex == 0 ? "Light" : "Dark";
|
||||||
{
|
|
||||||
0 => "Auto",
|
|
||||||
1 => "Light",
|
|
||||||
2 => "Dark",
|
|
||||||
_ => "Auto"
|
|
||||||
};
|
|
||||||
|
|
||||||
// Keyboard Hotkeys
|
// Keyboard Hotkeys
|
||||||
config.Hid.Hotkeys.Value = KeyboardHotkey.GetConfig();
|
config.Hid.Hotkeys.Value = KeyboardHotkey.GetConfig();
|
|
@ -71,7 +71,7 @@ namespace Ryujinx.Ava.UI.Views.Input
|
||||||
if (e.ButtonValue.HasValue)
|
if (e.ButtonValue.HasValue)
|
||||||
{
|
{
|
||||||
var buttonValue = e.ButtonValue.Value;
|
var buttonValue = e.ButtonValue.Value;
|
||||||
viewModel.ParentModel.SettingsViewModel.IsModified = true;
|
//viewModel.ParentModel.SettingsViewModel.CheckIfModified();
|
||||||
|
|
||||||
switch (button.Name)
|
switch (button.Name)
|
||||||
{
|
{
|
||||||
|
|
|
@ -68,7 +68,7 @@ namespace Ryujinx.Ava.UI.Views.Input
|
||||||
if (e.ButtonValue.HasValue)
|
if (e.ButtonValue.HasValue)
|
||||||
{
|
{
|
||||||
var buttonValue = e.ButtonValue.Value;
|
var buttonValue = e.ButtonValue.Value;
|
||||||
viewModel.ParentModel.SettingsViewModel.IsModified = true;
|
// viewModel.ParentModel.SettingsViewModel.CheckIfModified();
|
||||||
|
|
||||||
switch (button.Name)
|
switch (button.Name)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,6 +2,7 @@ using Avalonia.Controls;
|
||||||
using FluentAvalonia.UI.Controls;
|
using FluentAvalonia.UI.Controls;
|
||||||
using Ryujinx.Ava.Common.Locale;
|
using Ryujinx.Ava.Common.Locale;
|
||||||
using Ryujinx.Ava.UI.ViewModels.Input;
|
using Ryujinx.Ava.UI.ViewModels.Input;
|
||||||
|
using Ryujinx.Ava.UI.ViewModels.Settings;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.Views.Input
|
namespace Ryujinx.Ava.UI.Views.Input
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls"
|
xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls"
|
||||||
xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
|
xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
|
||||||
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
||||||
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Settings"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
x:DataType="viewModels:SettingsViewModel">
|
x:DataType="viewModels:SettingsViewModel">
|
||||||
<Design.DataContext>
|
<Design.DataContext>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
||||||
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Settings"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
x:DataType="viewModels:SettingsViewModel">
|
x:DataType="viewModels:SettingsViewModel">
|
||||||
<Design.DataContext>
|
<Design.DataContext>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls"
|
xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls"
|
||||||
xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
|
xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
|
||||||
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
||||||
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Settings"
|
||||||
Design.Width="1000"
|
Design.Width="1000"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
x:DataType="viewModels:SettingsViewModel">
|
x:DataType="viewModels:SettingsViewModel">
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
||||||
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Settings"
|
||||||
xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
|
xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
x:DataType="viewModels:SettingsViewModel"
|
x:DataType="viewModels:SettingsViewModel"
|
||||||
|
|
|
@ -5,9 +5,9 @@ using Avalonia.Interactivity;
|
||||||
using Avalonia.LogicalTree;
|
using Avalonia.LogicalTree;
|
||||||
using Ryujinx.Ava.Input;
|
using Ryujinx.Ava.Input;
|
||||||
using Ryujinx.Ava.UI.Helpers;
|
using Ryujinx.Ava.UI.Helpers;
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
|
||||||
using Ryujinx.Input;
|
using Ryujinx.Input;
|
||||||
using Ryujinx.Input.Assigner;
|
using Ryujinx.Input.Assigner;
|
||||||
|
using Ryujinx.Ava.UI.ViewModels.Settings;
|
||||||
using Key = Ryujinx.Common.Configuration.Hid.Key;
|
using Key = Ryujinx.Common.Configuration.Hid.Key;
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.Views.Settings
|
namespace Ryujinx.Ava.UI.Views.Settings
|
||||||
|
|
|
@ -7,12 +7,13 @@
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:views="clr-namespace:Ryujinx.Ava.UI.Views.Input"
|
xmlns:views="clr-namespace:Ryujinx.Ava.UI.Views.Input"
|
||||||
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Input"
|
xmlns:inputViewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Input"
|
||||||
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Settings"
|
||||||
xmlns:models="clr-namespace:Ryujinx.Ava.UI.Models"
|
xmlns:models="clr-namespace:Ryujinx.Ava.UI.Models"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
x:DataType="viewModels:InputViewModel">
|
x:DataType="viewModels:SettingsInputViewModel">
|
||||||
<Design.DataContext>
|
<Design.DataContext>
|
||||||
<viewModels:InputViewModel />
|
<viewModels:SettingsInputViewModel />
|
||||||
</Design.DataContext>
|
</Design.DataContext>
|
||||||
<ScrollViewer
|
<ScrollViewer
|
||||||
Name="InputPage"
|
Name="InputPage"
|
||||||
|
@ -215,10 +216,10 @@
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<ContentControl Content="{Binding ConfigViewModel}" IsVisible="{Binding ShowSettings}">
|
<ContentControl Content="{Binding ConfigViewModel}" IsVisible="{Binding ShowSettings}">
|
||||||
<ContentControl.DataTemplates>
|
<ContentControl.DataTemplates>
|
||||||
<DataTemplate DataType="viewModels:ControllerInputViewModel">
|
<DataTemplate DataType="inputViewModels:ControllerInputViewModel">
|
||||||
<views:ControllerInputView />
|
<views:ControllerInputView />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<DataTemplate DataType="viewModels:KeyboardInputViewModel">
|
<DataTemplate DataType="inputViewModels:KeyboardInputViewModel">
|
||||||
<views:KeyboardInputView />
|
<views:KeyboardInputView />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ContentControl.DataTemplates>
|
</ContentControl.DataTemplates>
|
||||||
|
|
|
@ -1,16 +1,15 @@
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
using Ryujinx.Ava.UI.ViewModels.Settings;
|
||||||
using Ryujinx.Ava.UI.ViewModels.Input;
|
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.Views.Settings
|
namespace Ryujinx.Ava.UI.Views.Settings
|
||||||
{
|
{
|
||||||
public partial class SettingsInputView : UserControl
|
public partial class SettingsInputView : UserControl
|
||||||
{
|
{
|
||||||
private InputViewModel ViewModel { get; set; }
|
private SettingsInputViewModel ViewModel { get; set; }
|
||||||
|
|
||||||
public SettingsInputView(SettingsViewModel viewModel)
|
public SettingsInputView(SettingsViewModel viewModel)
|
||||||
{
|
{
|
||||||
DataContext = ViewModel = new InputViewModel(this, viewModel);
|
DataContext = ViewModel = new SettingsInputViewModel(this, viewModel);
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
|
xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
|
||||||
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
||||||
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Settings"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
x:DataType="viewModels:SettingsViewModel">
|
x:DataType="viewModels:SettingsViewModel">
|
||||||
<Design.DataContext>
|
<Design.DataContext>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
||||||
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Settings"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
x:DataType="viewModels:SettingsViewModel">
|
x:DataType="viewModels:SettingsViewModel">
|
||||||
<Design.DataContext>
|
<Design.DataContext>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
||||||
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Settings"
|
||||||
xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
|
xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
x:DataType="viewModels:SettingsViewModel">
|
x:DataType="viewModels:SettingsViewModel">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
using Ryujinx.Ava.UI.ViewModels.Settings;
|
||||||
using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
|
using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.Views.Settings
|
namespace Ryujinx.Ava.UI.Views.Settings
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
||||||
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Settings"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
x:DataType="viewModels:SettingsViewModel">
|
x:DataType="viewModels:SettingsViewModel">
|
||||||
<Design.DataContext>
|
<Design.DataContext>
|
||||||
|
|
|
@ -2,7 +2,7 @@ using Avalonia.Controls;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using Avalonia.Platform.Storage;
|
using Avalonia.Platform.Storage;
|
||||||
using Avalonia.VisualTree;
|
using Avalonia.VisualTree;
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
using Ryujinx.Ava.UI.ViewModels.Settings;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:window="clr-namespace:Ryujinx.Ava.UI.Windows"
|
xmlns:window="clr-namespace:Ryujinx.Ava.UI.Windows"
|
||||||
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Settings"
|
||||||
xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
|
xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
|
||||||
Width="1100"
|
Width="1100"
|
||||||
Height="768"
|
Height="768"
|
||||||
|
|
|
@ -4,9 +4,9 @@ using FluentAvalonia.Core;
|
||||||
using FluentAvalonia.UI.Controls;
|
using FluentAvalonia.UI.Controls;
|
||||||
using Ryujinx.Ava.Common.Locale;
|
using Ryujinx.Ava.Common.Locale;
|
||||||
using Ryujinx.Ava.UI.Helpers;
|
using Ryujinx.Ava.UI.Helpers;
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
|
||||||
using Ryujinx.Ava.UI.Views.Settings;
|
using Ryujinx.Ava.UI.Views.Settings;
|
||||||
using Ryujinx.HLE.FileSystem;
|
using Ryujinx.HLE.FileSystem;
|
||||||
|
using Ryujinx.Ava.UI.ViewModels.Settings;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.Windows
|
namespace Ryujinx.Ava.UI.Windows
|
||||||
|
|
Loading…
Reference in a new issue