Use compare ordinal ignore case and ContainsIgnoreCase for filtering and sorting in XCI File Trimmer

This commit is contained in:
Aaron Murgatroyd 2025-05-19 01:31:41 +10:00
parent 38f22bf474
commit 1544f54603
2 changed files with 10 additions and 7 deletions

View file

@ -40,6 +40,8 @@ namespace Ryujinx.Ava.UI.Helpers
public static string From(XCITrimmerFileModel model) public static string From(XCITrimmerFileModel model)
{ {
if (model == null) return String.Empty;
return (string)Instance.Convert(model, typeof(string), null, CultureInfo.CurrentUICulture) ?? String.Empty; return (string)Instance.Convert(model, typeof(string), null, CultureInfo.CurrentUICulture) ?? String.Empty;
} }

View file

@ -8,6 +8,7 @@ using Ryujinx.Ava.Common.Models;
using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.Systems.AppLibrary; using Ryujinx.Ava.Systems.AppLibrary;
using Ryujinx.Common.Utilities; using Ryujinx.Common.Utilities;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
@ -269,9 +270,9 @@ namespace Ryujinx.Ava.UI.ViewModels
if (arg is XCITrimmerFileModel content) if (arg is XCITrimmerFileModel content)
{ {
return string.IsNullOrWhiteSpace(_search) return string.IsNullOrWhiteSpace(_search)
|| content.Name.ToLower().Contains(_search.ToLower()) || content.Name.ContainsIgnoreCase(_search)
|| XCITrimmerFileStatusConverter.From(content).ToLower().Contains(_search.ToLower()) || XCITrimmerFileStatusConverter.From(content).ContainsIgnoreCase(_search)
|| content.Path.ToLower().Contains(_search.ToLower()); || content.Path.ContainsIgnoreCase(_search);
} }
return false; return false;
@ -293,10 +294,10 @@ namespace Ryujinx.Ava.UI.ViewModels
switch (_viewModel.SortingField) switch (_viewModel.SortingField)
{ {
case SortField.Name: case SortField.Name:
result = x.Name.CompareTo(y.Name); result = String.Compare(x?.Name ?? String.Empty, y?.Name ?? String.Empty, StringComparison.OrdinalIgnoreCase);
break; break;
case SortField.Status: case SortField.Status:
result = XCITrimmerFileStatusConverter.From(x).CompareTo(XCITrimmerFileStatusConverter.From(y)); result = String.Compare(XCITrimmerFileStatusConverter.From(x), XCITrimmerFileStatusConverter.From(y), StringComparison.OrdinalIgnoreCase);
break; break;
case SortField.Saved: case SortField.Saved:
result = x.PotentialSavingsB.CompareTo(y.PotentialSavingsB); result = x.PotentialSavingsB.CompareTo(y.PotentialSavingsB);
@ -304,10 +305,10 @@ namespace Ryujinx.Ava.UI.ViewModels
} }
if (result == 0) 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) 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) if (!_viewModel.SortingAscending)
result = -result; result = -result;