From 0818155813958673e2eeeb7db7f3124e7b1202b4 Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Tue, 11 Jul 2023 15:10:06 +0800 Subject: [PATCH 1/6] feat: add success styles. --- demo/Ursa.Demo/Pages/BadgeDemo.axaml | 9 +++++++++ src/Ursa.Themes.Semi/Controls/Badge.axaml | 3 +++ src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml | 1 + src/Ursa.Themes.Semi/Themes/Light/Badge.axaml | 1 + 4 files changed, 14 insertions(+) diff --git a/demo/Ursa.Demo/Pages/BadgeDemo.axaml b/demo/Ursa.Demo/Pages/BadgeDemo.axaml index 642cefa..c8a3b0e 100644 --- a/demo/Ursa.Demo/Pages/BadgeDemo.axaml +++ b/demo/Ursa.Demo/Pages/BadgeDemo.axaml @@ -89,6 +89,9 @@ + + + + + + diff --git a/src/Ursa.Themes.Semi/Controls/Badge.axaml b/src/Ursa.Themes.Semi/Controls/Badge.axaml index cf6896f..a1e9c3a 100644 --- a/src/Ursa.Themes.Semi/Controls/Badge.axaml +++ b/src/Ursa.Themes.Semi/Controls/Badge.axaml @@ -130,5 +130,8 @@ + diff --git a/src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml b/src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml index b92979b..9fb3409 100644 --- a/src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml +++ b/src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml @@ -7,4 +7,5 @@ + diff --git a/src/Ursa.Themes.Semi/Themes/Light/Badge.axaml b/src/Ursa.Themes.Semi/Themes/Light/Badge.axaml index 36e14da..ca87cd5 100644 --- a/src/Ursa.Themes.Semi/Themes/Light/Badge.axaml +++ b/src/Ursa.Themes.Semi/Themes/Light/Badge.axaml @@ -7,4 +7,5 @@ + From 905e0f6fc250cb7e46d3b411acb18a46a03669b9 Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Fri, 21 Jul 2023 02:21:28 +0800 Subject: [PATCH 2/6] feat: add Light and Inverted classes. --- demo/Ursa.Demo/Pages/BadgeDemo.axaml | 379 ++++++++++++------ src/Ursa.Themes.Semi/Controls/Badge.axaml | 54 ++- src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml | 28 +- src/Ursa.Themes.Semi/Themes/Light/Badge.axaml | 26 +- 4 files changed, 350 insertions(+), 137 deletions(-) diff --git a/demo/Ursa.Demo/Pages/BadgeDemo.axaml b/demo/Ursa.Demo/Pages/BadgeDemo.axaml index c8a3b0e..ce4e062 100644 --- a/demo/Ursa.Demo/Pages/BadgeDemo.axaml +++ b/demo/Ursa.Demo/Pages/BadgeDemo.axaml @@ -8,135 +8,254 @@ d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + \ No newline at end of file diff --git a/src/Ursa.Themes.Semi/Controls/Badge.axaml b/src/Ursa.Themes.Semi/Controls/Badge.axaml index e1d5f25..2dc94dd 100644 --- a/src/Ursa.Themes.Semi/Controls/Badge.axaml +++ b/src/Ursa.Themes.Semi/Controls/Badge.axaml @@ -11,6 +11,7 @@ + @@ -18,6 +19,7 @@ + + TextElement.Foreground="{TemplateBinding Foreground}"> @@ -133,5 +135,53 @@ + + + + + + + + + + + + + + + - + \ No newline at end of file diff --git a/src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml b/src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml index 9fb3409..b65dbc0 100644 --- a/src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml +++ b/src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml @@ -1,11 +1,33 @@ - - + + - + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Ursa.Themes.Semi/Themes/Light/Badge.axaml b/src/Ursa.Themes.Semi/Themes/Light/Badge.axaml index ca87cd5..3a326b4 100644 --- a/src/Ursa.Themes.Semi/Themes/Light/Badge.axaml +++ b/src/Ursa.Themes.Semi/Themes/Light/Badge.axaml @@ -1,11 +1,33 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 2c71f3a0a3dd0df871d457f55d1fe0f067c4dda3 Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Mon, 24 Jul 2023 17:45:50 +0800 Subject: [PATCH 3/6] fix: Border brush color. --- src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml | 2 +- src/Ursa.Themes.Semi/Themes/Light/Badge.axaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml b/src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml index b65dbc0..6d97358 100644 --- a/src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml +++ b/src/Ursa.Themes.Semi/Themes/Dark/Badge.axaml @@ -1,5 +1,5 @@ - + diff --git a/src/Ursa.Themes.Semi/Themes/Light/Badge.axaml b/src/Ursa.Themes.Semi/Themes/Light/Badge.axaml index 3a326b4..6128269 100644 --- a/src/Ursa.Themes.Semi/Themes/Light/Badge.axaml +++ b/src/Ursa.Themes.Semi/Themes/Light/Badge.axaml @@ -1,5 +1,5 @@ - + From e4ff70ad14234e104b01655e6c654155d7318fa0 Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Fri, 4 Aug 2023 22:55:09 +0800 Subject: [PATCH 4/6] feat: Badge inherits HeaderedContentControl. --- demo/Ursa.Demo/Pages/BadgeDemo.axaml | 98 +++++++++++------------ src/Ursa.Themes.Semi/Controls/Badge.axaml | 8 +- src/Ursa/Controls/Badge.cs | 25 ++---- 3 files changed, 58 insertions(+), 73 deletions(-) diff --git a/demo/Ursa.Demo/Pages/BadgeDemo.axaml b/demo/Ursa.Demo/Pages/BadgeDemo.axaml index ce4e062..5d2f3d0 100644 --- a/demo/Ursa.Demo/Pages/BadgeDemo.axaml +++ b/demo/Ursa.Demo/Pages/BadgeDemo.axaml @@ -27,152 +27,152 @@ - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -180,37 +180,37 @@ @@ -219,37 +219,37 @@ diff --git a/src/Ursa.Themes.Semi/Controls/Badge.axaml b/src/Ursa.Themes.Semi/Controls/Badge.axaml index 2dc94dd..9dd320d 100644 --- a/src/Ursa.Themes.Semi/Controls/Badge.axaml +++ b/src/Ursa.Themes.Semi/Controls/Badge.axaml @@ -45,12 +45,12 @@ BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{TemplateBinding CornerRadius}" - IsVisible="{Binding !!BadgeContent, RelativeSource={RelativeSource TemplatedParent}}" + IsVisible="{Binding !!Header, RelativeSource={RelativeSource TemplatedParent}}" RenderTransformOrigin=".5,.5" Theme="{TemplateBinding BadgeTheme}" UseLayoutRounding="False"> - + @@ -93,7 +93,7 @@ BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{TemplateBinding CornerRadius}" - IsVisible="{Binding !!BadgeContent, RelativeSource={RelativeSource TemplatedParent}}" + IsVisible="{Binding !!Header, RelativeSource={RelativeSource TemplatedParent}}" RenderTransformOrigin=".5,.5" /> diff --git a/src/Ursa/Controls/Badge.cs b/src/Ursa/Controls/Badge.cs index 9956352..3e24381 100644 --- a/src/Ursa/Controls/Badge.cs +++ b/src/Ursa/Controls/Badge.cs @@ -1,7 +1,6 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Metadata; -using Avalonia.Controls.Presenters; using Avalonia.Controls.Primitives; using Avalonia.Interactivity; using Avalonia.Media; @@ -10,18 +9,14 @@ using Ursa.Common; namespace Ursa.Controls; -[TemplatePart(PART_ContentPresenter, typeof(ContentPresenter))] [TemplatePart(PART_BadgeContainer, typeof(Border))] -[TemplatePart(PART_BadgeContentPresenter, typeof(ContentPresenter))] -public class Badge: ContentControl +public class Badge: HeaderedContentControl { public const string PART_ContentPresenter = "PART_ContentPresenter"; public const string PART_BadgeContainer = "PART_BadgeContainer"; - public const string PART_BadgeContentPresenter = "PART_BadgeContentPresenter"; - - private ContentPresenter? _content; + public const string PART_HeaderPresenter = "PART_HeaderPresenter"; + private Border? _badgeContainer; - private ContentPresenter? _badgeContent; public static readonly StyledProperty BadgeThemeProperty = AvaloniaProperty.Register( nameof(BadgeTheme)); @@ -39,14 +34,6 @@ public class Badge: ContentControl set => SetValue(DotProperty, value); } - public static readonly StyledProperty BadgeContentProperty = AvaloniaProperty.Register( - nameof(BadgeContent)); - public object? BadgeContent - { - get => GetValue(BadgeContentProperty); - set => SetValue(BadgeContentProperty, value); - } - public static readonly StyledProperty CornerPositionProperty = AvaloniaProperty.Register( nameof(CornerPosition)); public CornerPosition CornerPosition @@ -65,15 +52,13 @@ public class Badge: ContentControl static Badge() { - BadgeContentProperty.Changed.AddClassHandler((badge, args) => badge.UpdateBadgePosition()); + HeaderProperty.Changed.AddClassHandler((badge, args) => badge.UpdateBadgePosition()); } protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); - _content = e.NameScope.Find(PART_ContentPresenter); _badgeContainer = e.NameScope.Find(PART_BadgeContainer); - _badgeContent = e.NameScope.Find(PART_BadgeContentPresenter); } protected override void OnLoaded(RoutedEventArgs e) @@ -92,7 +77,7 @@ public class Badge: ContentControl { var vertical = CornerPosition is CornerPosition.BottomLeft or CornerPosition.BottomRight ? 1 : -1; var horizontal = CornerPosition is CornerPosition.TopRight or CornerPosition.BottomRight ? 1 : -1; - if (_badgeContainer is not null && _content?.Child is not null) + if (_badgeContainer is not null && base.Presenter?.Child is not null) { _badgeContainer.RenderTransform = new TransformGroup() { From 0fae6cc88527d3b177f104d46c77850297d2f5fd Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Fri, 4 Aug 2023 23:22:48 +0800 Subject: [PATCH 5/6] feat: rename resources key. --- src/Ursa.Themes.Semi/Controls/Badge.axaml | 12 ++++++------ src/Ursa.Themes.Semi/Themes/Shared/Badge.axaml | 16 +++++++++++----- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/Ursa.Themes.Semi/Controls/Badge.axaml b/src/Ursa.Themes.Semi/Controls/Badge.axaml index 9dd320d..7af3113 100644 --- a/src/Ursa.Themes.Semi/Controls/Badge.axaml +++ b/src/Ursa.Themes.Semi/Controls/Badge.axaml @@ -9,8 +9,8 @@ - - + + @@ -19,7 +19,7 @@ - + - - 18 + + 18 + 18 + 8 8 6,0 1 - 8 - + 14 + 100 + TopRight + \ No newline at end of file From 5e6db004eecde9854cd96049aea4f1bc4c2180d6 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Mon, 26 Feb 2024 00:59:52 +0800 Subject: [PATCH 6/6] feat: add badge font size. --- src/Ursa.Themes.Semi/Controls/Badge.axaml | 27 +++++++++---------- .../Themes/Shared/Badge.axaml | 2 +- src/Ursa/Controls/Badge.cs | 9 +++++++ 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/Ursa.Themes.Semi/Controls/Badge.axaml b/src/Ursa.Themes.Semi/Controls/Badge.axaml index 7af3113..4402f05 100644 --- a/src/Ursa.Themes.Semi/Controls/Badge.axaml +++ b/src/Ursa.Themes.Semi/Controls/Badge.axaml @@ -9,24 +9,23 @@ - - - - - - - - - - - - + + + + + + + + + + + + - diff --git a/src/Ursa.Themes.Semi/Themes/Shared/Badge.axaml b/src/Ursa.Themes.Semi/Themes/Shared/Badge.axaml index 9ff0988..7c39786 100644 --- a/src/Ursa.Themes.Semi/Themes/Shared/Badge.axaml +++ b/src/Ursa.Themes.Semi/Themes/Shared/Badge.axaml @@ -8,7 +8,7 @@ 8 6,0 1 - 14 + 10 100 TopRight \ No newline at end of file diff --git a/src/Ursa/Controls/Badge.cs b/src/Ursa/Controls/Badge.cs index 3e24381..23124ed 100644 --- a/src/Ursa/Controls/Badge.cs +++ b/src/Ursa/Controls/Badge.cs @@ -50,6 +50,15 @@ public class Badge: HeaderedContentControl set => SetValue(OverflowCountProperty, value); } + public static readonly StyledProperty BadgeFontSizeProperty = AvaloniaProperty.Register( + nameof(BadgeFontSize)); + + public double BadgeFontSize + { + get => GetValue(BadgeFontSizeProperty); + set => SetValue(BadgeFontSizeProperty, value); + } + static Badge() { HeaderProperty.Changed.AddClassHandler((badge, args) => badge.UpdateBadgePosition());