aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava/Ui/Models/Generic/TimePlayedSortComparer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Ava/Ui/Models/Generic/TimePlayedSortComparer.cs')
-rw-r--r--Ryujinx.Ava/Ui/Models/Generic/TimePlayedSortComparer.cs66
1 files changed, 66 insertions, 0 deletions
diff --git a/Ryujinx.Ava/Ui/Models/Generic/TimePlayedSortComparer.cs b/Ryujinx.Ava/Ui/Models/Generic/TimePlayedSortComparer.cs
new file mode 100644
index 00000000..20b30b83
--- /dev/null
+++ b/Ryujinx.Ava/Ui/Models/Generic/TimePlayedSortComparer.cs
@@ -0,0 +1,66 @@
+using Ryujinx.Ui.App.Common;
+using System.Collections.Generic;
+
+namespace Ryujinx.Ava.Ui.Models.Generic
+{
+ public 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;
+ }
+ }
+ }
+} \ No newline at end of file