ux: new theme for statistics

This commit is contained in:
leo 2024-06-19 17:53:02 +08:00
parent 3d205378d8
commit a472d07544
No known key found for this signature in database
2 changed files with 28 additions and 27 deletions

View file

@ -76,8 +76,13 @@
<Setter Property="Background" Value="Transparent"/> <Setter Property="Background" Value="Transparent"/>
</Style> </Style>
<Style Selector="ListBoxItem Border.switcher_bg">
<Setter Property="BorderBrush" Value="{DynamicResource Brush.Border2}"/>
</Style>
<Style Selector="ListBoxItem:selected Border.switcher_bg"> <Style Selector="ListBoxItem:selected Border.switcher_bg">
<Setter Property="Background" Value="{DynamicResource Brush.Accent}"/> <Setter Property="Background" Value="{DynamicResource Brush.Accent}"/>
<Setter Property="BorderBrush" Value="{DynamicResource Brush.Accent}"/>
</Style> </Style>
<Style Selector="TextBlock.view_mode_switcher"> <Style Selector="TextBlock.view_mode_switcher">
@ -91,19 +96,19 @@
</ListBox.Styles> </ListBox.Styles>
<ListBoxItem> <ListBoxItem>
<Border Classes="switcher_bg" Height="28" Padding="16,0" BorderThickness="1,1,0,1" BorderBrush="{DynamicResource Brush.Border1}" CornerRadius="14,0,0,14"> <Border Classes="switcher_bg" Height="28" Padding="16,0" BorderThickness="1,1,0,1" CornerRadius="14,0,0,14">
<TextBlock Classes="view_mode_switcher" Text="{DynamicResource Text.Statistics.ThisYear}"/> <TextBlock Classes="view_mode_switcher" Text="{DynamicResource Text.Statistics.ThisYear}"/>
</Border> </Border>
</ListBoxItem> </ListBoxItem>
<ListBoxItem> <ListBoxItem>
<Border Classes="switcher_bg" Height="28" Padding="16,0" BorderThickness="1" BorderBrush="{DynamicResource Brush.Border1}"> <Border Classes="switcher_bg" Height="28" Padding="16,0" BorderThickness="1">
<TextBlock Classes="view_mode_switcher" Text="{DynamicResource Text.Statistics.ThisMonth}"/> <TextBlock Classes="view_mode_switcher" Text="{DynamicResource Text.Statistics.ThisMonth}"/>
</Border> </Border>
</ListBoxItem> </ListBoxItem>
<ListBoxItem> <ListBoxItem>
<Border Classes="switcher_bg" Height="28" Padding="16,0" BorderThickness="0,1,1,1" BorderBrush="{DynamicResource Brush.Border1}" CornerRadius="0,14,14,0"> <Border Classes="switcher_bg" Height="28" Padding="16,0" BorderThickness="0,1,1,1" CornerRadius="0,14,14,0">
<TextBlock Classes="view_mode_switcher" Text="{DynamicResource Text.Statistics.ThisWeek}"/> <TextBlock Classes="view_mode_switcher" Text="{DynamicResource Text.Statistics.ThisWeek}"/>
</Border> </Border>
</ListBoxItem> </ListBoxItem>
@ -125,10 +130,10 @@
HeadersVisibility="Column" HeadersVisibility="Column"
GridLinesVisibility="All" GridLinesVisibility="All"
BorderThickness="1" BorderThickness="1"
BorderBrush="{DynamicResource Brush.Border1}" BorderBrush="{DynamicResource Brush.Border2}"
Background="{DynamicResource Brush.Contents}" Background="{DynamicResource Brush.Contents}"
HorizontalGridLinesBrush="{DynamicResource Brush.Border1}" HorizontalGridLinesBrush="{DynamicResource Brush.Border2}"
VerticalGridLinesBrush="{DynamicResource Brush.Border1}" VerticalGridLinesBrush="{DynamicResource Brush.Border2}"
IsReadOnly="True" IsReadOnly="True"
RowHeight="26" RowHeight="26"
HorizontalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled"
@ -138,8 +143,8 @@
<Setter Property="Background" Value="{DynamicResource Brush.Window}"/> <Setter Property="Background" Value="{DynamicResource Brush.Window}"/>
<Setter Property="Padding" Value="8,0,0,0"/> <Setter Property="Padding" Value="8,0,0,0"/>
<Setter Property="BorderThickness" Value="0,0,0,1"/> <Setter Property="BorderThickness" Value="0,0,0,1"/>
<Setter Property="BorderBrush" Value="{DynamicResource Brush.Border1}"/> <Setter Property="BorderBrush" Value="{DynamicResource Brush.Border2}"/>
<Setter Property="SeparatorBrush" Value="{DynamicResource Brush.Border1}" /> <Setter Property="SeparatorBrush" Value="{DynamicResource Brush.Border2}" />
<Style Selector="^:pointerover /template/ Grid#PART_ColumnHeaderRoot"> <Style Selector="^:pointerover /template/ Grid#PART_ColumnHeaderRoot">
<Setter Property="Background" Value="{DynamicResource Brush.Window}"/> <Setter Property="Background" Value="{DynamicResource Brush.Window}"/>
@ -176,7 +181,8 @@
<!-- Graph --> <!-- Graph -->
<v:Chart Grid.Column="1" <v:Chart Grid.Column="1"
Margin="16,0,0,0" Margin="16,0,0,0"
LineBrush="{DynamicResource Brush.Border1}" LabelBrush="{DynamicResource Brush.FG1}"
LineBrush="{DynamicResource Brush.Border2}"
ShapeBrush="{DynamicResource Brush.Accent}" ShapeBrush="{DynamicResource Brush.Accent}"
Samples="{Binding Samples}"/> Samples="{Binding Samples}"/>
</Grid> </Grid>

