ux: add Color.DecoratorHead for current branch head (#395)

This commit is contained in:
leo 2024-08-23 19:22:04 +08:00
parent 3569e1696f
commit a717dc1876
No known key found for this signature in database
4 changed files with 30 additions and 13 deletions

View file

@ -16,7 +16,8 @@
<Color x:Key="Color.DecoratorIconBG">#FF6F6F6F</Color>
<Color x:Key="Color.DecoratorIcon">#FFF8F8F8</Color>
<Color x:Key="Color.DecoratorBranch">#FFFFB835</Color>
<Color x:Key="Color.DecoratorTag">#FF02C302</Color>
<Color x:Key="Color.DecoratorHead">#fb5607</Color>
<Color x:Key="Color.DecoratorTag">#669900</Color>
<Color x:Key="Color.DecoratorFG">Black</Color>
<Color x:Key="Color.Conflict">#FF836C2E</Color>
<Color x:Key="Color.ConflictForeground">#FFFFFFFF</Color>
@ -50,7 +51,8 @@
<Color x:Key="Color.DecoratorIconBG">#FF505050</Color>
<Color x:Key="Color.DecoratorIcon">#FFF8F8F8</Color>
<Color x:Key="Color.DecoratorBranch">#FFFFB835</Color>
<Color x:Key="Color.DecoratorTag">#FF02C302</Color>
<Color x:Key="Color.DecoratorHead">#f4f1de</Color>
<Color x:Key="Color.DecoratorTag">#669900</Color>
<Color x:Key="Color.DecoratorFG">Black</Color>
<Color x:Key="Color.Conflict">#FFFAFAD2</Color>
<Color x:Key="Color.ConflictForeground">#FF252525</Color>
@ -84,6 +86,7 @@
<SolidColorBrush x:Key="Brush.DecoratorIconBG" Color="{DynamicResource Color.DecoratorIconBG}"/>
<SolidColorBrush x:Key="Brush.DecoratorIcon" Color="{DynamicResource Color.DecoratorIcon}"/>
<SolidColorBrush x:Key="Brush.DecoratorBranch" Color="{DynamicResource Color.DecoratorBranch}"/>
<SolidColorBrush x:Key="Brush.DecoratorHead" Color="{DynamicResource Color.DecoratorHead}"/>
<SolidColorBrush x:Key="Brush.DecoratorTag" Color="{DynamicResource Color.DecoratorTag}"/>
<SolidColorBrush x:Key="Brush.DecoratorFG" Color="{DynamicResource Color.DecoratorFG}"/>
<SolidColorBrush x:Key="Brush.Conflict" Color="{DynamicResource Color.Conflict}"/>

View file

@ -98,6 +98,7 @@
<v:CommitRefsPresenter IconBackground="{DynamicResource Brush.DecoratorIconBG}"
IconForeground="{DynamicResource Brush.DecoratorIcon}"
BranchNameBackground="{DynamicResource Brush.DecoratorBranch}"
HeadBranchNameBackground="{DynamicResource Brush.DecoratorHead}"
TagNameBackground="{DynamicResource Brush.DecoratorTag}"
LabelForeground="{DynamicResource Brush.DecoratorFG}"
FontFamily="{DynamicResource Fonts.Primary}"

View file

@ -14,7 +14,7 @@ namespace SourceGit.Views
{
public Geometry Icon { get; set; } = null;
public FormattedText Label { get; set; } = null;
public bool IsTag { get; set; } = false;
public IBrush LabelBG { get; set; } = null;
}
public static readonly StyledProperty<List<Models.Decorator>> RefsProperty =
@ -80,6 +80,15 @@ namespace SourceGit.Views
set => SetValue(BranchNameBackgroundProperty, value);
}
public static readonly StyledProperty<IBrush> HeadBranchNameBackgroundProperty =
AvaloniaProperty.Register<CommitRefsPresenter, IBrush>(nameof(HeadBranchNameBackground), Brushes.White);
public IBrush HeadBranchNameBackground
{
get => GetValue(HeadBranchNameBackgroundProperty);
set => SetValue(HeadBranchNameBackgroundProperty, value);
}
public static readonly StyledProperty<IBrush> TagNameBackgroundProperty =
AvaloniaProperty.Register<CommitRefsPresenter, IBrush>(nameof(TagNameBackground), Brushes.White);
@ -111,8 +120,6 @@ namespace SourceGit.Views
var iconFG = IconForeground;
var iconBG = IconBackground;
var branchBG = BranchNameBackground;
var tagBG = TagNameBackground;
var x = 0.0;
foreach (var item in _items)
@ -121,7 +128,7 @@ namespace SourceGit.Views
var labelRect = new RoundedRect(new Rect(x + 16, 0, item.Label.Width + 8, 16), new CornerRadius(0, 2, 2, 0));
context.DrawRectangle(iconBG, null, iconRect);
context.DrawRectangle(item.IsTag ? tagBG : branchBG, null, labelRect);
context.DrawRectangle(item.LabelBG, null, labelRect);
context.DrawText(item.Label, new Point(x + 20, 8.0 - item.Label.Height * 0.5));
using (context.PushTransform(Matrix.CreateTranslation(x + 4, 4)))
@ -141,6 +148,9 @@ namespace SourceGit.Views
var typeface = new Typeface(FontFamily);
var typefaceBold = new Typeface(FontFamily, FontStyle.Normal, FontWeight.Bold);
var labelFG = LabelForeground;
var branchBG = BranchNameBackground;
var headBG = HeadBranchNameBackground;
var tagBG = TagNameBackground;
var labelSize = FontSize;
var requiredWidth = 0.0;
@ -154,29 +164,31 @@ namespace SourceGit.Views
CultureInfo.CurrentCulture,
FlowDirection.LeftToRight,
isHead ? typefaceBold : typeface,
isHead ? labelSize + 0.5 : labelSize,
labelSize,
labelFG);
var item = new RenderItem()
{
Label = label,
IsTag = decorator.Type == Models.DecoratorType.Tag,
};
var item = new RenderItem() { Label = label };
StreamGeometry geo;
switch (decorator.Type)
{
case Models.DecoratorType.CurrentBranchHead:
item.LabelBG = headBG;
geo = this.FindResource("Icons.Check") as StreamGeometry;
break;
case Models.DecoratorType.CurrentCommitHead:
item.LabelBG = branchBG;
geo = this.FindResource("Icons.Check") as StreamGeometry;
break;
case Models.DecoratorType.RemoteBranchHead:
item.LabelBG = branchBG;
geo = this.FindResource("Icons.Remote") as StreamGeometry;
break;
case Models.DecoratorType.Tag:
item.LabelBG = tagBG;
geo = this.FindResource("Icons.Tag") as StreamGeometry;
break;
default:
item.LabelBG = branchBG;
geo = this.FindResource("Icons.Branch") as StreamGeometry;
break;
}

View file

@ -70,6 +70,7 @@
<v:CommitRefsPresenter IconBackground="{DynamicResource Brush.DecoratorIconBG}"
IconForeground="{DynamicResource Brush.DecoratorIcon}"
BranchNameBackground="{DynamicResource Brush.DecoratorBranch}"
HeadBranchNameBackground="{DynamicResource Brush.DecoratorHead}"
TagNameBackground="{DynamicResource Brush.DecoratorTag}"
LabelForeground="{DynamicResource Brush.DecoratorFG}"
FontFamily="{DynamicResource Fonts.Primary}"