forked from Mirror/Ryujinx
594246ea47
* add settings windows and children views * Expose hotkeys configuration on the UI * Remove double spacing from locale JSON * simplify button assigner * add cemuhook buttons and title to locale * move common button assigner to own class * cancel button assigner when window is closed * remove unused setting * address review. fix controller profile not loading default when switching devices * fix updater file name * Input cleanup (#37) * addressed review * add device type to controller device checks * change accessibility modifier of public classes to internal * Update Ryujinx.Ava/Ui/ViewModels/ControllerSettingsViewModel.cs Co-authored-by: gdkchan <gab.dark.100@gmail.com> * Update de_DE.json * Update de_DE.json * Update tr_TR.json Translated newly added lines * Update it_IT.json * fix rebase * update avalonia * fix wrong key used for button text * Align settings window elements * Tabs to spaces * Update brazilian portuguese translation * Minor improvement on brazilian portuguese translation * fix turkish translation * remove unused text * change view related classes to public * unsubscribe from deferred event if dialog is closed * Load the default language before loading any other when switching languages * Make controller settings more compact * increase default width of settings window, reduce profile buttons width Co-authored-by: gdk <gab.dark.100@gmail.com> Co-authored-by: MutantAura <44103205+MutantAura@users.noreply.github.com> Co-authored-by: Niwu34 <67392333+Niwu34@users.noreply.github.com> Co-authored-by: aegiff <99728970+aegiff@users.noreply.github.com> Co-authored-by: Antonio Brugnolo <36473846+AntoSkate@users.noreply.github.com>
66 lines
No EOL
2 KiB
C#
66 lines
No EOL
2 KiB
C#
using Ryujinx.Ui.App.Common;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Ryujinx.Ava.Ui.Models.Generic
|
|
{
|
|
internal class TimePlayedSortComparer : IComparer<ApplicationData>
|
|
{
|
|
public TimePlayedSortComparer() { }
|
|
public TimePlayedSortComparer(bool isAscending) { _order = isAscending ? 1 : -1; }
|
|
|
|
private int _order;
|
|
|
|
public int Compare(ApplicationData x, ApplicationData y)
|
|
{
|
|
string aValue = x.TimePlayed;
|
|
string bValue = y.TimePlayed;
|
|
|
|
if (aValue.Length > 4 && aValue[^4..] == "mins")
|
|
{
|
|
aValue = (float.Parse(aValue[0..^5]) * 60).ToString();
|
|
}
|
|
else if (aValue.Length > 3 && aValue[^3..] == "hrs")
|
|
{
|
|
aValue = (float.Parse(aValue[0..^4]) * 3600).ToString();
|
|
}
|
|
else if (aValue.Length > 4 && aValue[^4..] == "days")
|
|
{
|
|
aValue = (float.Parse(aValue[0..^5]) * 86400).ToString();
|
|
}
|
|
else
|
|
{
|
|
aValue = aValue[0..^1];
|
|
}
|
|
|
|
if (bValue.Length > 4 && bValue[^4..] == "mins")
|
|
{
|
|
bValue = (float.Parse(bValue[0..^5]) * 60).ToString();
|
|
}
|
|
else if (bValue.Length > 3 && bValue[^3..] == "hrs")
|
|
{
|
|
bValue = (float.Parse(bValue[0..^4]) * 3600).ToString();
|
|
}
|
|
else if (bValue.Length > 4 && bValue[^4..] == "days")
|
|
{
|
|
bValue = (float.Parse(bValue[0..^5]) * 86400).ToString();
|
|
}
|
|
else
|
|
{
|
|
bValue = bValue[0..^1];
|
|
}
|
|
|
|
if (float.Parse(aValue) > float.Parse(bValue))
|
|
{
|
|
return -1 * _order;
|
|
}
|
|
else if (float.Parse(bValue) > float.Parse(aValue))
|
|
{
|
|
return 1 * _order;
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
} |