From 1544f546031302ceabb486b0721d123e9e805216 Mon Sep 17 00:00:00 2001 From: Aaron Murgatroyd Date: Mon, 19 May 2025 01:31:41 +1000 Subject: [PATCH] Use compare ordinal ignore case and ContainsIgnoreCase for filtering and sorting in XCI File Trimmer --- .../Converters/XCITrimmerFileStatusConverter.cs | 2 ++ src/Ryujinx/UI/ViewModels/XciTrimmerViewModel.cs | 15 ++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Ryujinx/UI/Helpers/Converters/XCITrimmerFileStatusConverter.cs b/src/Ryujinx/UI/Helpers/Converters/XCITrimmerFileStatusConverter.cs index a485a1a2d..9d99edd8b 100644 --- a/src/Ryujinx/UI/Helpers/Converters/XCITrimmerFileStatusConverter.cs +++ b/src/Ryujinx/UI/Helpers/Converters/XCITrimmerFileStatusConverter.cs @@ -40,6 +40,8 @@ namespace Ryujinx.Ava.UI.Helpers public static string From(XCITrimmerFileModel model) { + if (model == null) return String.Empty; + return (string)Instance.Convert(model, typeof(string), null, CultureInfo.CurrentUICulture) ?? String.Empty; } diff --git a/src/Ryujinx/UI/ViewModels/XciTrimmerViewModel.cs b/src/Ryujinx/UI/ViewModels/XciTrimmerViewModel.cs index f2a1bcc65..ad6b70136 100644 --- a/src/Ryujinx/UI/ViewModels/XciTrimmerViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/XciTrimmerViewModel.cs @@ -8,6 +8,7 @@ using Ryujinx.Ava.Common.Models; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.Systems.AppLibrary; using Ryujinx.Common.Utilities; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; @@ -269,9 +270,9 @@ namespace Ryujinx.Ava.UI.ViewModels if (arg is XCITrimmerFileModel content) { return string.IsNullOrWhiteSpace(_search) - || content.Name.ToLower().Contains(_search.ToLower()) - || XCITrimmerFileStatusConverter.From(content).ToLower().Contains(_search.ToLower()) - || content.Path.ToLower().Contains(_search.ToLower()); + || content.Name.ContainsIgnoreCase(_search) + || XCITrimmerFileStatusConverter.From(content).ContainsIgnoreCase(_search) + || content.Path.ContainsIgnoreCase(_search); } return false; @@ -293,10 +294,10 @@ namespace Ryujinx.Ava.UI.ViewModels switch (_viewModel.SortingField) { case SortField.Name: - result = x.Name.CompareTo(y.Name); + result = String.Compare(x?.Name ?? String.Empty, y?.Name ?? String.Empty, StringComparison.OrdinalIgnoreCase); break; case SortField.Status: - result = XCITrimmerFileStatusConverter.From(x).CompareTo(XCITrimmerFileStatusConverter.From(y)); + result = String.Compare(XCITrimmerFileStatusConverter.From(x), XCITrimmerFileStatusConverter.From(y), StringComparison.OrdinalIgnoreCase); break; case SortField.Saved: result = x.PotentialSavingsB.CompareTo(y.PotentialSavingsB); @@ -304,10 +305,10 @@ namespace Ryujinx.Ava.UI.ViewModels } if (result == 0) - result = x.Path.CompareTo(y.Path); + result = String.Compare(x?.Path ?? String.Empty, y?.Path ?? String.Empty, StringComparison.OrdinalIgnoreCase); if (result == 0) - result = x.Name.CompareTo(y.Name); + result = String.Compare(x?.Name ?? String.Empty, y?.Name ?? String.Empty, StringComparison.OrdinalIgnoreCase); if (!_viewModel.SortingAscending) result = -result;