Skip to content

Commit f6e0b0b

Browse files
committed
feature: hover on tag view shows the message of it (#567)
1 parent 9ed5226 commit f6e0b0b

File tree

5 files changed

+67
-57
lines changed

5 files changed

+67
-57
lines changed

src/Commands/QueryTags.cs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ public class QueryTags : Command
77
{
88
public QueryTags(string repo)
99
{
10+
_boundary = $"----- BOUNDARY OF TAGS {Guid.NewGuid()} -----";
11+
1012
Context = repo;
1113
WorkingDirectory = repo;
12-
Args = "tag -l --sort=-creatordate --format=\"%(refname)%00%(objectname)%00%(*objectname)\"";
14+
Args = $"tag -l --sort=-creatordate --format=\"{_boundary}%(refname)%00%(objectname)%00%(*objectname)%00%(contents:subject)%0a%0a%(contents:body)\"";
1315
}
1416

1517
public List<Models.Tag> Result()
@@ -19,27 +21,25 @@ public QueryTags(string repo)
1921
if (!rs.IsSuccess)
2022
return tags;
2123

22-
var lines = rs.StdOut.Split('\n', StringSplitOptions.RemoveEmptyEntries);
23-
foreach (var line in lines)
24+
var records = rs.StdOut.Split(_boundary, StringSplitOptions.RemoveEmptyEntries);
25+
foreach (var record in records)
2426
{
25-
var tag = ParseLine(line);
26-
if (tag != null)
27-
tags.Add(tag);
27+
var subs = record.Split('\0', StringSplitOptions.None);
28+
if (subs.Length != 4)
29+
continue;
30+
31+
var message = subs[3].Trim();
32+
tags.Add(new Models.Tag()
33+
{
34+
Name = subs[0].Substring(10),
35+
SHA = string.IsNullOrEmpty(subs[2]) ? subs[1] : subs[2],
36+
Message = string.IsNullOrEmpty(message) ? null : message,
37+
});
2838
}
2939

3040
return tags;
3141
}
3242

33-
private Models.Tag ParseLine(string line)
34-
{
35-
var subs = line.Split('\0');
36-
if (subs.Length != 3)
37-
return null;
38-
39-
var tag = new Models.Tag();
40-
tag.Name = subs[0].Substring(10);
41-
tag.SHA = string.IsNullOrEmpty(subs[2]) ? subs[1] : subs[2];
42-
return tag;
43-
}
43+
private string _boundary = string.Empty;
4444
}
4545
}

src/Models/Tag.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ public class Tag
44
{
55
public string Name { get; set; }
66
public string SHA { get; set; }
7+
public string Message { get; set; }
78
public bool IsFiltered { get; set; }
89
}
910
}

src/ViewModels/TagCollection.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ public class TagTreeNode : ObservableObject
1212
public Models.Tag Tag { get; private set; } = null;
1313
public List<TagTreeNode> Children { get; private set; } = [];
1414

