From 28f7aaf552f618a79292009ccec2c402a4c4afd0 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Thu, 20 Jun 2024 18:51:49 +0800 Subject: [PATCH] feat: improve range picker context initialization. --- .../Controls/DateRangePicker.axaml | 63 +++++++++++++------ .../DateTimePicker/CalendarContext.cs | 5 ++ .../DateTimePicker/DateRangePicker.cs | 27 +++++--- 3 files changed, 68 insertions(+), 27 deletions(-) diff --git a/src/Ursa.Themes.Semi/Controls/DateRangePicker.axaml b/src/Ursa.Themes.Semi/Controls/DateRangePicker.axaml index 0cc449b..1e81688 100644 --- a/src/Ursa.Themes.Semi/Controls/DateRangePicker.axaml +++ b/src/Ursa.Themes.Semi/Controls/DateRangePicker.axaml @@ -66,7 +66,7 @@ Name="{x:Static u:DateRangePicker.PART_Button}" Grid.Column="3" Padding="8,0" - Content="{DynamicResource TimePickerIconGlyph}" + Content="{DynamicResource CalendarDatePickerIconGlyph}" Focusable="False" Theme="{DynamicResource InnerIconButton}" /> @@ -87,24 +87,49 @@ BoxShadow="{DynamicResource ComboBoxPopupBoxShadow}" ClipToBounds="True" CornerRadius="6"> - - - - + + + + + + + + + diff --git a/src/Ursa/Controls/DateTimePicker/CalendarContext.cs b/src/Ursa/Controls/DateTimePicker/CalendarContext.cs index 19ff533..90beeab 100644 --- a/src/Ursa/Controls/DateTimePicker/CalendarContext.cs +++ b/src/Ursa/Controls/DateTimePicker/CalendarContext.cs @@ -13,4 +13,9 @@ public class CalendarContext(int? year = null, int? month = null, int? day = nul { return new CalendarContext(Year, Month, Day) { StartYear = StartYear, EndYear = EndYear }; } + + public static CalendarContext Today() + { + return new CalendarContext(DateTime.Today.Year, DateTime.Today.Month, 1); + } } \ No newline at end of file diff --git a/src/Ursa/Controls/DateTimePicker/DateRangePicker.cs b/src/Ursa/Controls/DateTimePicker/DateRangePicker.cs index c4556a8..149a57b 100644 --- a/src/Ursa/Controls/DateTimePicker/DateRangePicker.cs +++ b/src/Ursa/Controls/DateTimePicker/DateRangePicker.cs @@ -217,26 +217,37 @@ public class DateRangePicker : DatePickerBase if (_endCalendar is not null) { - var date2 = SelectedEndDate ?? SelectedStartDate ?? DateTime.Today; - _endCalendar.ContextCalendar = new CalendarContext(date2.Year, date2.Month, 1); + var date2 = SelectedEndDate; + if (date2 is null || (date2.Value.Year==SelectedStartDate?.Year && date2.Value.Month == SelectedStartDate?.Month)) + { + date2 = SelectedStartDate ?? DateTime.Today; + date2 = date2.Value.AddMonths(1); + } + _endCalendar.ContextCalendar = new CalendarContext(date2?.Year, date2?.Month, 1); _endCalendar.UpdateDayButtons(); } } else if (sender == _endTextBox) { _start = false; - if (_startCalendar is not null) - { - var date2 = SelectedStartDate ?? SelectedEndDate ?? DateTime.Today; - _startCalendar.ContextCalendar = new CalendarContext(date2.Year, date2.Month, 1); - _startCalendar.UpdateDayButtons(); - } if (_endCalendar is not null) { var date = SelectedEndDate ?? DateTime.Today; _endCalendar.ContextCalendar = new CalendarContext(date.Year, date.Month, 1); _endCalendar.UpdateDayButtons(); } + if (_startCalendar is not null) + { + var date2 = SelectedStartDate; + if (date2 is null || (date2.Value.Year==SelectedEndDate?.Year && date2.Value.Month == SelectedEndDate?.Month)) + { + date2 = SelectedStartDate ?? DateTime.Today; + date2 = date2.Value.AddMonths(-1); + } + _startCalendar.ContextCalendar = new CalendarContext(date2?.Year, date2?.Month, 1); + _startCalendar.UpdateDayButtons(); + } + } SetCurrentValue(IsDropdownOpenProperty, true); }