Show Git, Cloud, and created date in Details, and hide Free space except on drives.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -57,7 +57,33 @@
|
||||
<TextBlock Text="{Binding StatusGlyph}" Margin="6,0,0,0" VerticalAlignment="Center"
|
||||
Foreground="{DynamicResource FgMuted}"
|
||||
Visibility="{Binding HasStatusGlyph, Converter={StaticResource BoolVis}}"/>
|
||||
<TextBlock Text="{Binding CloudStatus}" Margin="8,0,0,0" VerticalAlignment="Center" FontSize="11"
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
<DataTemplate x:Key="NameWithOverlays">
|
||||
<StackPanel Orientation="Horizontal" ToolTip="{Binding SizeTooltip}">
|
||||
<Image Width="16" Height="16" Margin="0,0,8,0" RenderOptions.BitmapScalingMode="HighQuality"
|
||||
Source="{Binding Converter={StaticResource ShellIcon}}"/>
|
||||
<TextBlock Tag="ItemName" Text="{Binding Name}" VerticalAlignment="Center" Foreground="{DynamicResource Fg}">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="Visibility" Value="Visible"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsRenaming}" Value="True">
|
||||
<Setter Property="Visibility" Value="Collapsed"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
<TextBox Style="{StaticResource InlineRenameBox}"
|
||||
Tag="InlineRename"
|
||||
Text="{Binding EditName, UpdateSourceTrigger=PropertyChanged}"
|
||||
local:InlineRenameBehavior.Enable="True"
|
||||
Visibility="{Binding IsRenaming, Converter={StaticResource BoolVis}}"/>
|
||||
<TextBlock Text="{Binding StatusGlyph}" Margin="6,0,0,0" VerticalAlignment="Center"
|
||||
Foreground="{DynamicResource FgMuted}"
|
||||
Visibility="{Binding HasStatusGlyph, Converter={StaticResource BoolVis}}"/>
|
||||
<TextBlock Text="{Binding CloudLabel}" Margin="8,0,0,0" VerticalAlignment="Center" FontSize="11"
|
||||
Foreground="{DynamicResource FgMuted}"
|
||||
Visibility="{Binding HasCloudStatus, Converter={StaticResource BoolVis}}"/>
|
||||
<TextBlock Text="{Binding GitLabel}" Margin="8,0,0,0" VerticalAlignment="Center" FontSize="11"
|
||||
|
||||
59
src/Explorer.App/DetailsColumnLayout.cs
Normal file
59
src/Explorer.App/DetailsColumnLayout.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace Explorer.App;
|
||||
|
||||
public static class DetailsColumnLayout
|
||||
{
|
||||
public static readonly DependencyProperty ShowFreeSpaceProperty =
|
||||
DependencyProperty.RegisterAttached(
|
||||
"ShowFreeSpace",
|
||||
typeof(bool),
|
||||
typeof(DetailsColumnLayout),
|
||||
new PropertyMetadata(true, OnShowFreeSpaceChanged));
|
||||
|
||||
public static void SetShowFreeSpace(ListView element, bool value)
|
||||
=> element.SetValue(ShowFreeSpaceProperty, value);
|
||||
|
||||
public static bool GetShowFreeSpace(ListView element)
|
||||
=> (bool)element.GetValue(ShowFreeSpaceProperty);
|
||||
|
||||
private static void OnShowFreeSpaceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if (d is ListView list)
|
||||
{
|
||||
Apply(list);
|
||||
list.Loaded -= OnLoaded;
|
||||
list.Loaded += OnLoaded;
|
||||
}
|
||||
}
|
||||
|
||||
private static void OnLoaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is ListView list)
|
||||
{
|
||||
Apply(list);
|
||||
}
|
||||
}
|
||||
|
||||
private static void Apply(ListView list)
|
||||
{
|
||||
if (list.View is not GridView view)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var show = GetShowFreeSpace(list);
|
||||
foreach (var column in view.Columns)
|
||||
{
|
||||
var title = column.Header?.ToString() ?? "";
|
||||
title = title.Replace(" ▲", "", StringComparison.Ordinal).Replace(" ▼", "", StringComparison.Ordinal).Trim();
|
||||
if (title == "Free space")
|
||||
{
|
||||
column.Width = show ? 110 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
ListViewLayout.Stretch(list);
|
||||
}
|
||||
}
|
||||
@@ -525,14 +525,18 @@
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
local:ListViewLayout.StretchFirstColumn="True"
|
||||
local:DetailsColumnLayout.ShowFreeSpace="{Binding ShowFreeSpaceColumn}"
|
||||
local:FolderViewport.IsTracked="True"
|
||||
Visibility="{Binding ViewMode, Converter={StaticResource ViewDetails}}">
|
||||
<ListView.View>
|
||||
<GridView>
|
||||
<GridViewColumn Header="Name" Width="120" CellTemplate="{StaticResource NameWithIcon}"/>
|
||||
<GridViewColumn Header="Date modified" Width="148" DisplayMemberBinding="{Binding ModifiedLabel}"/>
|
||||
<GridViewColumn Header="Date created" Width="148" DisplayMemberBinding="{Binding CreatedLabel}"/>
|
||||
<GridViewColumn Header="Type" Width="100" DisplayMemberBinding="{Binding TypeLabel}"/>
|
||||
<GridViewColumn Header="Size" Width="110" DisplayMemberBinding="{Binding SizeLabel}"/>
|
||||
<GridViewColumn Header="Git" Width="110" DisplayMemberBinding="{Binding GitLabel}"/>
|
||||
<GridViewColumn Header="Cloud" Width="100" DisplayMemberBinding="{Binding CloudLabel}"/>
|
||||
<GridViewColumn Header="Free space" Width="110" DisplayMemberBinding="{Binding FreeSpaceLabel}"/>
|
||||
</GridView>
|
||||
</ListView.View>
|
||||
@@ -562,7 +566,7 @@
|
||||
Visibility="{Binding ViewMode, Converter={StaticResource ViewList}}">
|
||||
<ListView.View>
|
||||
<GridView>
|
||||
<GridViewColumn Header="Name" Width="120" CellTemplate="{StaticResource NameWithIcon}"/>
|
||||
<GridViewColumn Header="Name" Width="120" CellTemplate="{StaticResource NameWithOverlays}"/>
|
||||
</GridView>
|
||||
</ListView.View>
|
||||
</ListView>
|
||||
@@ -645,14 +649,18 @@
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
local:ListViewLayout.StretchFirstColumn="True"
|
||||
local:DetailsColumnLayout.ShowFreeSpace="{Binding ShowFreeSpaceColumn}"
|
||||
local:FolderViewport.IsTracked="True"
|
||||
Visibility="{Binding ViewMode, Converter={StaticResource ViewDetails}}">
|
||||
<ListView.View>
|
||||
<GridView>
|
||||
<GridViewColumn Header="Name" Width="120" CellTemplate="{StaticResource NameWithIcon}"/>
|
||||
<GridViewColumn Header="Date modified" Width="148" DisplayMemberBinding="{Binding ModifiedLabel}"/>
|
||||
<GridViewColumn Header="Date created" Width="148" DisplayMemberBinding="{Binding CreatedLabel}"/>
|
||||
<GridViewColumn Header="Type" Width="100" DisplayMemberBinding="{Binding TypeLabel}"/>
|
||||
<GridViewColumn Header="Size" Width="110" DisplayMemberBinding="{Binding SizeLabel}"/>
|
||||
<GridViewColumn Header="Git" Width="110" DisplayMemberBinding="{Binding GitLabel}"/>
|
||||
<GridViewColumn Header="Cloud" Width="100" DisplayMemberBinding="{Binding CloudLabel}"/>
|
||||
<GridViewColumn Header="Free space" Width="110" DisplayMemberBinding="{Binding FreeSpaceLabel}"/>
|
||||
</GridView>
|
||||
</ListView.View>
|
||||
@@ -682,7 +690,7 @@
|
||||
Visibility="{Binding ViewMode, Converter={StaticResource ViewList}}">
|
||||
<ListView.View>
|
||||
<GridView>
|
||||
<GridViewColumn Header="Name" Width="120" CellTemplate="{StaticResource NameWithIcon}"/>
|
||||
<GridViewColumn Header="Name" Width="120" CellTemplate="{StaticResource NameWithOverlays}"/>
|
||||
</GridView>
|
||||
</ListView.View>
|
||||
</ListView>
|
||||
@@ -782,7 +790,7 @@
|
||||
Background="{DynamicResource Panel}" Foreground="{DynamicResource Fg}">
|
||||
<ListView.View>
|
||||
<GridView>
|
||||
<GridViewColumn Header="Name" Width="220" CellTemplate="{StaticResource NameWithIcon}"/>
|
||||
<GridViewColumn Header="Name" Width="220" CellTemplate="{StaticResource NameWithOverlays}"/>
|
||||
<GridViewColumn Header="Path" Width="420" DisplayMemberBinding="{Binding FullPath}"/>
|
||||
<GridViewColumn Header="Size" Width="100" DisplayMemberBinding="{Binding SizeLabel}"/>
|
||||
<GridViewColumn Header="Free space" Width="100" DisplayMemberBinding="{Binding FreeSpaceLabel}"/>
|
||||
|
||||
@@ -567,8 +567,11 @@ public partial class MainWindow : Window
|
||||
{
|
||||
"Name" => "Name",
|
||||
"Date modified" => "Modified",
|
||||
"Date created" => "Created",
|
||||
"Type" => "Type",
|
||||
"Size" => "Size",
|
||||
"Git" => "Git",
|
||||
"Cloud" => "Cloud",
|
||||
"Free space" => "Free",
|
||||
_ => null
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user