Skip to content

Commit d6cbb28

Browse files
authored
Feature: Added tooltips to Git columns in the details layout (#12676)
1 parent ae5c327 commit d6cbb28

File tree

6 files changed

+62
-7
lines changed

6 files changed

+62
-7
lines changed

src/Files.App/Data/Models/GitItemModel.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,21 @@ internal class GitItemModel
1111
/// Gets or initializes file change kind
1212
/// </summary>
1313
/// <remarks>
14-
/// This is often showed as A(Add), D(Delete), M(Modified), U(Untracked) in VS Code.
14+
/// This is often showed as A(Added), D(Deleted), M(Modified), U(Untracked) in VS Code.
1515
/// </remarks>
1616
public ChangeKind Status { get; init; }
1717

1818
/// <summary>
19-
/// Gets or initializes file change kind humanized string
19+
/// Gets or initializes file change kind symbol
2020
/// </summary>
2121
/// <remarks>
22-
/// This is often showed as A(Add), D(Delete), M(Modified), U(Untracked) in VS Code.
22+
/// This is often showed as A(Added), D(Deleted), M(Modified), U(Untracked) in VS Code.
2323
/// </remarks>
24+
public string? StatusSymbol { get; init; }
25+
26+
/// <summary>
27+
/// Gets or initializes file change kind humanized string
28+
/// </summary>
2429
public string? StatusHumanized { get; init; }
2530

2631
/// <summary>

src/Files.App/Data/Models/ItemViewModel.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1220,11 +1220,13 @@ await SafetyExtensions.IgnoreExceptions(() =>
12201220
return dispatcherQueue.EnqueueOrInvokeAsync(() =>
12211221
{
12221222
var gitItem = item.AsGitItem;
1223-
gitItem.UnmergedGitStatusLabel = gitItemModel.StatusHumanized;
1223+
gitItem.UnmergedGitStatusLabel = gitItemModel.StatusSymbol;
1224+
gitItem.UnmergedGitStatusName = gitItemModel.StatusHumanized;
12241225
gitItem.GitLastCommitDate = gitItemModel.LastCommit?.Author.When;
12251226
gitItem.GitLastCommitMessage = gitItemModel.LastCommit?.MessageShort;
12261227
gitItem.GitLastCommitAuthor = gitItemModel.LastCommit?.Author.Name;
12271228
gitItem.GitLastCommitSha = gitItemModel.LastCommit?.Sha.Substring(0, 7);
1229+
gitItem.GitLastCommitFullSha = gitItemModel.LastCommit?.Sha;
12281230

12291231
repo.Dispose();
12301232
},

src/Files.App/Filesystem/ListedItem.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,13 @@ public string? UnmergedGitStatusLabel
638638
set => SetProperty(ref _UnmergedGitStatusLabel, value);
639639
}
640640

641+
private string? _UnmergedGitStatusName;
642+
public string? UnmergedGitStatusName
643+
{
644+
get => _UnmergedGitStatusName;
645+
set => SetProperty(ref _UnmergedGitStatusName, value);
646+
}
647+
641648
public SolidColorBrush UnmergedGitStatusLabelForeground { get; init; }
642649

643650
private DateTimeOffset? _GitLastCommitDate;
@@ -678,5 +685,12 @@ public string? GitLastCommitSha
678685
get => _GitLastCommitSha;
679686
set => SetProperty(ref _GitLastCommitSha, value);
680687
}
688+
689+
private string? _GitLastCommitFullSha;
690+
public string? GitLastCommitFullSha
691+
{
692+
get => _GitLastCommitFullSha;
693+
set => SetProperty(ref _GitLastCommitFullSha, value);
694+
}
681695
}
682696
}

src/Files.App/Helpers/GitHelpers.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -308,22 +308,36 @@ public static GitItemModel GetGitInformationForItem(Repository repository, strin
308308
}
309309
}
310310

311-
string? changeKindHumanized = "";
311+
string? changeKindSymbol = null;
312312
if (changeKind is not ChangeKind.Ignored)
313313
{
314-
changeKindHumanized = changeKind switch
314+
changeKindSymbol = changeKind switch
315315
{
316316
ChangeKind.Added => "A",
317317
ChangeKind.Deleted => "D",
318318
ChangeKind.Modified => "M",
319319
ChangeKind.Untracked => "U",
320-
_ => "",
320+
_ => null,
321+
};
322+
}
323+
324+
string? changeKindHumanized = null;
325+
if (changeKind is not ChangeKind.Ignored)
326+
{
327+
changeKindHumanized = changeKind switch
328+
{
329+
ChangeKind.Added => "Added".GetLocalizedResource(),
330+
ChangeKind.Deleted => "Deleted".GetLocalizedResource(),
331+
ChangeKind.Modified => "Modified".GetLocalizedResource(),
332+
ChangeKind.Untracked => "Untracked".GetLocalizedResource(),
333+
_ => null,
321334
};
322335
}
323336

