From dcf557ad1aea1361bd96fd606f41d2dac26bb915 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Fri, 27 Jan 2023 01:08:57 +0800 Subject: [PATCH 1/4] feat: initialize timepicker from fluent theme. --- .../Pages/TimePickerDemo.axaml | 13 + .../Pages/TimePickerDemo.axaml.cs | 18 ++ demo/Semi.Avalonia.Demo/Views/MainView.axaml | 3 + src/Semi.Avalonia/Controls/Controls.axaml | 1 + src/Semi.Avalonia/Controls/TimePicker.axaml | 274 ++++++++++++++++++ src/Semi.Avalonia/Themes/Light/Light.axaml | 1 + .../Themes/Light/TimePicker.axaml | 3 + 7 files changed, 313 insertions(+) create mode 100644 demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml create mode 100644 demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml.cs create mode 100644 src/Semi.Avalonia/Controls/TimePicker.axaml create mode 100644 src/Semi.Avalonia/Themes/Light/TimePicker.axaml diff --git a/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml new file mode 100644 index 0000000..1c7e4f2 --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml @@ -0,0 +1,13 @@ + + + + + diff --git a/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml.cs new file mode 100644 index 0000000..71ec596 --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml.cs @@ -0,0 +1,18 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace Semi.Avalonia.Demo.Pages; + +public partial class TimePickerDemo : UserControl +{ + public TimePickerDemo() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } +} \ 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 4936ae5..b5b7751 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml +++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml @@ -81,6 +81,9 @@ + + + diff --git a/src/Semi.Avalonia/Controls/Controls.axaml b/src/Semi.Avalonia/Controls/Controls.axaml index f0f76bc..21ea127 100644 --- a/src/Semi.Avalonia/Controls/Controls.axaml +++ b/src/Semi.Avalonia/Controls/Controls.axaml @@ -33,6 +33,7 @@ + diff --git a/src/Semi.Avalonia/Controls/TimePicker.axaml b/src/Semi.Avalonia/Controls/TimePicker.axaml new file mode 100644 index 0000000..5ca9928 --- /dev/null +++ b/src/Semi.Avalonia/Controls/TimePicker.axaml @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Themes/Light/Light.axaml b/src/Semi.Avalonia/Themes/Light/Light.axaml index ba61480..5026287 100644 --- a/src/Semi.Avalonia/Themes/Light/Light.axaml +++ b/src/Semi.Avalonia/Themes/Light/Light.axaml @@ -23,6 +23,7 @@ + diff --git a/src/Semi.Avalonia/Themes/Light/TimePicker.axaml b/src/Semi.Avalonia/Themes/Light/TimePicker.axaml new file mode 100644 index 0000000..9017e8d --- /dev/null +++ b/src/Semi.Avalonia/Themes/Light/TimePicker.axaml @@ -0,0 +1,3 @@ + + + From c8074300a08e5d52c22c224a603ce59e1f569605 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sat, 28 Jan 2023 03:12:01 +0800 Subject: [PATCH 2/4] feat: Add more styles. pending on extacting more resources. --- .../Pages/TimePickerDemo.axaml | 1 + src/Semi.Avalonia/Controls/Controls.axaml | 1 + .../Controls/DateTimePickerShared.axaml | 102 +++++++++++ src/Semi.Avalonia/Controls/TimePicker.axaml | 159 +++++++++--------- .../Themes/Light/DateTimePickerShared.axaml | 20 +++ src/Semi.Avalonia/Themes/Light/Light.axaml | 1 + .../Themes/Light/TimePicker.axaml | 5 + 7 files changed, 212 insertions(+), 77 deletions(-) create mode 100644 src/Semi.Avalonia/Controls/DateTimePickerShared.axaml create mode 100644 src/Semi.Avalonia/Themes/Light/DateTimePickerShared.axaml diff --git a/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml index 1c7e4f2..566f133 100644 --- a/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml @@ -9,5 +9,6 @@ mc:Ignorable="d"> + + @@ -159,33 +156,33 @@ - + + - - + + - - - + + - - - + - - + + + + + diff --git a/src/Semi.Avalonia/Themes/Light/DateTimePickerShared.axaml b/src/Semi.Avalonia/Themes/Light/DateTimePickerShared.axaml new file mode 100644 index 0000000..274acc3 --- /dev/null +++ b/src/Semi.Avalonia/Themes/Light/DateTimePickerShared.axaml @@ -0,0 +1,20 @@ + + + + 0 3 0 6 + + + + + + + + + M6.45096 8.34102L11.247 2.86102C11.3408 2.75361 11.4566 2.66753 11.5865 2.60854C11.7163 2.54956 11.8573 2.51904 12 2.51904C12.1426 2.51904 12.2836 2.54956 12.4135 2.60854C12.5433 2.66753 12.6591 2.75361 12.753 2.86102L17.549 8.34102C18.115 8.98802 17.655 10 16.796 10H7.20396C6.34396 10 5.88496 8.98802 6.45096 8.34102Z + M17.549 15.659L12.753 21.139C12.6591 21.2464 12.5434 21.3325 12.4135 21.3915C12.2836 21.4505 12.1427 21.481 12 21.481C11.8574 21.481 11.7164 21.4505 11.5865 21.3915C11.4566 21.3325 11.3409 21.2464 11.247 21.139L6.45101 15.659C5.88501 15.011 6.34501 14 7.20401 14H16.796C17.656 14 18.115 15.012 17.549 15.659Z + M17.4111 7.30848C18.0692 7.81171 18.1947 8.75312 17.6915 9.41119L11.1915 17.9112C10.909 18.2806 10.4711 18.4981 10.0061 18.5C9.54105 18.5019 9.10143 18.288 8.81592 17.9209L5.31592 13.4209C4.80731 12.767 4.92512 11.8246 5.57904 11.316C6.23296 10.8074 7.17537 10.9252 7.68398 11.5791L9.98988 14.5438L15.3084 7.58884C15.8116 6.93077 16.7531 6.80525 17.4111 7.30848Z + M17.6568 19.7782C18.2426 20.3639 19.1924 20.3639 19.7782 19.7782C20.3639 19.1924 20.3639 18.2426 19.7782 17.6568L14.1213 12L19.7782 6.34313C20.3639 5.75734 20.3639 4.8076 19.7782 4.22181C19.1924 3.63602 18.2426 3.63602 17.6568 4.22181L12 9.87866L6.34313 4.22181C5.75734 3.63602 4.8076 3.63602 4.22181 4.22181C3.63602 4.8076 3.63602 5.75734 4.22181 6.34313L9.87866 12L4.22181 17.6568C3.63602 18.2426 3.63602 19.1924 4.22181 19.7782C4.8076 20.3639 5.75734 20.3639 6.34313 19.7782L12 14.1213L17.6568 19.7782Z + + + + diff --git a/src/Semi.Avalonia/Themes/Light/Light.axaml b/src/Semi.Avalonia/Themes/Light/Light.axaml index 5026287..a7ec7c4 100644 --- a/src/Semi.Avalonia/Themes/Light/Light.axaml +++ b/src/Semi.Avalonia/Themes/Light/Light.axaml @@ -8,6 +8,7 @@ + diff --git a/src/Semi.Avalonia/Themes/Light/TimePicker.axaml b/src/Semi.Avalonia/Themes/Light/TimePicker.axaml index 9017e8d..e808fbc 100644 --- a/src/Semi.Avalonia/Themes/Light/TimePicker.axaml +++ b/src/Semi.Avalonia/Themes/Light/TimePicker.axaml @@ -1,3 +1,8 @@ + + + + M12 23C18.0751 23 23 18.0751 23 12C23 5.92487 18.0751 1 12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23ZM13.5 6.5V11.3787L17.0607 14.9393C17.6464 15.5251 17.6464 16.4749 17.0607 17.0607C16.4749 17.6464 15.5251 17.6464 14.9393 17.0607L10.9393 13.0607C10.658 12.7794 10.5 12.3978 10.5 12V6.5C10.5 5.67157 11.1716 5 12 5C12.8284 5 13.5 5.67157 13.5 6.5Z + From b9a8bd3a2e80c8771a192d0f45cdff8e43c04be9 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sat, 28 Jan 2023 23:54:48 +0800 Subject: [PATCH 3/4] feat: move some resources to shared, update several pseudoclass style. --- .../Pages/TimePickerDemo.axaml | 4 +- .../Controls/DateTimePickerShared.axaml | 24 +++--- src/Semi.Avalonia/Controls/TimePicker.axaml | 76 +++++++++---------- .../Themes/Light/DateTimePickerShared.axaml | 36 +++++++-- .../Themes/Light/TimePicker.axaml | 12 +-- 5 files changed, 87 insertions(+), 65 deletions(-) diff --git a/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml index 566f133..b97b5b5 100644 --- a/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/TimePickerDemo.axaml @@ -9,6 +9,8 @@ mc:Ignorable="d"> - @@ -257,23 +258,18 @@ PlacementMode="Bottom" PlacementTarget="{TemplateBinding}" WindowManagerAddShadowHint="False"> - + - - - - diff --git a/src/Semi.Avalonia/Themes/Light/DateTimePickerShared.axaml b/src/Semi.Avalonia/Themes/Light/DateTimePickerShared.axaml index 274acc3..2deaece 100644 --- a/src/Semi.Avalonia/Themes/Light/DateTimePickerShared.axaml +++ b/src/Semi.Avalonia/Themes/Light/DateTimePickerShared.axaml @@ -1,14 +1,17 @@ - + 0 3 0 6 - - - + + + - - - + + + M6.45096 8.34102L11.247 2.86102C11.3408 2.75361 11.4566 2.66753 11.5865 2.60854C11.7163 2.54956 11.8573 2.51904 12 2.51904C12.1426 2.51904 12.2836 2.54956 12.4135 2.60854C12.5433 2.66753 12.6591 2.75361 12.753 2.86102L17.549 8.34102C18.115 8.98802 17.655 10 16.796 10H7.20396C6.34396 10 5.88496 8.98802 6.45096 8.34102Z M17.549 15.659L12.753 21.139C12.6591 21.2464 12.5434 21.3325 12.4135 21.3915C12.2836 21.4505 12.1427 21.481 12 21.481C11.8574 21.481 11.7164 21.4505 11.5865 21.3915C11.4566 21.3325 11.3409 21.2464 11.247 21.139L6.45101 15.659C5.88501 15.011 6.34501 14 7.20401 14H16.796C17.656 14 18.115 15.012 17.549 15.659Z @@ -17,4 +20,23 @@ + 28 + + + + + + + + + + + + + + + 0 0 8 0 #1A000000 + 16 0 + 8 + diff --git a/src/Semi.Avalonia/Themes/Light/TimePicker.axaml b/src/Semi.Avalonia/Themes/Light/TimePicker.axaml index e808fbc..9df9b0b 100644 --- a/src/Semi.Avalonia/Themes/Light/TimePicker.axaml +++ b/src/Semi.Avalonia/Themes/Light/TimePicker.axaml @@ -1,8 +1,10 @@ - + - - - + M12 23C18.0751 23 23 18.0751 23 12C23 5.92487 18.0751 1 12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23ZM13.5 6.5V11.3787L17.0607 14.9393C17.6464 15.5251 17.6464 16.4749 17.0607 17.0607C16.4749 17.6464 15.5251 17.6464 14.9393 17.0607L10.9393 13.0607C10.658 12.7794 10.5 12.3978 10.5 12V6.5C10.5 5.67157 11.1716 5 12 5C12.8284 5 13.5 5.67157 13.5 6.5Z - + + From 6674ca371508a6db619d278d6120153bbcdc29bf Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sun, 29 Jan 2023 01:04:49 +0800 Subject: [PATCH 4/4] feat: Add DatePicker, move some common styles to shared. --- .../Pages/DatePickerDemo.axaml | 15 ++ .../Pages/DatePickerDemo.axaml.cs | 18 ++ demo/Semi.Avalonia.Demo/Views/MainView.axaml | 3 + src/Semi.Avalonia/Controls/Controls.axaml | 1 + src/Semi.Avalonia/Controls/DatePicker.axaml | 235 ++++++++++++++++++ .../Controls/DateTimePickerShared.axaml | 27 ++ src/Semi.Avalonia/Controls/TimePicker.axaml | 38 +-- .../Themes/Light/DatePicker.axaml | 4 + .../Themes/Light/DateTimePickerShared.axaml | 2 +- src/Semi.Avalonia/Themes/Light/Light.axaml | 1 + .../Themes/Light/TimePicker.axaml | 3 - 11 files changed, 311 insertions(+), 36 deletions(-) create mode 100644 demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml create mode 100644 demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml.cs create mode 100644 src/Semi.Avalonia/Controls/DatePicker.axaml create mode 100644 src/Semi.Avalonia/Themes/Light/DatePicker.axaml diff --git a/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml new file mode 100644 index 0000000..968daa2 --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml.cs new file mode 100644 index 0000000..6f9e209 --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml.cs @@ -0,0 +1,18 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace Semi.Avalonia.Demo.Pages; + +public partial class DatePickerDemo : UserControl +{ + public DatePickerDemo() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } +} \ 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 b5b7751..e0084e2 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml +++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml @@ -36,6 +36,9 @@ + + + diff --git a/src/Semi.Avalonia/Controls/Controls.axaml b/src/Semi.Avalonia/Controls/Controls.axaml index 904d623..25c89e0 100644 --- a/src/Semi.Avalonia/Controls/Controls.axaml +++ b/src/Semi.Avalonia/Controls/Controls.axaml @@ -10,6 +10,7 @@ + diff --git a/src/Semi.Avalonia/Controls/DatePicker.axaml b/src/Semi.Avalonia/Controls/DatePicker.axaml new file mode 100644 index 0000000..8264ad5 --- /dev/null +++ b/src/Semi.Avalonia/Controls/DatePicker.axaml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Controls/DateTimePickerShared.axaml b/src/Semi.Avalonia/Controls/DateTimePickerShared.axaml index b6c808e..3cbb0d4 100644 --- a/src/Semi.Avalonia/Controls/DateTimePickerShared.axaml +++ b/src/Semi.Avalonia/Controls/DateTimePickerShared.axaml @@ -1,6 +1,33 @@ + + + + + + + + + + + + + - - - - - - - - - - - - @@ -57,7 +31,7 @@ @@ -69,7 +43,7 @@ @@ -81,7 +55,7 @@ @@ -178,7 +152,7 @@ Cursor="Hand" Foreground="{TemplateBinding Foreground}" IsEnabled="{TemplateBinding IsEnabled}" - Theme="{StaticResource TimePickerFlyoutButton}"> + Theme="{StaticResource DateTimePickerFlyoutButton}"> @@ -243,8 +217,8 @@ diff --git a/src/Semi.Avalonia/Themes/Light/DatePicker.axaml b/src/Semi.Avalonia/Themes/Light/DatePicker.axaml new file mode 100644 index 0000000..6964b5d --- /dev/null +++ b/src/Semi.Avalonia/Themes/Light/DatePicker.axaml @@ -0,0 +1,4 @@ + + + M4 20V8H20V20H4ZM2 4C2 2.89543 2.89543 2 4 2H20C21.1046 2 22 2.89543 22 4V20C22 21.1046 21.1046 22 20 22H4C2.89543 22 2 21.1046 2 20V4ZM6 10.5C6 10.2239 6.22386 10 6.5 10H8.5C8.77614 10 9 10.2239 9 10.5V12.5C9 12.7761 8.77614 13 8.5 13H6.5C6.22386 13 6 12.7761 6 12.5V10.5ZM6.5 15C6.22386 15 6 15.2239 6 15.5V17.5C6 17.7761 6.22386 18 6.5 18H8.5C8.77614 18 9 17.7761 9 17.5V15.5C9 15.2239 8.77614 15 8.5 15H6.5ZM10.5 10.5C10.5 10.2239 10.7239 10 11 10H13C13.2761 10 13.5 10.2239 13.5 10.5V12.5C13.5 12.7761 13.2761 13 13 13H11C10.7239 13 10.5 12.7761 10.5 12.5V10.5ZM11 15C10.7239 15 10.5 15.2239 10.5 15.5V17.5C10.5 17.7761 10.7239 18 11 18H13C13.2761 18 13.5 17.7761 13.5 17.5V15.5C13.5 15.2239 13.2761 15 13 15H11ZM15 10.5C15 10.2239 15.2239 10 15.5 10H17.5C17.7761 10 18 10.2239 18 10.5V12.5C18 12.7761 17.7761 13 17.5 13H15.5C15.2239 13 15 12.7761 15 12.5V10.5ZM15.5 15C15.2239 15 15 15.2239 15 15.5V17.5C15 17.7761 15.2239 18 15.5 18H17.5C17.7761 18 18 17.7761 18 17.5V15.5C18 15.2239 17.7761 15 17.5 15H15.5Z + diff --git a/src/Semi.Avalonia/Themes/Light/DateTimePickerShared.axaml b/src/Semi.Avalonia/Themes/Light/DateTimePickerShared.axaml index 2deaece..31737e3 100644 --- a/src/Semi.Avalonia/Themes/Light/DateTimePickerShared.axaml +++ b/src/Semi.Avalonia/Themes/Light/DateTimePickerShared.axaml @@ -20,7 +20,7 @@ - 28 + 28 diff --git a/src/Semi.Avalonia/Themes/Light/Light.axaml b/src/Semi.Avalonia/Themes/Light/Light.axaml index a7ec7c4..f73b8b7 100644 --- a/src/Semi.Avalonia/Themes/Light/Light.axaml +++ b/src/Semi.Avalonia/Themes/Light/Light.axaml @@ -8,6 +8,7 @@ + diff --git a/src/Semi.Avalonia/Themes/Light/TimePicker.axaml b/src/Semi.Avalonia/Themes/Light/TimePicker.axaml index 9df9b0b..8f0f635 100644 --- a/src/Semi.Avalonia/Themes/Light/TimePicker.axaml +++ b/src/Semi.Avalonia/Themes/Light/TimePicker.axaml @@ -3,8 +3,5 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=System.Runtime"> - M12 23C18.0751 23 23 18.0751 23 12C23 5.92487 18.0751 1 12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23ZM13.5 6.5V11.3787L17.0607 14.9393C17.6464 15.5251 17.6464 16.4749 17.0607 17.0607C16.4749 17.6464 15.5251 17.6464 14.9393 17.0607L10.9393 13.0607C10.658 12.7794 10.5 12.3978 10.5 12V6.5C10.5 5.67157 11.1716 5 12 5C12.8284 5 13.5 5.67157 13.5 6.5Z - -