feature: show branches count in branch tree (#1306)

This commit is contained in:
leo 2025-05-13 19:28:52 +08:00
parent 57d15dc6d3
commit 7bb4e355bd
No known key found for this signature in database
5 changed files with 38 additions and 6 deletions

View file

@ -14,6 +14,7 @@ namespace SourceGit.ViewModels
public int Depth { get; set; } = 0;
public bool IsSelected { get; set; } = false;
public List<BranchTreeNode> Children { get; private set; } = new List<BranchTreeNode>();
public int Counter { get; set; } = 0;
public Models.FilterMode FilterMode
{
@ -48,6 +49,11 @@ namespace SourceGit.ViewModels
get => Backend is Models.Branch { IsUpstreamGone: true };
}
public string BranchesCount
{
get => Counter > 0 ? $"({Counter})" : string.Empty;
}
public string Tooltip
{
get => Backend is Models.Branch b ? b.FriendlyName : null;
@ -107,7 +113,10 @@ namespace SourceGit.ViewModels
var rk = $"refs/remotes/{branch.Remote}";
if (folders.TryGetValue(rk, out var remote))
{
remote.Counter++;
MakeBranchNode(branch, remote.Children, folders, rk, bForceExpanded);
}
}
foreach (var path in _expanded)
@ -157,6 +166,7 @@ namespace SourceGit.ViewModels
if (folders.TryGetValue(folder, out var val))
{
lastFolder = val;
lastFolder.Counter++;
lastFolder.TimeToSort = Math.Max(lastFolder.TimeToSort, time);
if (!lastFolder.IsExpanded)
lastFolder.IsExpanded |= (branch.IsCurrent || _expanded.Contains(folder));
@ -169,6 +179,7 @@ namespace SourceGit.ViewModels
Path = folder,
IsExpanded = bForceExpanded || branch.IsCurrent || _expanded.Contains(folder),
TimeToSort = time,
Counter = 1,
};
roots.Add(lastFolder);
folders.Add(folder, lastFolder);
@ -181,6 +192,7 @@ namespace SourceGit.ViewModels
Path = folder,
IsExpanded = bForceExpanded || branch.IsCurrent || _expanded.Contains(folder),
TimeToSort = time,
Counter = 1,
};
lastFolder.Children.Add(cur);
folders.Add(folder, cur);