324337
var gitItemModel = new GitItemModel()
325338
{
326339
Status = changeKind,
340+
StatusSymbol = changeKindSymbol,
327341
StatusHumanized = changeKindHumanized,
328342
LastCommit = commit,
329343
Path = relativePath,

src/Files.App/Strings/en-US/Resources.resw

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3326,4 +3326,16 @@
33263326
<data name="OpenInVSCodeDescription" xml:space="preserve">
33273327
<value>Open the current directory in Visual Studio Code</value>
33283328
</data>
3329+
<data name="Added" xml:space="preserve">
3330+
<value>Added</value>
3331+
</data>
3332+
<data name="Deleted" xml:space="preserve">
3333+
<value>Deleted</value>
3334+
</data>
3335+
<data name="Modified" xml:space="preserve">
3336+
<value>Modified</value>
3337+
</data>
3338+
<data name="Untracked" xml:space="preserve">
3339+
<value>Untracked</value>
3340+
</data>
33293341
</root>

src/Files.App/Views/LayoutModes/DetailsLayoutBrowser.xaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -987,6 +987,7 @@
987987
Style="{StaticResource ColumnContentTextBlock}"
988988
Text="{x:Bind AsGitItem.UnmergedGitStatusLabel, Mode=OneWay}"
989989
TextTrimming="CharacterEllipsis"
990+
ToolTipService.ToolTip="{x:Bind AsGitItem.UnmergedGitStatusName, Mode=OneWay}"
990991
Visibility="{Binding ColumnsViewModel.GitStatusColumn.Visibility, ElementName=PageRoot, Mode=OneWay}" />
991992

992993
<!-- Item Git Last Commit Date -->
@@ -996,6 +997,8 @@
996997
Padding="12,0,0,0"
997998
HorizontalAlignment="Stretch"
998999
VerticalAlignment="Center"
1000+
DataContextChanged="TextBlock_DataContextChanged"
1001+
IsTextTrimmedChanged="TextBlock_IsTextTrimmedChanged"
9991002
Style="{StaticResource ColumnContentTextBlock}"
10001003
Text="{x:Bind AsGitItem.GitLastCommitDateHumanized, Mode=OneWay}"
10011004
Visibility="{Binding ColumnsViewModel.GitLastCommitDateColumn.Visibility, ElementName=PageRoot, Mode=OneWay}" />
@@ -1007,6 +1010,8 @@
10071010
Padding="12,0,0,0"
10081011
HorizontalAlignment="Stretch"
10091012
VerticalAlignment="Center"
1013+
DataContextChanged="TextBlock_DataContextChanged"
1014+
IsTextTrimmedChanged="TextBlock_IsTextTrimmedChanged"
10101015
Style="{StaticResource ColumnContentTextBlock}"
10111016
Text="{x:Bind AsGitItem.GitLastCommitMessage, Mode=OneWay}"
10121017
Visibility="{Binding ColumnsViewModel.GitLastCommitMessageColumn.Visibility, ElementName=PageRoot, Mode=OneWay}" />
@@ -1018,6 +1023,8 @@
10181023
Padding="12,0,0,0"
10191024
HorizontalAlignment="Stretch"
10201025
VerticalAlignment="Center"
1026+
DataContextChanged="TextBlock_DataContextChanged"
1027+
IsTextTrimmedChanged="TextBlock_IsTextTrimmedChanged"
10211028
Style="{StaticResource ColumnContentTextBlock}"
10221029
Text="{x:Bind AsGitItem.GitLastCommitAuthor, Mode=OneWay}"
10231030
Visibility="{Binding ColumnsViewModel.GitCommitAuthorColumn.Visibility, ElementName=PageRoot, Mode=OneWay}" />
@@ -1031,6 +1038,7 @@
10311038
VerticalAlignment="Center"
10321039
Style="{StaticResource ColumnContentTextBlock}"
10331040
Text="{x:Bind AsGitItem.GitLastCommitSha, Mode=OneWay}"
1041+
ToolTipService.ToolTip="{x:Bind AsGitItem.GitLastCommitFullSha, Mode=OneWay}"
10341042
Visibility="{Binding ColumnsViewModel.GitLastCommitShaColumn.Visibility, ElementName=PageRoot, Mode=OneWay}" />
10351043

10361044
<!-- Tags That Item Is Labeled -->

0 commit comments

Comments
 (0)