Bug fixes, functionality improvements:
Now the profile changes immediately upon selection. The icon for restoring settings has been changed. A bug has been fixed where restoring settings did not restore the previously selected gamepad.
This commit is contained in:
parent
33e3ba9ff2
commit
299f2144c8
@ -87,7 +87,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
|||||||
public bool IsKeyboard => !IsController;
|
public bool IsKeyboard => !IsController;
|
||||||
public bool IsRight { get; set; }
|
public bool IsRight { get; set; }
|
||||||
public bool IsLeft { get; set; }
|
public bool IsLeft { get; set; }
|
||||||
|
public int DeviceIndexBeforeChange { get; set; }
|
||||||
public bool HasLed => SelectedGamepad.Features.HasFlag(GamepadFeaturesFlag.Led);
|
public bool HasLed => SelectedGamepad.Features.HasFlag(GamepadFeaturesFlag.Led);
|
||||||
public bool CanClearLed => SelectedGamepad.Name.ContainsIgnoreCase("DualSense");
|
public bool CanClearLed => SelectedGamepad.Name.ContainsIgnoreCase("DualSense");
|
||||||
|
|
||||||
@ -106,17 +106,17 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
|||||||
|
|
||||||
public event Action NotifyChangesEvent;
|
public event Action NotifyChangesEvent;
|
||||||
|
|
||||||
public int _profileChoose;
|
public string _profileChoose;
|
||||||
public int ProfileChoose
|
public string ProfileChoose
|
||||||
{
|
{
|
||||||
get => _profileChoose;
|
get => _profileChoose;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (value >= 0)
|
// When you select a profile, the settings from the profile will be applied.
|
||||||
{
|
// To save the settings, you still need to click the apply button
|
||||||
_profileChoose = value;
|
|
||||||
}
|
_profileChoose = value;
|
||||||
|
LoadProfile();
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -152,6 +152,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
|||||||
LoadDevice();
|
LoadDevice();
|
||||||
LoadProfiles();
|
LoadProfiles();
|
||||||
|
|
||||||
|
DeviceIndexBeforeChange = Device;
|
||||||
_isLoaded = true;
|
_isLoaded = true;
|
||||||
_isChangeTrackingActive = true;
|
_isChangeTrackingActive = true;
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
@ -242,6 +243,11 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
|||||||
get => _device;
|
get => _device;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
|
if (!IsModified)
|
||||||
|
{
|
||||||
|
DeviceIndexBeforeChange = _device;
|
||||||
|
}
|
||||||
|
|
||||||
_device = value < 0 ? 0 : value;
|
_device = value < 0 ? 0 : value;
|
||||||
|
|
||||||
if (_device >= Devices.Count)
|
if (_device >= Devices.Count)
|
||||||
@ -260,6 +266,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
|||||||
LoadConfiguration(LoadDefaultConfiguration());
|
LoadConfiguration(LoadDefaultConfiguration());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FindPairedDevice();
|
FindPairedDevice();
|
||||||
SetChangeTrackingActive();
|
SetChangeTrackingActive();
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
@ -476,7 +483,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
|||||||
{
|
{
|
||||||
// Load configuration after connection if it is in the configuration file
|
// Load configuration after connection if it is in the configuration file
|
||||||
IsModified = true;
|
IsModified = true;
|
||||||
LoadSavedConfiguration();
|
LoadSavedConfiguration();
|
||||||
}
|
}
|
||||||
|
|
||||||
_isChangeTrackingActive = true;
|
_isChangeTrackingActive = true;
|
||||||
@ -783,6 +790,12 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
|||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void LoadProfileButton()
|
||||||
|
{
|
||||||
|
IsModified = true;
|
||||||
|
LoadProfile();
|
||||||
|
}
|
||||||
|
|
||||||
public async void LoadProfile()
|
public async void LoadProfile()
|
||||||
{
|
{
|
||||||
if (Device == 0)
|
if (Device == 0)
|
||||||
@ -890,7 +903,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
|||||||
|
|
||||||
LoadProfiles();
|
LoadProfiles();
|
||||||
|
|
||||||
ProfileChoose = ProfilesList.IndexOf(ProfileName); // Show new profile
|
ProfileChoose = ProfileName; // Show new profile
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -924,17 +937,24 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
|||||||
|
|
||||||
LoadProfiles();
|
LoadProfiles();
|
||||||
|
|
||||||
ProfileChoose = 0; // Show default profile
|
ProfileChoose = ProfilesList[0].ToString(); // Show default profile
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadSavedConfiguration()
|
public void LoadSavedConfiguration()
|
||||||
{
|
{
|
||||||
|
// Restores settings and sets the previously selected device to the last saved state
|
||||||
|
// NOTE: The current order allows the configuration and device to be loaded correctly until the configuration is changed.
|
||||||
|
|
||||||
if (IsModified) // Fixes random gamepad appearance in "disabled" option
|
if (IsModified) // Fixes random gamepad appearance in "disabled" option
|
||||||
{
|
{
|
||||||
|
Device = DeviceIndexBeforeChange;
|
||||||
|
|
||||||
LoadDevice();
|
LoadDevice();
|
||||||
LoadConfiguration();
|
LoadConfiguration();
|
||||||
|
|
||||||
IsModified = false;
|
IsModified = false;
|
||||||
|
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -948,8 +968,8 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
|||||||
}
|
}
|
||||||
|
|
||||||
IsModified = false;
|
IsModified = false;
|
||||||
|
DeviceIndexBeforeChange = Device;
|
||||||
List<InputConfig> newConfig = [];
|
List <InputConfig> newConfig = [];
|
||||||
|
|
||||||
newConfig.AddRange(ConfigurationState.Instance.Hid.InputConfig.Value);
|
newConfig.AddRange(ConfigurationState.Instance.Hid.InputConfig.Value);
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@
|
|||||||
ToolTip.Tip="{ext:Locale ControllerSettingsCancelCurrentChangesToolTip}"
|
ToolTip.Tip="{ext:Locale ControllerSettingsCancelCurrentChangesToolTip}"
|
||||||
Command="{Binding LoadSavedConfiguration}">
|
Command="{Binding LoadSavedConfiguration}">
|
||||||
<ui:SymbolIcon
|
<ui:SymbolIcon
|
||||||
Symbol="Cancel"
|
Symbol="Undo"
|
||||||
FontSize="15"
|
FontSize="15"
|
||||||
Height="20" />
|
Height="20" />
|
||||||
</Button>
|
</Button>
|
||||||
@ -117,7 +117,8 @@
|
|||||||
Name="ProfileBox"
|
Name="ProfileBox"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
SelectedIndex="{Binding ProfileChoose}"
|
SelectedItem="{Binding ProfileChoose, Mode=TwoWay}"
|
||||||
|
SelectionChanged="ComboBox_SelectionChanged"
|
||||||
ItemsSource="{Binding ProfilesList}"
|
ItemsSource="{Binding ProfilesList}"
|
||||||
Text="{Binding ProfileName, Mode=TwoWay}" />
|
Text="{Binding ProfileName, Mode=TwoWay}" />
|
||||||
<Button
|
<Button
|
||||||
@ -126,7 +127,7 @@
|
|||||||
Margin="5,0,0,0"
|
Margin="5,0,0,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
ToolTip.Tip="{ext:Locale ControllerSettingsLoadProfileToolTip}"
|
ToolTip.Tip="{ext:Locale ControllerSettingsLoadProfileToolTip}"
|
||||||
Command="{Binding LoadProfile}">
|
Command="{Binding LoadProfileButton}">
|
||||||
<ui:SymbolIcon
|
<ui:SymbolIcon
|
||||||
Symbol="View"
|
Symbol="View"
|
||||||
FontSize="15"
|
FontSize="15"
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using Avalonia.Controls;
|
using Avalonia.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.Models;
|
using Ryujinx.Ava.UI.Models;
|
||||||
@ -65,11 +66,19 @@ namespace Ryujinx.Ava.UI.Views.Input
|
|||||||
|
|
||||||
ViewModel.IsModified = false;
|
ViewModel.IsModified = false;
|
||||||
ViewModel.PlayerId = ViewModel.PlayerIdChoose;
|
ViewModel.PlayerId = ViewModel.PlayerIdChoose;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is FAComboBox faComboBox)
|
||||||
|
{
|
||||||
|
faComboBox.IsDropDownOpen = false;
|
||||||
|
ViewModel.IsModified = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user