Skip to content

Commit b1457fe

Browse files
committed
feature: supports filter submodules (#443)
1 parent 0e774ee commit b1457fe

File tree

9 files changed

+60
-29
lines changed

9 files changed

+60
-29
lines changed

src/Resources/Locales/de_DE.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,7 @@
482482
<x:String x:Key="Text.Repository.Configure" xml:space="preserve">Repository Einstellungen</x:String>
483483
<x:String x:Key="Text.Repository.Continue" xml:space="preserve">WEITER</x:String>
484484
<x:String x:Key="Text.Repository.Explore" xml:space="preserve">Öffne im Datei-Browser</x:String>
485+
<x:String x:Key="Text.Repository.Filter" xml:space="preserve">Suche Branches &amp; Tags &amp; Submodules</x:String>
485486
<x:String x:Key="Text.Repository.FilterCommitPrefix" xml:space="preserve">GEFILTERT:</x:String>
486487
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">LOKALE BRANCHES</x:String>
487488
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">Zum HEAD wechseln</x:String>
@@ -499,7 +500,6 @@
499500
<x:String x:Key="Text.Repository.Search.ByMessage" xml:space="preserve">Commit-Nachricht</x:String>
500501
<x:String x:Key="Text.Repository.Search.BySHA" xml:space="preserve">SHA</x:String>
501502
<x:String x:Key="Text.Repository.Search.ByUser" xml:space="preserve">Autor &amp; Committer</x:String>
502-
<x:String x:Key="Text.Repository.SearchBranchTag" xml:space="preserve">Suche Branches &amp; Tags</x:String>
503503
<x:String x:Key="Text.Repository.ShowTagsAsTree" xml:space="preserve">Zeige Tags als Baum</x:String>
504504
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">Statistiken</x:String>
505505
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">SUBMODULE</x:String>

src/Resources/Locales/en_US.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,7 @@
484484
<x:String x:Key="Text.Repository.Configure" xml:space="preserve">Configure this repository</x:String>
485485
<x:String x:Key="Text.Repository.Continue" xml:space="preserve">CONTINUE</x:String>
486486
<x:String x:Key="Text.Repository.Explore" xml:space="preserve">Open In File Browser</x:String>
487+
<x:String x:Key="Text.Repository.Filter" xml:space="preserve">Search Branches &amp; Tags &amp; Submodules</x:String>
487488
<x:String x:Key="Text.Repository.FilterCommitPrefix" xml:space="preserve">FILTERED BY:</x:String>
488489
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">LOCAL BRANCHES</x:String>
489490
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">Navigate To HEAD</x:String>
@@ -501,7 +502,6 @@
501502
<x:String x:Key="Text.Repository.Search.ByMessage" xml:space="preserve">Message</x:String>
502503
<x:String x:Key="Text.Repository.Search.BySHA" xml:space="preserve">SHA</x:String>
503504
<x:String x:Key="Text.Repository.Search.ByUser" xml:space="preserve">Author &amp; Committer</x:String>
504-
<x:String x:Key="Text.Repository.SearchBranchTag" xml:space="preserve">Search Branches &amp; Tags</x:String>
505505
<x:String x:Key="Text.Repository.ShowTagsAsTree" xml:space="preserve">Show Tags as Tree</x:String>
506506
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">Statistics</x:String>
507507
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">SUBMODULES</x:String>

src/Resources/Locales/fr_FR.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,7 @@
481481
<x:String x:Key="Text.Repository.Configure" xml:space="preserve">Configure this repository</x:String>
482482
<x:String x:Key="Text.Repository.Continue" xml:space="preserve">CONTINUE</x:String>
483483
<x:String x:Key="Text.Repository.Explore" xml:space="preserve">Ouvrir dans l'explorateur Windows</x:String>
484+
<x:String x:Key="Text.Repository.Filter" xml:space="preserve">Search Branches &amp; Tags &amp; Submodules</x:String>
484485
<x:String x:Key="Text.Repository.FilterCommitPrefix" xml:space="preserve">FILTERED BY:</x:String>
485486
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">LOCAL BRANCHES</x:String>
486487
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">Navigate To HEAD</x:String>
@@ -498,7 +499,6 @@
498499
<x:String x:Key="Text.Repository.Search.ByMessage" xml:space="preserve">Message</x:String>
499500
<x:String x:Key="Text.Repository.Search.BySHA" xml:space="preserve">SHA</x:String>
500501
<x:String x:Key="Text.Repository.Search.ByUser" xml:space="preserve">Author &amp; Committer</x:String>
501-
<x:String x:Key="Text.Repository.SearchBranchTag" xml:space="preserve">Search Branches &amp; Tags</x:String>
502502
<x:String x:Key="Text.Repository.ShowTagsAsTree" xml:space="preserve">Show Tags as Tree</x:String>
503503
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">Statistics</x:String>
504504
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">SUBMODULES</x:String>

src/Resources/Locales/pt_BR.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,7 @@
474474
<x:String x:Key="Text.Repository.Configure" xml:space="preserve">Configurar este repositório</x:String>
475475
<x:String x:Key="Text.Repository.Continue" xml:space="preserve">CONTINUAR</x:String>
476476
<x:String x:Key="Text.Repository.Explore" xml:space="preserve">Abrir no Navegador de Arquivos</x:String>
477+
<x:String x:Key="Text.Repository.Filter" xml:space="preserve">Pesquisar Branches &amp; Tags &amp; Submódulos</x:String>
477478
<x:String x:Key="Text.Repository.FilterCommitPrefix" xml:space="preserve">FILTRADO POR:</x:String>
478479
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">BRANCHES LOCAIS</x:String>
479480
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">Navegar para HEAD</x:String>
@@ -491,7 +492,6 @@
491492
<x:String x:Key="Text.Repository.Search.ByMessage" xml:space="preserve">Mensagem</x:String>
492493
<x:String x:Key="Text.Repository.Search.BySHA" xml:space="preserve">SHA</x:String>
493494
<x:String x:Key="Text.Repository.Search.ByUser" xml:space="preserve">Autor &amp; Committer</x:String>
494-
<x:String x:Key="Text.Repository.SearchBranchTag" xml:space="preserve">Pesquisar Branches &amp; Tags</x:String>
495495
<x:String x:Key="Text.Repository.ShowTagsAsTree" xml:space="preserve">Mostrar Tags como Árvore</x:String>
496496
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">Estatísticas</x:String>
497497
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">SUBMÓDULOS</x:String>

src/Resources/Locales/zh_CN.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,7 @@
486486
<x:String x:Key="Text.Repository.Configure" xml:space="preserve">配置本仓库</x:String>
487487
<x:String x:Key="Text.Repository.Continue" xml:space="preserve">下一步</x:String>
488488
<x:String x:Key="Text.Repository.Explore" xml:space="preserve">在文件浏览器中打开</x:String>
489+
<x:String x:Key="Text.Repository.Filter" xml:space="preserve">快速查找分支、标签、子模块</x:String>
489490
<x:String x:Key="Text.Repository.FilterCommitPrefix" xml:space="preserve">过滤规则 :</x:String>
490491
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">本地分支</x:String>
491492
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">定位HEAD</x:String>
@@ -503,7 +504,6 @@
503504
<x:String x:Key="Text.Repository.Search.ByMessage" xml:space="preserve">提交信息</x:String>
504505
<x:String x:Key="Text.Repository.Search.BySHA" xml:space="preserve">提交指纹</x:String>
505506
<x:String x:Key="Text.Repository.Search.ByUser" xml:space="preserve">作者及提交者</x:String>
506-
<x:String x:Key="Text.Repository.SearchBranchTag" xml:space="preserve">快速查找分支、标签</x:String>
507507
<x:String x:Key="Text.Repository.ShowTagsAsTree" xml:space="preserve">以树型结构展示</x:String>
508508
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">提交统计</x:String>
509509
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">子模块列表</x:String>

src/Resources/Locales/zh_TW.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,7 @@
487487
<x:String x:Key="Text.Repository.Configure" xml:space="preserve">設定本存放庫</x:String>
488488
<x:String x:Key="Text.Repository.Continue" xml:space="preserve">下一步</x:String>
489489
<x:String x:Key="Text.Repository.Explore" xml:space="preserve">在檔案瀏覽器中開啟</x:String>
490+
<x:String x:Key="Text.Repository.Filter" xml:space="preserve">快速搜尋分支、標籤、子模組</x:String>
490491
<x:String x:Key="Text.Repository.FilterCommitPrefix" xml:space="preserve">篩選規則:</x:String>
491492
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">本機分支</x:String>
492493
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">回到 HEAD</x:String>
@@ -504,7 +505,6 @@
504505
<x:String x:Key="Text.Repository.Search.ByMessage" xml:space="preserve">提交訊息</x:String>
505506
<x:String x:Key="Text.Repository.Search.BySHA" xml:space="preserve">提交編號</x:String>
506507
<x:String x:Key="Text.Repository.Search.ByUser" xml:space="preserve">作者及提交者</x:String>
507-
<x:String x:Key="Text.Repository.SearchBranchTag" xml:space="preserve">快速搜尋分支、標籤</x:String>
508508
<x:String x:Key="Text.Repository.ShowTagsAsTree" xml:space="preserve">以樹型結構展示</x:String>
509509
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">提交統計</x:String>
510510
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">子模組列表</x:String>

src/ViewModels/Repository.cs

Lines changed: 47 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,18 @@ public bool EnableFirstParentInHistories
8383
}
8484
}
8585

