Skip to content

Commit 21967e5

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 1848746 commit 21967e5

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
@@ -659,6 +659,7 @@
659659
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">LOCAL BRANCHES</x:String>
660660
<x:String x:Key="Text.Repository.MoreOptions" xml:space="preserve">More options...</x:String>
661661
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">Navigate to HEAD</x:String>
662+
<x:String x:Key="Text.Repository.SoloModeOnCurrentHead" xml:space="preserve">Solo On HEAD</x:String>
662663
<x:String x:Key="Text.Repository.NewBranch" xml:space="preserve">Create Branch</x:String>
663664
<x:String x:Key="Text.Repository.Notifications.Clear" xml:space="preserve">CLEAR NOTIFICATIONS</x:String>
664665
<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;
@@ -1071,10 +1072,13 @@ public void SetTagFilterMode(Models.Tag tag, Models.FilterMode mode)
10711072
if (changed)
10721073
RefreshHistoriesFilters(true);
10731074
}
1075+
10741076
public void SetSoloCommitFilterMode(Models.Commit commit, Models.FilterMode mode)
1075-
{
1076-
SetSoloCommitFilterMode(commit.SHA[..10], mode);
1077-
}
1077+
=> SetSoloCommitFilterMode(commit.SHA[..10], mode);
1078+
1079+
1080+
public void SetSoloCommitFilterMode(IEnumerable<Models.Commit> commits, Models.FilterMode mode)
1081+
=> SetSoloCommitFilterMode(commits.Select(x => x.SHA[..10]).ToList(), mode);
10781082

10791083
public void SetSoloCommitFilterMode(string sha, Models.FilterMode mode)
10801084
{
@@ -1083,6 +1087,16 @@ public void SetSoloCommitFilterMode(string sha, Models.FilterMode mode)
10831087
RefreshHistoriesFilters(true);
10841088
}
10851089

1090+
public void SetSoloCommitFilterMode(IEnumerable<string> shas, Models.FilterMode mode)
1091+
{
1092+
bool changed = false;
1093+
foreach (var sha in shas)
1094+
changed |= _settings.UpdateHistoriesFilter(sha, Models.FilterType.SoloCommits, mode);
1095+
1096+
if (changed)
1097+
RefreshHistoriesFilters(true);
1098+
}
1099+
10861100
public void SetBranchFilterMode(Models.Branch branch, Models.FilterMode mode, bool clearExists, bool refresh)
10871101
{
10881102
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
@@ -471,5 +471,14 @@ private void NavigateToHead(object sender, RoutedEventArgs e)
471471
e.Handled = true;
472472
}
473473
}
474+
475+
private void SoloModeOnCurrentHead(object sender, RoutedEventArgs e)
476+
{
477+
if (DataContext is ViewModels.Repository { CurrentBranch: not null } repo)
478+
{
479+
repo.SetSoloCommitFilterMode(["HEAD", repo.CurrentBranch.Head[..10]], Models.FilterMode.Included);
480+
e.Handled = true;
481+
}
482+
}
474483
}
475484
}

0 commit comments

Comments
 (0)