Skip to content

Commit a121c60

Browse files
committed
feat: support navigat filter to repository view
- Add branch and tag navigation support to the repository view model. - Increase filter item height and replace text block with clickable button for navigation. - Add navigation functionality for different filter types in the repository view.
1 parent 3678ef4 commit a121c60

File tree

3 files changed

+54
-3
lines changed

3 files changed

+54
-3
lines changed

src/ViewModels/Repository.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,10 +1008,26 @@ public void NavigateToCommit(string sha, bool isDelayMode = false)
10081008
else if (_histories != null)
10091009
{
10101010
SelectedViewIndex = 0;
1011+
if (sha == "HEAD")
1012+
sha = _currentBranch.Head;
10111013
_histories.NavigateTo(sha);
10121014
}
10131015
}
10141016

1017+
public void NavigateToBranch(string branch, bool isDelayMode = false)
1018+
{
1019+
var b = _branches.Find(b => b.FullName.Equals(branch, StringComparison.Ordinal));
1020+
if (b != null)
1021+
NavigateToCommit(b.Head);
1022+
}
1023+
1024+
public void NavigateToTag(string tag, bool isDelayMode = false)
1025+
{
1026+
var t = _tags.Find(t => t.Name.Equals(tag, StringComparison.Ordinal));
1027+
if (t != null)
1028+
NavigateToCommit(t.SHA);
1029+
}
1030+
10151031
public void ClearCommitMessage()
10161032
{
10171033
if (_workingCopy is not null)

src/Views/Repository.axaml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -800,16 +800,22 @@
800800

801801
<ItemsControl.ItemTemplate>
802802
<DataTemplate DataType="m:Filter">
803-
<Border Height="20"
803+
<Border Height="24"
804804
Margin="0,0,6,0"
805805
CornerRadius="12"
806806
BorderThickness="1"
807807
BorderBrush="{Binding Mode, Converter={x:Static c:FilterModeConverters.ToBorderBrush}}">
808808
<StackPanel Orientation="Horizontal" Margin="8,0">
809809
<Path Width="10" Height="10" Data="{StaticResource Icons.Branch}" IsVisible="{Binding IsBranch}"/>
810810
<Path Width="10" Height="10" Data="{StaticResource Icons.Tag}" IsVisible="{Binding !IsBranch}"/>
811-
<TextBlock Classes="primary" Text="{Binding Pattern, Converter={x:Static c:StringConverters.TrimRefsPrefix}}" Margin="4,0,8,0"/>
812-
811+
<Button Margin="4,0,8,0"
812+
Padding="0"
813+
Background="Transparent"
814+
BorderThickness="0"
815+
Classes="icon_button"
816+
Click="OnNavigateToFilter"
817+
Content="{Binding Pattern, Converter={x:Static c:StringConverters.TrimRefsPrefix}}"
818+
/>
813819
<Button Classes="icon_button" VerticalAlignment="Center" Margin="0" Padding="0" Click="OnRemoveSelectedHistoriesFilter">
814820
<Path Width="8" Height="8" Data="{StaticResource Icons.Close}"/>
815821
</Button>

src/Views/Repository.axaml.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -667,6 +667,35 @@ private async void OnAbortInProgress(object sender, RoutedEventArgs e)
667667
e.Handled = true;
668668
}
669669

670+
private void OnNavigateToFilter(object sender, RoutedEventArgs e)
671+
{
672+
if (DataContext is ViewModels.Repository repo && sender is Button { DataContext: Models.Filter filter })
673+
{
674+
if (filter.Mode == Models.FilterMode.Excluded)
675+
return;
676+
677+
switch (filter.Type)
678+
{
679+
default:
680+
case Models.FilterType.LocalBranchFolder:
681+
case Models.FilterType.RemoteBranchFolder:
682+
break;
683+
case Models.FilterType.LocalBranch:
684+
case Models.FilterType.RemoteBranch:
685+
repo.NavigateToBranch(filter.Pattern);
686+
break;
687+
case Models.FilterType.Tag:
688+
repo.NavigateToTag(filter.Pattern);
689+
break;
690+
case Models.FilterType.SoloCommits:
691+
repo.NavigateToCommit(filter.Pattern);
692+
break;
693+
}
694+
e.Handled = true;
695+
}
696+
}
697+
698+
670699
private void OnRemoveSelectedHistoriesFilter(object sender, RoutedEventArgs e)
671700
{
672701
if (DataContext is ViewModels.Repository repo && sender is Button { DataContext: Models.Filter filter })

0 commit comments

Comments
 (0)