program selection sorting by appid

This commit is contained in:
pointfeev 2021-11-30 09:50:15 -05:00
parent b2d5dadf88
commit 07ac9abb5e
No known key found for this signature in database
GPG key ID: AA14DC36C4D7D13C

View file

@ -2,6 +2,7 @@
using Gameloop.Vdf.Linq;
using Microsoft.Win32;
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
@ -197,6 +198,7 @@ namespace CreamInstaller
{
if (Program.Canceled) return;
TreeNode programNode = treeNodes.Find(s => s.Text == name) ?? new();
programNode.Name = "" + appId;
programNode.Text = name;
programNode.Checked = selection.Enabled;
programNode.Remove();
@ -211,6 +213,7 @@ namespace CreamInstaller
{
if (Program.Canceled || programNode is null) return;
TreeNode dlcNode = treeNodes.Find(s => s.Text == dlcApp.Value) ?? new();
dlcNode.Name = "" + dlcApp.Key;
dlcNode.Text = dlcApp.Value;
dlcNode.Checked = selection.SelectedSteamDlc.Contains(dlcApp);
dlcNode.Remove();
@ -234,8 +237,6 @@ namespace CreamInstaller
progress.Report(RunningTasks.Count);
}
private bool validated = false;
private async void OnLoad()
{
Program.Canceled = false;
@ -282,6 +283,7 @@ namespace CreamInstaller
setup = false;
label2.Text = "Gathering and caching your applicable games and their DLCs . . . ";
await Task.Run(() => GetCreamApiApplicablePrograms(iProgress));
treeView1.Sort();
ProgramSelection.All.ForEach(selection => selection.SteamApiDllDirectories.RemoveAll(directory => !Directory.Exists(directory)));
ProgramSelection.All.RemoveAll(selection => !Directory.Exists(selection.RootDirectory) || !selection.SteamApiDllDirectories.Any());
@ -301,12 +303,6 @@ namespace CreamInstaller
acceptButton.Enabled = ProgramSelection.AllSafeEnabled.Any();
cancelButton.Enabled = false;
scanButton.Enabled = true;
if (!validated && !Program.Canceled)
{
validated = true;
OnLoad();
}
}
private void OnTreeViewNodeCheckedChanged(object sender, TreeViewEventArgs e)
@ -333,8 +329,19 @@ namespace CreamInstaller
acceptButton.Enabled = ProgramSelection.AllSafeEnabled.Any();
}
private class TreeNodeSorter : IComparer
{
public int Compare(object a, object b)
{
TreeNode A = a as TreeNode;
TreeNode B = b as TreeNode;
return int.Parse(A.Name) > int.Parse(B.Name) ? 1 : 0;
}
}
private void OnLoad(object sender, EventArgs _)
{
treeView1.TreeViewNodeSorter = new TreeNodeSorter();
treeView1.AfterCheck += OnTreeViewNodeCheckedChanged;
treeView1.NodeMouseClick += (sender, e) =>
{