Skip to content

Commit d0d7e31

Browse files
committed
feat: Add solo mode functionality to repository toolbar
- Add a new localization string for solo mode functionality on HEAD. - Add a solo mode button to the repository toolbar for toggling the current head view. - Add solo commit filter mode for the current HEAD branch. - Add `HEAD` and `HEAD_SHA` both is usefull and comparable while HEAD is Changed
1 parent 04371a8 commit d0d7e31

File tree

4 files changed

+30
-3
lines changed

4 files changed

+30
-3
lines changed

src/Resources/Locales/en_US.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,7 @@
655655
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">LOCAL BRANCHES</x:String>
656656
<x:String x:Key="Text.Repository.MoreOptions" xml:space="preserve">More options...</x:String>
657657
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">Navigate to HEAD</x:String>
658+
<x:String x:Key="Text.Repository.SoloModeOnCurrentHead" xml:space="preserve">Solo On HEAD</x:String>
658659
<x:String x:Key="Text.Repository.NewBranch" xml:space="preserve">Create Branch</x:String>
659660
<x:String x:Key="Text.Repository.Notifications.Clear" xml:space="preserve">CLEAR NOTIFICATIONS</x:String>
660661
<x:String x:Key="Text.Repository.OnlyHighlightCurrentBranchInGraph" xml:space="preserve">Only highlight current branch</x:String>

src/ViewModels/Repository.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.IO;
4+
using System.Linq;
45
using System.Text;
56
using System.Text.Json;
67
using System.Threading;
@@ -1062,10 +1063,13 @@ public void SetTagFilterMode(Models.Tag tag, Models.FilterMode mode)
10621063
if (changed)
10631064
RefreshHistoriesFilters(true);
10641065
}
1066+
10651067
public void SetSoloCommitFilterMode(Models.Commit commit, Models.FilterMode mode)
1066-
{
1067-
SetSoloCommitFilterMode(commit.SHA[..10], mode);
1068-
}
1068+
=> SetSoloCommitFilterMode(commit.SHA[..10], mode);
1069+
1070+
1071+
public void SetSoloCommitFilterMode(IEnumerable<Models.Commit> commits, Models.FilterMode mode)
1072+
=> SetSoloCommitFilterMode(commits.Select(x => x.SHA[..10]).ToList(), mode);
10691073

10701074
public void SetSoloCommitFilterMode(string sha, Models.FilterMode mode)
10711075
{
@@ -1074,6 +1078,16 @@ public void SetSoloCommitFilterMode(string sha, Models.FilterMode mode)
10741078
RefreshHistoriesFilters(true);
10751079
}
10761080

1081+
public void SetSoloCommitFilterMode(IEnumerable<string> shas, Models.FilterMode mode)
1082+
{
1083+
bool changed = false;
1084+
foreach (var sha in shas)
1085+
changed |= _settings.UpdateHistoriesFilter(sha, Models.FilterType.SoloCommits, mode);
1086+
1087+
if (changed)
1088+
RefreshHistoriesFilters(true);
1089+
}
1090+
10771091
public void SetBranchFilterMode(Models.Branch branch, Models.FilterMode mode, bool clearExists, bool refresh)
10781092
{
10791093
var node = FindBranchNode(branch.IsLocal ? _localBranchTrees : _remoteBranchTrees, branch.FullName);

src/Views/RepositoryToolbar.axaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@
132132
<Button Classes="icon_button" Width="32" Click="NavigateToHead" ToolTip.Tip="{DynamicResource Text.Repository.NavigateToCurrentHead}">
133133
<Path Width="13" Height="13" Margin="0,2,0,0" Data="{StaticResource Icons.Target}" Fill="{DynamicResource Brush.FG1}"/>
134134
</Button>
135+
<Button Classes="icon_button" Width="32" Click="SoloModeOnCurrentHead" ToolTip.Tip="{DynamicResource Text.Repository.SoloModeOnCurrentHead}">
136+
<Path Width="13" Height="13" Margin="0,2,0,0" Data="{StaticResource Icons.LightOn}" Fill="{DynamicResource Brush.FG1}"/>
137+
</Button>
135138
</StackPanel>
136139
</Grid>
137140
</UserControl>

src/Views/RepositoryToolbar.axaml.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,5 +462,14 @@ private void NavigateToHead(object sender, RoutedEventArgs e)
462462
e.Handled = true;
463463
}
464464
}
465+
466+
private void SoloModeOnCurrentHead(object sender, RoutedEventArgs e)
467+
{
468+
if (DataContext is ViewModels.Repository { CurrentBranch: not null } repo)
469+
{
470+
repo.SetSoloCommitFilterMode(["HEAD", repo.CurrentBranch.Head[..10]], Models.FilterMode.Included);
471+
e.Handled = true;
472+
}
473+
}
465474
}
466475
}

0 commit comments

Comments
 (0)