feature: supports to search/filter tags (#215)

This commit is contained in:
leo 2024-06-27 21:43:15 +08:00
parent 575f902a5d
commit f8c4137c78
No known key found for this signature in database
6 changed files with 50 additions and 7 deletions

View file

@ -99,6 +99,7 @@ namespace SourceGit.ViewModels
var builder = BuildBranchTree(_branches, _remotes);
LocalBranchTrees = builder.Locals;
RemoteBranchTrees = builder.Remotes;
VisibleTags = BuildVisibleTags();
}
}
}
@ -145,6 +146,13 @@ namespace SourceGit.ViewModels
private set => SetProperty(ref _tags, value);
}
[JsonIgnore]
public List<Models.Tag> VisibleTags
{
get => _visibleTags;
private set => SetProperty(ref _visibleTags, value);
}
[JsonIgnore]
public List<string> Submodules
{
@ -295,6 +303,7 @@ namespace SourceGit.ViewModels
_localBranchTrees.Clear();
_remoteBranchTrees.Clear();
_tags.Clear();
_visibleTags.Clear();
_submodules.Clear();
_searchedCommits.Clear();
}
@ -633,6 +642,7 @@ namespace SourceGit.ViewModels
Dispatcher.UIThread.Invoke(() =>
{
Tags = tags;
VisibleTags = BuildVisibleTags();
});
}
@ -1827,6 +1837,25 @@ namespace SourceGit.ViewModels
return builder;
}
private List<Models.Tag> BuildVisibleTags()
{
var visible = new List<Models.Tag>();
if (string.IsNullOrEmpty(_searchBranchFilter))
{
visible.AddRange(_tags);
}
else
{
foreach (var t in _tags)
{
if (t.Name.Contains(_searchBranchFilter, StringComparison.OrdinalIgnoreCase))
visible.Add(t);
}
}
return visible;
}
private string _fullpath = string.Empty;
private string _gitDir = string.Empty;
@ -1854,6 +1883,7 @@ namespace SourceGit.ViewModels
private List<BranchTreeNode> _remoteBranchTrees = new List<BranchTreeNode>();
private List<Models.Worktree> _worktrees = new List<Models.Worktree>();
private List<Models.Tag> _tags = new List<Models.Tag>();
private List<Models.Tag> _visibleTags = new List<Models.Tag>();
private List<string> _submodules = new List<string>();
private bool _includeUntracked = true;