Skip to content

Commit 41d1f9a

Browse files
authored
Feature: Display multiple tags in the details layout (#11216)
1 parent 1280b06 commit 41d1f9a

File tree

2 files changed

+46
-26
lines changed

2 files changed

+46
-26
lines changed

src/Files.App/Filesystem/ListedItem.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ public string[] FileTags
132132
{
133133
var dbInstance = FileTagsHelper.GetDbInstance();
134134
dbInstance.SetTags(ItemPath, FileFRN, value);
135+
HasTags = !FileTags.IsEmpty();
135136
FileTagsHelper.WriteFileTag(ItemPath, value);
136137
OnPropertyChanged(nameof(FileTagsUI));
137138
}
@@ -157,6 +158,13 @@ public double Opacity
157158
set => SetProperty(ref opacity, value);
158159
}
159160

161+
private bool hasTags;
162+
public bool HasTags
163+
{
164+
get => hasTags;
165+
set => SetProperty(ref hasTags, value);
166+
}
167+
160168
private CloudDriveSyncStatusUI syncStatusUI = new();
161169
public CloudDriveSyncStatusUI SyncStatusUI
162170
{

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

Lines changed: 38 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
xmlns:converters="using:CommunityToolkit.WinUI.UI.Converters"
88
xmlns:converters1="using:Files.App.Converters"
99
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
10+
xmlns:filetags="using:Files.Backend.ViewModels.FileTags"
1011
xmlns:helpers="using:Files.App.Helpers"
1112
xmlns:i="using:Microsoft.Xaml.Interactivity"
1213
xmlns:icore="using:Microsoft.Xaml.Interactions.Core"
@@ -17,6 +18,7 @@
1718
xmlns:tui="using:CommunityToolkit.WinUI.UI"
1819
xmlns:uc="using:Files.App.UserControls"
1920
xmlns:vc="using:Files.App.ValueConverters"
21+
xmlns:winui="using:ABI.Microsoft.UI.Xaml.Controls"
2022
x:Name="PageRoot"
2123
NavigationCacheMode="Enabled"
2224
mc:Ignorable="d">
@@ -676,32 +678,42 @@
676678
HorizontalAlignment="Stretch"
677679
VerticalAlignment="Center"
678680
Visibility="{Binding ColumnsViewModel.TagColumn.Visibility, ElementName=PageRoot, Mode=OneWay}">
679-
<StackPanel
680-
Height="24"
681-
Padding="8,0"
682-
HorizontalAlignment="Left"
683-
x:Phase="2"
684-
BorderBrush="{x:Bind FileTagsUI[0].Color, Mode=OneWay, Converter={StaticResource StringToBrushConverter}}"
685-
BorderThickness="1"
686-
CornerRadius="12"
687-
Orientation="Horizontal"
688-
Spacing="8"
689-
ToolTipService.ToolTip="{x:Bind FileTagsUI[0].Name, Mode=OneWay}"
690-
Visibility="{x:Bind FileTagsUI, Converter={StaticResource EmptyObjectToObjectConverter}, Mode=OneWay}">
691-
<FontIcon
692-
FontSize="12"
693-
Foreground="{x:Bind FileTagsUI[0].Color, Mode=OneWay, Converter={StaticResource StringToBrushConverter}}"
694-
Glyph="&#xE1CB;" />
695-
<TextBlock
696-
x:Name="ItemTag"
697-
VerticalAlignment="Center"
698-
FontSize="12"
699-
LineHeight="18"
700-
Style="{StaticResource ColumnContentTextBlock}"
701-
Text="{x:Bind FileTagsUI[0].Name, Mode=OneWay}"
702-
TextTrimming="CharacterEllipsis"
703-
Visibility="{x:Bind FileTagsUI, Converter={StaticResource EmptyObjectToObjectConverter}, Mode=OneWay}" />
704-
</StackPanel>
681+
<ItemsRepeater
682+
x:Name="TagsRepeater"
683+
x:Load="{x:Bind HasTags, Mode=OneWay}"
684+
ItemsSource="{x:Bind FileTagsUI, Mode=OneWay}">
685+
<ItemsRepeater.Layout>
686+
<StackLayout Orientation="Horizontal" Spacing="4" />
687+
</ItemsRepeater.Layout>
688+
<ItemsRepeater.ItemTemplate>
689+
<DataTemplate x:DataType="filetags:TagViewModel">
690+
<StackPanel
691+
Height="24"
692+
Padding="8,0"
693+
HorizontalAlignment="Left"
694+
x:Phase="2"
695+
BorderBrush="{x:Bind Color, Mode=OneWay, Converter={StaticResource StringToBrushConverter}}"
696+
BorderThickness="1"
697+
CornerRadius="12"
698+
Orientation="Horizontal"
699+
Spacing="8"
700+
ToolTipService.ToolTip="{x:Bind Name, Mode=OneWay}">
701+
<FontIcon
702+
FontSize="12"
703+
Foreground="{x:Bind Color, Mode=OneWay, Converter={StaticResource StringToBrushConverter}}"
704+
Glyph="&#xE1CB;" />
705+
<TextBlock
706+
x:Name="ItemTag"
707+
VerticalAlignment="Center"
708+
FontSize="12"
709+
LineHeight="18"
710+
Style="{StaticResource ColumnContentTextBlock}"
711+
Text="{x:Bind Name, Mode=OneWay}"
712+
TextTrimming="CharacterEllipsis" />
713+
</StackPanel>
714+
</DataTemplate>
715+
</ItemsRepeater.ItemTemplate>
716+
</ItemsRepeater>
705717
</Grid>
706718

707719
<TextBlock

0 commit comments

Comments
 (0)