15+
public object ToolTip
16+
{
17+
get => Tag?.Message;
18+
}
19+
1520
public bool IsFolder
1621
{
1722
get => Tag == null;

src/Views/BranchTree.axaml

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -33,49 +33,49 @@
3333
ColumnDefinitions="16,*"
3434
ToolTip.Tip="{Binding Tooltip}">
3535

36-
<!-- Tree Expander -->
37-
<v:BranchTreeNodeToggleButton Grid.Column="0"
38-
Classes="tree_expander"
39-
Focusable="False"
40-
HorizontalAlignment="Center"
41-
IsChecked="{Binding IsExpanded, Mode=OneWay}"
42-
IsVisible="{Binding !IsBranch}"/>
36+
<!-- Tree Expander -->
37+
<v:BranchTreeNodeToggleButton Grid.Column="0"
38+
Classes="tree_expander"
39+
Focusable="False"
40+
HorizontalAlignment="Center"
41+
IsChecked="{Binding IsExpanded, Mode=OneWay}"
42+
IsVisible="{Binding !IsBranch}"/>
4343

44-
<!-- Content Area (allows double-click) -->
45-
<Grid Grid.Column="1"
46-
Background="Transparent"
47-
ColumnDefinitions="18,*,Auto,Auto"
48-
DoubleTapped="OnDoubleTappedBranchNode">
44+
<!-- Content Area (allows double-click) -->
45+
<Grid Grid.Column="1"
46+
Background="Transparent"
47+
ColumnDefinitions="18,*,Auto,Auto"
48+
DoubleTapped="OnDoubleTappedBranchNode">
4949

50-
<!-- Icon -->
51-
<v:BranchTreeNodeIcon Grid.Column="0"
52-
Node="{Binding}"
53-
IsExpanded="{Binding IsExpanded}"/>
50+
<!-- Icon -->
51+
<v:BranchTreeNodeIcon Grid.Column="0"
52+
Node="{Binding}"
53+
IsExpanded="{Binding IsExpanded}"/>
5454

55-
<!-- Name -->
56-
<TextBlock Grid.Column="1"
57-
Text="{Binding Name}"
58-
Classes="primary"
59-
FontWeight="{Binding NameFontWeight}"
60-
TextTrimming="CharacterEllipsis"/>
55+
<!-- Name -->
56+
<TextBlock Grid.Column="1"
57+
Text="{Binding Name}"
58+
Classes="primary"
59+
FontWeight="{Binding NameFontWeight}"
60+
TextTrimming="CharacterEllipsis"/>
6161

62-
<!-- Tracking status -->
63-
<v:BranchTreeNodeTrackStatusPresenter Grid.Column="2"
64-
VerticalAlignment="Center"
65-
FontFamily="{DynamicResource Fonts.Monospace}"
66-
FontSize="10"
67-
Foreground="{DynamicResource Brush.BadgeFG}"
68-
Background="{DynamicResource Brush.Badge}"/>
62+
<!-- Tracking status -->
63+
<v:BranchTreeNodeTrackStatusPresenter Grid.Column="2"
64+
VerticalAlignment="Center"
65+
FontFamily="{DynamicResource Fonts.Monospace}"
66+
FontSize="10"
67+
Foreground="{DynamicResource Brush.BadgeFG}"
68+
Background="{DynamicResource Brush.Badge}"/>
6969

70-
<!-- Filter Toggle Button -->
71-
<ToggleButton Grid.Column="3"
72-
Classes="filter"
73-
Margin="0,0,8,0"
74-
Background="Transparent"
75-
IsVisible="{Binding IsBranch}"
76-
IsChecked="{Binding IsFiltered}"
77-
Click="OnToggleFilterClicked"
78-
ToolTip.Tip="{DynamicResource Text.Filter}"/>
70+
<!-- Filter Toggle Button -->
71+
<ToggleButton Grid.Column="3"
72+
Classes="filter"
73+
Margin="0,0,8,0"
74+
Background="Transparent"
75+
IsVisible="{Binding IsBranch}"
76+
IsChecked="{Binding IsFiltered}"
77+
Click="OnToggleFilterClicked"
78+
ToolTip.Tip="{DynamicResource Text.Filter}"/>
7979
</Grid>
8080
</Grid>
8181
</DataTemplate>

src/Views/TagsView.axaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
Margin="{Binding Depth, Converter={x:Static c:IntConverters.ToTreeMargin}}"
2727
Background="Transparent"
2828
ContextRequested="OnRowContextRequested"
29-
DoubleTapped="OnDoubleTappedNode">
29+
DoubleTapped="OnDoubleTappedNode"
30+
ToolTip.Tip="{Binding ToolTip}">
3031
<v:TagTreeNodeToggleButton Grid.Column="0"
3132
Classes="tree_expander"
3233
Focusable="False"
@@ -64,7 +65,10 @@
6465
SelectionChanged="OnRowSelectionChanged">
6566
<ListBox.ItemTemplate>
6667
<DataTemplate DataType="m:Tag">
67-
<Grid ColumnDefinitions="Auto,*,Auto" Background="Transparent" ContextRequested="OnRowContextRequested">
68+
<Grid ColumnDefinitions="Auto,*,Auto"
69+
Background="Transparent"
70+
ContextRequested="OnRowContextRequested"
71+
ToolTip.Tip="{Binding Message}">
6872
<Path Grid.Column="0"
6973
Width="10" Height="10"
7074
Margin="8,0,0,0"

0 commit comments

Comments
 (0)