From: Woochanlee Date: Wed, 26 Jan 2022 09:18:48 +0000 (+0900) Subject: [NUI] Support last day of month when month change in DatePicker X-Git-Tag: accepted/tizen/unified/20231205.024657~1192 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=06d0aca2b7d897956bb984f60b809819b120ac17;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [NUI] Support last day of month when month change in DatePicker Previously, DatePicker don't consider last day of month when month change. It makes crash issue when create DateTime. --- diff --git a/src/Tizen.NUI.Components/Controls/DatePicker.cs b/src/Tizen.NUI.Components/Controls/DatePicker.cs index 46d223b..fcb038d 100755 --- a/src/Tizen.NUI.Components/Controls/DatePicker.cs +++ b/src/Tizen.NUI.Components/Controls/DatePicker.cs @@ -240,7 +240,7 @@ namespace Tizen.NUI.Components PickersOrderSet(); SetMonthText(); - MaxDaySet(); + MaxDaySet(currentDate.Year, currentDate.Month); } private void OnDayValueChanged(object sender, ValueChangedEventArgs e) @@ -256,8 +256,7 @@ namespace Tizen.NUI.Components { if (currentDate.Month == e.Value) return; - currentDate = new DateTime(currentDate.Year, e.Value, currentDate.Day); - MaxDaySet(); + MaxDaySet(currentDate.Year, e.Value); OnDateChanged(); } @@ -266,8 +265,7 @@ namespace Tizen.NUI.Components { if (currentDate.Year == e.Value) return; - currentDate = new DateTime(e.Value, currentDate.Month, currentDate.Day); - MaxDaySet(); + MaxDaySet(e.Value, currentDate.Month); OnDateChanged(); } @@ -278,17 +276,17 @@ namespace Tizen.NUI.Components DateChanged?.Invoke(this, eventArgs); } - private void MaxDaySet() + private void MaxDaySet(int year, int month) { - int maxDaysInMonth = DateTime.DaysInMonth(currentDate.Year, currentDate.Month); + int maxDaysInMonth = DateTime.DaysInMonth(year, month); dayPicker.MaxValue = maxDaysInMonth; if (currentDate.Day > maxDaysInMonth) { - currentDate = new DateTime(currentDate.Year, currentDate.Month, maxDaysInMonth); + currentDate = new DateTime(year, month, maxDaysInMonth); dayPicker.CurrentValue = maxDaysInMonth; return; } - currentDate = new DateTime(currentDate.Year, currentDate.Month, currentDate.Day); + currentDate = new DateTime(year, month, currentDate.Day); } //FIXME: There is no way to know when system locale changed in NUI.