aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAc_K <Acoustik666@gmail.com>2023-01-16 03:09:52 +0100
committerGitHub <noreply@github.com>2023-01-16 03:09:52 +0100
commit1faff14e73408872dd034114bfc2c3f1044f8d94 (patch)
tree0187eba4a20aac22ed4c30878a5bba1310d91a9f
parent784cf9d5947d60d146e518a7913220155362396b (diff)
UI: Fixes GTK sorting regression of #42941.1.564
-rw-r--r--Ryujinx/Ui/Helper/SortHelper.cs80
1 files changed, 24 insertions, 56 deletions
diff --git a/Ryujinx/Ui/Helper/SortHelper.cs b/Ryujinx/Ui/Helper/SortHelper.cs
index 4def8932..0c0eefd2 100644
--- a/Ryujinx/Ui/Helper/SortHelper.cs
+++ b/Ryujinx/Ui/Helper/SortHelper.cs
@@ -7,65 +7,33 @@ namespace Ryujinx.Ui.Helper
{
public static int TimePlayedSort(ITreeModel model, TreeIter a, TreeIter b)
{
- string aValue = model.GetValue(a, 5).ToString();
- string bValue = model.GetValue(b, 5).ToString();
- float aFloat;
- float bFloat;
-
- if (aValue.Length > 7 && aValue[^7..] == "minutes")
- {
- aValue = aValue.Replace("minutes", "");
- aFloat = (float.Parse(aValue) * 60);
- }
- else if (aValue.Length > 5 && aValue[^5..] == "hours")
- {
- aValue = aValue.Replace("hours", "");
- aFloat = (float.Parse(aValue) * 3600);
- }
- else if (aValue.Length > 4 && aValue[^4..] == "days")
- {
- aValue = aValue.Replace("days", "");
- aFloat = (float.Parse(aValue) * 86400);
- }
- else
+ static string ReverseFormat(string time)
{
- aValue = aValue.Replace("seconds", "");
- aFloat = float.Parse(aValue);
- }
+ if (time == "Never")
+ {
+ return "00";
+ }
- if (bValue.Length > 7 && bValue[^7..] == "minutes")
- {
- bValue = bValue.Replace("minutes", "");
- bFloat = (float.Parse(bValue) * 60);
- }
- else if (bValue.Length > 5 && bValue[^5..] == "hours")
- {
- bValue = bValue.Replace("hours", "");
- bFloat = (float.Parse(bValue) * 3600);
- }
- else if (bValue.Length > 4 && bValue[^4..] == "days")
- {
- bValue = bValue.Replace("days", "");
- bFloat = (float.Parse(bValue) * 86400);
- }
- else
- {
- bValue = bValue[0..^8];
- bFloat = float.Parse(bValue);
- }
+ var numbers = time.Split(new char[] { 'd', 'h', 'm' });
- if (aFloat > bFloat)
- {
- return -1;
- }
- else if (bFloat > aFloat)
- {
- return 1;
- }
- else
- {
- return 0;
+ time = time.Replace(" ", "").Replace("d", ".").Replace("h", ":").Replace("m", "");
+
+ if (numbers.Length == 2)
+ {
+ return $"00.00:{time}";
+ }
+ else if (numbers.Length == 3)
+ {
+ return $"00.{time}";
+ }
+
+ return time;
}
+
+ string aValue = ReverseFormat(model.GetValue(a, 5).ToString());
+ string bValue = ReverseFormat(model.GetValue(b, 5).ToString());
+
+ return TimeSpan.Compare(TimeSpan.Parse(aValue), TimeSpan.Parse(bValue));
}
public static int LastPlayedSort(ITreeModel model, TreeIter a, TreeIter b)
@@ -123,4 +91,4 @@ namespace Ryujinx.Ui.Helper
}
}
}
-} \ No newline at end of file
+}