From ddb6900943b7c7e05ad4ec73f4646207ff72f523 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Thu, 20 Jun 2024 11:18:25 +0800 Subject: [PATCH] feat: disable year out of range. --- src/Ursa.Themes.Semi/Controls/Calendar.axaml | 17 ++++++----- .../Themes/Shared/DatePicker.axaml | 6 ++++ .../Themes/Shared/_index.axaml | 1 + .../Controls/DateTimePicker/CalendarView.cs | 5 ++++ .../DateTimePicker/CalendarYearButton.cs | 28 +++++++++++++------ 5 files changed, 42 insertions(+), 15 deletions(-) create mode 100644 src/Ursa.Themes.Semi/Themes/Shared/DatePicker.axaml diff --git a/src/Ursa.Themes.Semi/Controls/Calendar.axaml b/src/Ursa.Themes.Semi/Controls/Calendar.axaml index 9ed69f3..1264422 100644 --- a/src/Ursa.Themes.Semi/Controls/Calendar.axaml +++ b/src/Ursa.Themes.Semi/Controls/Calendar.axaml @@ -160,13 +160,16 @@ - - + + - + @@ -209,10 +212,10 @@ diff --git a/src/Ursa.Themes.Semi/Themes/Shared/DatePicker.axaml b/src/Ursa.Themes.Semi/Themes/Shared/DatePicker.axaml new file mode 100644 index 0000000..1a1d32f --- /dev/null +++ b/src/Ursa.Themes.Semi/Themes/Shared/DatePicker.axaml @@ -0,0 +1,6 @@ + + + M12.6185 4.39653C13.1272 4.92524 13.1272 5.78245 12.6185 6.31116L7.14483 12L12.6185 17.6888C13.1272 18.2176 13.1272 19.0748 12.6185 19.6035C12.1098 20.1322 11.285 20.1322 10.7763 19.6035L4.38153 12.9573C3.87282 12.4286 3.87282 11.5714 4.38153 11.0427L10.7763 4.39653C11.285 3.86782 12.1098 3.86782 12.6185 4.39653Z M19.6185 4.39653C20.1272 4.92524 20.1272 5.78245 19.6185 6.31116L14.1448 12L19.6185 17.6888C20.1272 18.2176 20.1272 19.0748 19.6185 19.6035C19.1098 20.1322 18.285 20.1322 17.7763 19.6035L11.3815 12.9573C10.8728 12.4286 10.8728 11.5714 11.3815 11.0427L17.7763 4.39653C18.285 3.86782 19.1098 3.86782 19.6185 4.39653Z + M4.38153 4.39653C4.89024 3.86782 5.71502 3.86782 6.22373 4.39653L12.6185 11.0427C13.1272 11.5714 13.1272 12.4286 12.6185 12.9573L6.22373 19.6035C5.71502 20.1322 4.89024 20.1322 4.38153 19.6035C3.87282 19.0748 3.87282 18.2176 4.38153 17.6888L9.85517 12L4.38153 6.31116C3.87282 5.78245 3.87282 4.92524 4.38153 4.39653Z M11.3815 4.39653C11.8902 3.86782 12.715 3.86782 13.2237 4.39653L19.6185 11.0427C20.1272 11.5714 20.1272 12.4286 19.6185 12.9573L13.2237 19.6035C12.715 20.1322 11.8902 20.1322 11.3815 19.6035C10.8728 19.0748 10.8728 18.2176 11.3815 17.6888L16.8552 12L11.3815 6.31116C10.8728 5.78245 10.8728 4.92524 11.3815 4.39653Z + diff --git a/src/Ursa.Themes.Semi/Themes/Shared/_index.axaml b/src/Ursa.Themes.Semi/Themes/Shared/_index.axaml index 658f6ae..63174ae 100644 --- a/src/Ursa.Themes.Semi/Themes/Shared/_index.axaml +++ b/src/Ursa.Themes.Semi/Themes/Shared/_index.axaml @@ -4,6 +4,7 @@ + diff --git a/src/Ursa/Controls/DateTimePicker/CalendarView.cs b/src/Ursa/Controls/DateTimePicker/CalendarView.cs index 5138a3a..265eeba 100644 --- a/src/Ursa/Controls/DateTimePicker/CalendarView.cs +++ b/src/Ursa/Controls/DateTimePicker/CalendarView.cs @@ -529,5 +529,10 @@ public class CalendarView : TemplatedControl _monthButton?.SetValue(ContentControl.ContentProperty, DateTimeHelper.GetCurrentDateTimeFormatInfo().AbbreviatedMonthNames[ContextCalendar.Month-1 ?? 0]); } + + bool canForward = !(ContextCalendar.EndYear <= 0) && !(ContextCalendar.Year <= 0); + bool canNext = !(ContextCalendar.StartYear > 9999) && !(ContextCalendar.EndYear > 9999); + IsEnabledProperty.SetValue(canForward, _previousButton, _fastPreviousButton); + IsEnabledProperty.SetValue(canNext, _nextButton, _fastNextButton); } } \ No newline at end of file diff --git a/src/Ursa/Controls/DateTimePicker/CalendarYearButton.cs b/src/Ursa/Controls/DateTimePicker/CalendarYearButton.cs index 8677bd8..917beb4 100644 --- a/src/Ursa/Controls/DateTimePicker/CalendarYearButton.cs +++ b/src/Ursa/Controls/DateTimePicker/CalendarYearButton.cs @@ -39,15 +39,27 @@ public class CalendarYearButton : ContentControl CalendarContext.Year = context.Year; CalendarContext.StartYear = context.StartYear; CalendarContext.EndYear = context.EndYear; - this.Mode = mode; - Content = Mode switch + Mode = mode; + switch (Mode) { - CalendarViewMode.Year => DateTimeHelper.GetCurrentDateTimeFormatInfo().AbbreviatedMonthNames[ CalendarContext.Month ?? 0 ], - CalendarViewMode.Decade => CalendarContext.Year?.ToString(), - CalendarViewMode.Century => CalendarContext.StartYear + "-" + CalendarContext.EndYear, - // CalendarViewMode.Century => CalendarContext.StartYear + "-" + CalendarContext.EndYear, - _ => Content - }; + case CalendarViewMode.Year: + Content = DateTimeHelper.GetCurrentDateTimeFormatInfo() + .AbbreviatedMonthNames[CalendarContext.Month ?? 0]; + break; + case CalendarViewMode.Decade: + Content = CalendarContext.Year <= 0 || CalendarContext.Year > 9999 + ? null + : CalendarContext.Year?.ToString(); + break; + case CalendarViewMode.Century: + Content = CalendarContext.EndYear <= 0 || CalendarContext.StartYear > 9999 + ? null + : CalendarContext.StartYear + "-" + CalendarContext.EndYear; + break; + default: + Content = null; + break; + } IsEnabled = Content != null; }