86-
public string SearchBranchFilter
86+
public string Filter
8787
{
88-
get => _searchBranchFilter;
88+
get => _filter;
8989
set
9090
{
91-
if (SetProperty(ref _searchBranchFilter, value))
91+
if (SetProperty(ref _filter, value))
9292
{
9393
var builder = BuildBranchTree(_branches, _remotes);
9494
LocalBranchTrees = builder.Locals;
9595
RemoteBranchTrees = builder.Remotes;
9696
VisibleTags = BuildVisibleTags();
97+
VisibleSubmodules = BuildVisibleSubmodules();
9798
}
9899
}
99100
}
@@ -152,6 +153,12 @@ public List<Models.Submodule> Submodules
152153
private set => SetProperty(ref _submodules, value);
153154
}
154155

156+
public List<Models.Submodule> VisibleSubmodules
157+
{
158+
get => _visibleSubmodules;
159+
private set => SetProperty(ref _visibleSubmodules, value);
160+
}
161+
155162
public int LocalChangesCount
156163
{
157164
get => _localChangesCount;
@@ -391,6 +398,7 @@ public void Close()
391398
_tags.Clear();
392399
_visibleTags.Clear();
393400
_submodules.Clear();
401+
_visibleSubmodules.Clear();
394402
_searchedCommits.Clear();
395403

396404
_revisionFiles.Clear();
@@ -525,6 +533,11 @@ public void Cleanup()
525533
PopupHost.ShowAndStartPopup(new Cleanup(this));
526534
}
527535