View file

@ -12,6 +12,15 @@ namespace SourceGit.Views
{ {
public class Chart : Control public class Chart : Control
{ {
public static readonly StyledProperty<IBrush> LabelBrushProperty =
AvaloniaProperty.Register<Chart, IBrush>(nameof(LabelBrush), Brushes.Black);
public IBrush LabelBrush
{
get => GetValue(LabelBrushProperty);
set => SetValue(LabelBrushProperty, value);
}
public static readonly StyledProperty<IBrush> LineBrushProperty = public static readonly StyledProperty<IBrush> LineBrushProperty =
AvaloniaProperty.Register<Chart, IBrush>(nameof(LineBrush), Brushes.Gray); AvaloniaProperty.Register<Chart, IBrush>(nameof(LineBrush), Brushes.Gray);
@ -63,33 +72,19 @@ namespace SourceGit.Views
} }
if (maxV < 5) if (maxV < 5)
{
maxV = 5; maxV = 5;
}
else if (maxV < 10) else if (maxV < 10)
{
maxV = 10; maxV = 10;
}
else if (maxV < 50) else if (maxV < 50)
{
maxV = 50; maxV = 50;
}
else if (maxV < 100) else if (maxV < 100)
{
maxV = 100; maxV = 100;
}
else if (maxV < 200) else if (maxV < 200)
{
maxV = 200; maxV = 200;
}
else if (maxV < 500) else if (maxV < 500)
{
maxV = 500; maxV = 500;
}
else else
{
maxV = (int)Math.Ceiling(maxV / 500.0) * 500; maxV = (int)Math.Ceiling(maxV / 500.0) * 500;
}
var typeface = new Typeface("fonts:SourceGit#JetBrains Mono"); var typeface = new Typeface("fonts:SourceGit#JetBrains Mono");
var pen = new Pen(LineBrush, 1); var pen = new Pen(LineBrush, 1);
@ -100,7 +95,7 @@ namespace SourceGit.Views
context.DrawRectangle(Brushes.Transparent, null, new Rect(0, 0, width, height)); context.DrawRectangle(Brushes.Transparent, null, new Rect(0, 0, width, height));
// Draw coordinate // Draw coordinate
var maxLabel = new FormattedText($"{maxV}", CultureInfo.CurrentCulture, FlowDirection.LeftToRight, typeface, 12.0, LineBrush); var maxLabel = new FormattedText($"{maxV}", CultureInfo.CurrentCulture, FlowDirection.LeftToRight, typeface, 12.0, LabelBrush);
var horizonStart = maxLabel.Width + 8; var horizonStart = maxLabel.Width + 8;
var labelHeight = maxLabel.Height; var labelHeight = maxLabel.Height;
context.DrawText(maxLabel, new Point(0, -maxLabel.Height * 0.5)); context.DrawText(maxLabel, new Point(0, -maxLabel.Height * 0.5));
@ -122,7 +117,7 @@ namespace SourceGit.Views
FlowDirection.LeftToRight, FlowDirection.LeftToRight,
typeface, typeface,
12.0, 12.0,
LineBrush); LabelBrush);
var dashHeight = i * stepV; var dashHeight = i * stepV;
var vy = Math.Max(0, dashHeight - vLabel.Height * 0.5); var vy = Math.Max(0, dashHeight - vLabel.Height * 0.5);
@ -155,7 +150,7 @@ namespace SourceGit.Views
FlowDirection.LeftToRight, FlowDirection.LeftToRight,
typeface, typeface,
10.0, 10.0,
LineBrush); LabelBrush);
var rect = _hitBoxes[i]; var rect = _hitBoxes[i];
var xLabel = rect.X - (hLabel.Width - rect.Width) * 0.5; var xLabel = rect.X - (hLabel.Width - rect.Width) * 0.5;
var yLabel = height - labelHeight + 4; var yLabel = height - labelHeight + 4;
@ -188,7 +183,7 @@ namespace SourceGit.Views
FlowDirection.LeftToRight, FlowDirection.LeftToRight,
typeface, typeface,
12.0, 12.0,
LineBrush); LabelBrush);
var tx = rect.X - (tooltip.Width - rect.Width) * 0.5; var tx = rect.X - (tooltip.Width - rect.Width) * 0.5;
var ty = rect.Y - tooltip.Height - 4; var ty = rect.Y - tooltip.Height - 4;