Skip to content

Commit 0ecb563

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 dafabc5 commit 0ecb563

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
@@ -672,6 +672,7 @@
672672
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">LOCAL BRANCHES</x:String>
673673
<x:String x:Key="Text.Repository.MoreOptions" xml:space="preserve">More options...</x:String>
674674
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">Navigate to HEAD</x:String>
675+
<x:String x:Key="Text.Repository.SoloModeOnCurrentHead" xml:space="preserve">Solo On HEAD</x:String>
675676
<x:String x:Key="Text.Repository.NewBranch" xml:space="preserve">Create Branch</x:String>
676677
<x:String x:Key="Text.Repository.Notifications.Clear" xml:space="preserve">CLEAR NOTIFICATIONS</x:String>
677678
<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;
@@ -1064,10 +1065,13 @@ public void SetTagFilterMode(Models.Tag tag, Models.FilterMode mode)
10641065
if (changed)
10651066
RefreshHistoriesFilters(true);
10661067
}
1068+
10671069
public void SetSoloCommitFilterMode(Models.Commit commit, Models.FilterMode mode)
1068-
{
1069-
SetSoloCommitFilterMode(commit.SHA[..10], mode);
1070-
}
1070+
=> SetSoloCommitFilterMode(commit.SHA[..10], mode);
1071+
1072+
1073+
public void SetSoloCommitFilterMode(IEnumerable<Models.Commit> commits, Models.FilterMode mode)
1074+
=> SetSoloCommitFilterMode(commits.Select(x => x.SHA[..10]).ToList(), mode);
10711075

10721076
public void SetSoloCommitFilterMode(string sha, Models.FilterMode mode)
10731077
{
@@ -1076,6 +1080,16 @@ public void SetSoloCommitFilterMode(string sha, Models.FilterMode mode)
10761080
RefreshHistoriesFilters(true);
10771081
}
10781082

1083+
public void SetSoloCommitFilterMode(IEnumerable<string> shas, Models.FilterMode mode)
1084+
{
1085+
bool changed = false;
1086+
foreach (var sha in shas)
1087+
changed |= _settings.UpdateHistoriesFilter(sha, Models.FilterType.SoloCommits, mode);
1088+
1089+
if (changed)
1090+
RefreshHistoriesFilters(true);
1091+
}
1092+
10791093
public void SetBranchFilterMode(Models.Branch branch, Models.FilterMode mode, bool clearExists, bool refresh)
10801094
{
10811095
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)