536+
public void ClearFilter()
537+
{
538+
Filter = string.Empty;
539+
}
540+
528541
public void ClearHistoriesFilter()
529542
{
530543
_settings.Filters.Clear();
@@ -582,11 +595,6 @@ public void StartSearchCommits()
582595
});
583596
}
584597

585-
public void ClearSearchBranchFilter()
586-
{
587-
SearchBranchFilter = string.Empty;
588-
}
589-
590598
public void SetWatcherEnabled(bool enabled)
591599
{
592600
_watcher?.SetEnabled(enabled);
@@ -811,7 +819,12 @@ public void RefreshSubmodules()
811819
{
812820
var submodules = new Commands.QuerySubmodules(_fullpath).Result();
813821
_watcher?.SetSubmodules(submodules);
814-
Dispatcher.UIThread.Invoke(() => Submodules = submodules);
822+
823+
Dispatcher.UIThread.Invoke(() =>
824+
{
825+
Submodules = submodules;
826+
VisibleSubmodules = BuildVisibleSubmodules();
827+
});
815828
}
816829

817830
public void RefreshWorkingCopyChanges()
@@ -1919,7 +1932,7 @@ private BranchTreeNode.Builder BuildBranchTree(List<Models.Branch> branches, Lis
19191932
var builder = new BranchTreeNode.Builder();
19201933
builder.SetFilters(_settings.Filters);
19211934

1922-
if (string.IsNullOrEmpty(_searchBranchFilter))
1935+
if (string.IsNullOrEmpty(_filter))
19231936
{
19241937
builder.CollectExpandedNodes(_localBranchTrees, true);
19251938
builder.CollectExpandedNodes(_remoteBranchTrees, false);
@@ -1930,7 +1943,7 @@ private BranchTreeNode.Builder BuildBranchTree(List<Models.Branch> branches, Lis
19301943
var visibles = new List<Models.Branch>();
19311944
foreach (var b in branches)
19321945
{
1933-
if (b.FullName.Contains(_searchBranchFilter, StringComparison.OrdinalIgnoreCase))
1946+
if (b.FullName.Contains(_filter, StringComparison.OrdinalIgnoreCase))
19341947
visibles.Add(b);
19351948
}
19361949

@@ -1943,22 +1956,40 @@ private BranchTreeNode.Builder BuildBranchTree(List<Models.Branch> branches, Lis
19431956
private List<Models.Tag> BuildVisibleTags()
19441957
{
19451958
var visible = new List<Models.Tag>();
1946-
if (string.IsNullOrEmpty(_searchBranchFilter))
1959+
if (string.IsNullOrEmpty(_filter))
19471960
{
19481961
visible.AddRange(_tags);
19491962
}
19501963
else
19511964
{
19521965
foreach (var t in _tags)
19531966
{
1954-
if (t.Name.Contains(_searchBranchFilter, StringComparison.OrdinalIgnoreCase))
1967+
if (t.Name.Contains(_filter, StringComparison.OrdinalIgnoreCase))
19551968
visible.Add(t);
19561969
}
19571970
}
19581971

19591972
return visible;
19601973
}
19611974

1975+
private List<Models.Submodule> BuildVisibleSubmodules()
1976+
{
1977+
var visible = new List<Models.Submodule>();
1978+
if (string.IsNullOrEmpty(_filter))
1979+
{
1980+
visible.AddRange(_submodules);
1981+
}
1982+
else
1983+
{
1984+
foreach (var s in _submodules)
1985+
{
1986+
if (s.Path.Contains(_filter, StringComparison.OrdinalIgnoreCase))
1987+
visible.Add(s);
1988+
}
1989+
}
1990+
return visible;
1991+
}
1992+
19621993
private void UpdateCurrentRevisionFilesForSearchSuggestion()
19631994
{
19641995
_revisionFiles.Clear();
@@ -2002,8 +2033,7 @@ private void UpdateCurrentRevisionFilesForSearchSuggestion()
20022033
private bool _isSubmoduleGroupExpanded = false;
20032034
private bool _isWorktreeGroupExpanded = false;
20042035

2005-
private string _searchBranchFilter = string.Empty;
2006-
2036+
private string _filter = string.Empty;
20072037
private List<Models.Remote> _remotes = new List<Models.Remote>();
20082038
private List<Models.Branch> _branches = new List<Models.Branch>();
20092039
private Models.Branch _currentBranch = null;
@@ -2013,8 +2043,9 @@ private void UpdateCurrentRevisionFilesForSearchSuggestion()
20132043
private List<Models.Tag> _tags = new List<Models.Tag>();
20142044
private List<Models.Tag> _visibleTags = new List<Models.Tag>();
20152045
private List<Models.Submodule> _submodules = new List<Models.Submodule>();
2016-
private bool _includeUntracked = true;
2046+
private List<Models.Submodule> _visibleSubmodules = new List<Models.Submodule>();
20172047

2048+
private bool _includeUntracked = true;
20182049
private InProgressContext _inProgressContext = null;
20192050
private bool _hasUnsolvedConflicts = false;
20202051
private Models.Commit _searchResultSelectedCommit = null;

src/Views/Repository.axaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,15 +128,15 @@
128128
</Border>
129129
</Border>
130130

131-
<!-- Filter Branches -->
131+
<!-- Filter Branches/Tags/Submodules -->
132132
<TextBox Grid.Row="1"
133133
Height="24"
134134
Margin="8,6,4,0"
135135
BorderThickness="1"
136136
CornerRadius="4"
137137
BorderBrush="{DynamicResource Brush.Border2}"
138-
Watermark="{DynamicResource Text.Repository.SearchBranchTag}"
139-
Text="{Binding SearchBranchFilter, Mode=TwoWay}"
138+
Watermark="{DynamicResource Text.Repository.Filter}"
139+
Text="{Binding Filter, Mode=TwoWay}"
140140
VerticalContentAlignment="Center">
141141
<TextBox.InnerLeftContent>
142142
<Path Width="14" Height="14"
@@ -149,8 +149,8 @@
149149
<Button Classes="icon_button"
150150
Width="16"
151151
Margin="0,0,6,0"
152-
Command="{Binding ClearSearchBranchFilter}"
153-
IsVisible="{Binding SearchBranchFilter, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
152+
Command="{Binding ClearFilter}"
153+
IsVisible="{Binding Filter, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
154154
HorizontalAlignment="Right">
155155
<Path Width="14" Height="14"
156156
Margin="0,1,0,0"
@@ -253,7 +253,7 @@
253253
Height="0"
254254
Margin="8,0,4,0"
255255
Classes="repo_left_content_list"
256-
ItemsSource="{Binding Submodules}"
256+
ItemsSource="{Binding VisibleSubmodules}"
257257
SelectionMode="Single"
258258
ContextRequested="OnSubmoduleContextRequested"
259259
DoubleTapped="OnDoubleTappedSubmodule"

src/Views/Repository.axaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ private void UpdateLeftSidebarLayout()
252252
var remoteBranchRows = vm.IsRemoteGroupExpanded ? RemoteBranchTree.Rows.Count : 0;
253253
var desiredBranches = (localBranchRows + remoteBranchRows) * 24.0;
254254
var desiredTag = vm.IsTagGroupExpanded ? 24.0 * TagsList.Rows : 0;
255-
var desiredSubmodule = vm.IsSubmoduleGroupExpanded ? 24.0 * vm.Submodules.Count : 0;
255+
var desiredSubmodule = vm.IsSubmoduleGroupExpanded ? 24.0 * vm.VisibleSubmodules.Count : 0;
256256
var desiredWorktree = vm.IsWorktreeGroupExpanded ? 24.0 * vm.Worktrees.Count : 0;
257257
var desiredOthers = desiredTag + desiredSubmodule + desiredWorktree;
258258
var hasOverflow = (desiredBranches + desiredOthers > leftHeight);

0 commit comments

Comments
 (0)