From 91aa3380aa87fa403085ea3daba71cea283d7c4b Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sat, 21 Jan 2023 00:40:47 +0800 Subject: [PATCH 1/4] feat: add button spinner infra. --- .../Pages/ButtonSpinnerDemo.axaml | 33 ++++++++++++ .../Pages/ButtonSpinnerDemo.axaml.cs | 50 +++++++++++++++++++ demo/Semi.Avalonia.Demo/Views/MainView.axaml | 3 ++ .../Controls/ButtonSpinner.axaml | 5 ++ src/Semi.Avalonia/Controls/Controls.axaml | 1 + .../Themes/Light/ButtonSpinner.axaml | 3 ++ src/Semi.Avalonia/Themes/Light/Light.axaml | 1 + 7 files changed, 96 insertions(+) create mode 100644 demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml create mode 100644 demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml.cs create mode 100644 src/Semi.Avalonia/Controls/ButtonSpinner.axaml create mode 100644 src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml diff --git a/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml new file mode 100644 index 0000000..341c66c --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml @@ -0,0 +1,33 @@ + + + + + + + + + + diff --git a/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml.cs new file mode 100644 index 0000000..a6e8f51 --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml.cs @@ -0,0 +1,50 @@ +using System; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace Semi.Avalonia.Demo.Pages; + +public partial class ButtonSpinnerDemo : UserControl +{ + public ButtonSpinnerDemo() + { + InitializeComponent(); + } + + public void OnSpin(object sender, SpinEventArgs e) + { + var spinner = (ButtonSpinner)sender; + + if (spinner.Content is TextBlock txtBox) + { + int value = Array.IndexOf(_mountains, txtBox.Text); + if (e.Direction == SpinDirection.Increase) + value++; + else + value--; + + if (value < 0) + value = _mountains.Length - 1; + else if (value >= _mountains.Length) + value = 0; + + txtBox.Text = _mountains[value]; + } + + } + + private readonly string[] _mountains = new[] + { + "Everest", + "K2 (Mount Godwin Austen)", + "Kangchenjunga", + "Lhotse", + "Makalu", + "Cho Oyu", + "Dhaulagiri", + "Manaslu", + "Nanga Parbat", + "Annapurna" + }; +} \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/Views/MainView.axaml b/demo/Semi.Avalonia.Demo/Views/MainView.axaml index d48b234..ab1e725 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml +++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml @@ -24,6 +24,9 @@ + + + diff --git a/src/Semi.Avalonia/Controls/ButtonSpinner.axaml b/src/Semi.Avalonia/Controls/ButtonSpinner.axaml new file mode 100644 index 0000000..55f4811 --- /dev/null +++ b/src/Semi.Avalonia/Controls/ButtonSpinner.axaml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/Semi.Avalonia/Controls/Controls.axaml b/src/Semi.Avalonia/Controls/Controls.axaml index 925e022..51a08d1 100644 --- a/src/Semi.Avalonia/Controls/Controls.axaml +++ b/src/Semi.Avalonia/Controls/Controls.axaml @@ -4,6 +4,7 @@ + diff --git a/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml b/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml new file mode 100644 index 0000000..9017e8d --- /dev/null +++ b/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml @@ -0,0 +1,3 @@ + + + diff --git a/src/Semi.Avalonia/Themes/Light/Light.axaml b/src/Semi.Avalonia/Themes/Light/Light.axaml index e3becb9..eb69551 100644 --- a/src/Semi.Avalonia/Themes/Light/Light.axaml +++ b/src/Semi.Avalonia/Themes/Light/Light.axaml @@ -5,6 +5,7 @@ + From 337e46e202f35c22baeddea27d3f0491ad2e9012 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sat, 21 Jan 2023 01:24:38 +0800 Subject: [PATCH 2/4] feat: add template for repeat button and button spinner, WIP. --- .../Pages/ButtonSpinnerDemo.axaml | 5 +- .../Controls/ButtonSpinner.axaml | 90 +++++++++++++++++++ .../Themes/Light/ButtonSpinner.axaml | 2 + 3 files changed, 96 insertions(+), 1 deletion(-) diff --git a/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml index 341c66c..baddc16 100644 --- a/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml @@ -7,7 +7,10 @@ d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml b/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml index 9017e8d..0d5f5a9 100644 --- a/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml +++ b/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml @@ -1,3 +1,5 @@ + M19.637 16.4369C19.0513 17.0227 18.1015 17.0227 17.5157 16.4369L11.8589 10.7801L6.20202 16.4369C5.61623 17.0227 4.66648 17.0227 4.0807 16.4369C3.49491 15.8511 3.49491 14.9014 4.0807 14.3156L10.7982 7.59809C11.384 7.01231 12.3337 7.01231 12.9195 7.59809L19.637 14.3156C20.2228 14.9014 20.2228 15.8511 19.637 16.4369Z + M4.08045 7.59809C4.66624 7.01231 5.61599 7.01231 6.20177 7.59809L11.8586 13.2549L17.5155 7.59809C18.1013 7.01231 19.051 7.01231 19.6368 7.59809C20.2226 8.18388 20.2226 9.13363 19.6368 9.71941L12.9193 16.4369C12.3335 17.0227 11.3838 17.0227 10.798 16.4369L4.08045 9.71941C3.49467 9.13363 3.49467 8.18388 4.08045 7.59809Z From 671ed74b44b634a2e07dfb8de96417055835be42 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Mon, 23 Jan 2023 00:02:25 +0800 Subject: [PATCH 3/4] feat: update resource. --- .../Pages/ButtonSpinnerDemo.axaml | 4 +++ .../Controls/ButtonSpinner.axaml | 31 ++++++++++++------- .../Themes/Light/ButtonSpinner.axaml | 12 +++++++ 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml index baddc16..a7c375f 100644 --- a/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/ButtonSpinnerDemo.axaml @@ -14,22 +14,26 @@ diff --git a/src/Semi.Avalonia/Controls/ButtonSpinner.axaml b/src/Semi.Avalonia/Controls/ButtonSpinner.axaml index 062e04d..63c9eb5 100644 --- a/src/Semi.Avalonia/Controls/ButtonSpinner.axaml +++ b/src/Semi.Avalonia/Controls/ButtonSpinner.axaml @@ -5,6 +5,8 @@ + + - - + @@ -46,7 +47,8 @@ Grid.Column="1" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" - CornerRadius="{TemplateBinding CornerRadius}"> + CornerRadius="{TemplateBinding CornerRadius}" + UseLayoutRounding="False"> + BorderBrush="{DynamicResource ButtonSpinnerRepeatButtonBorderBrush}" + BorderThickness="{DynamicResource ButtonSpinnerButtonGroupBorderThickness}" + CornerRadius="{DynamicResource ButtonSpinnerButtonGroupCornerRadius}" + IsVisible="{TemplateBinding ShowButtonSpinner}" + UseLayoutRounding="False"> + diff --git a/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml b/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml index 0d5f5a9..19f8ee2 100644 --- a/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml +++ b/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml @@ -2,4 +2,16 @@ M19.637 16.4369C19.0513 17.0227 18.1015 17.0227 17.5157 16.4369L11.8589 10.7801L6.20202 16.4369C5.61623 17.0227 4.66648 17.0227 4.0807 16.4369C3.49491 15.8511 3.49491 14.9014 4.0807 14.3156L10.7982 7.59809C11.384 7.01231 12.3337 7.01231 12.9195 7.59809L19.637 14.3156C20.2228 14.9014 20.2228 15.8511 19.637 16.4369Z M4.08045 7.59809C4.66624 7.01231 5.61599 7.01231 6.20177 7.59809L11.8586 13.2549L17.5155 7.59809C18.1013 7.01231 19.051 7.01231 19.6368 7.59809C20.2226 8.18388 20.2226 9.13363 19.6368 9.71941L12.9193 16.4369C12.3335 17.0227 11.3838 17.0227 10.798 16.4369L4.08045 9.71941C3.49467 9.13363 3.49467 8.18388 4.08045 7.59809Z + + + + + + + + + + 3 + 1 + From 13b6a87af1f580084292f422ac935b3c87589efe Mon Sep 17 00:00:00 2001 From: rabbitism Date: Mon, 23 Jan 2023 00:04:17 +0800 Subject: [PATCH 4/4] fix: fix icon foreground. --- src/Semi.Avalonia/Controls/ButtonSpinner.axaml | 4 ++-- src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Semi.Avalonia/Controls/ButtonSpinner.axaml b/src/Semi.Avalonia/Controls/ButtonSpinner.axaml index 63c9eb5..e0ace81 100644 --- a/src/Semi.Avalonia/Controls/ButtonSpinner.axaml +++ b/src/Semi.Avalonia/Controls/ButtonSpinner.axaml @@ -76,7 +76,7 @@ Width="8" Height="8" Data="{DynamicResource ButtonSpinnerIncreaseButtonGlyph}" - Foreground="DarkGray" /> + Foreground="{DynamicResource ButtonSpinnerRepeatButtonForeground}" /> + Foreground="{DynamicResource ButtonSpinnerRepeatButtonForeground}" /> diff --git a/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml b/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml index 19f8ee2..714d5b8 100644 --- a/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml +++ b/src/Semi.Avalonia/Themes/Light/ButtonSpinner.axaml @@ -8,8 +8,6 @@ - - 3 1