feat: simplify mechanism.

This commit is contained in:
rabbitism
2024-06-23 03:16:21 +08:00
parent 16e01af6b0
commit c88258cdd5
7 changed files with 142 additions and 111 deletions

View File

@@ -1,21 +1,67 @@
namespace Ursa.Controls;
public class CalendarContext(int? year = null, int? month = null, int? day = null)
public sealed class CalendarContext(int? year = null, int? month = null, int? startYear = null, int? endYear = null)
{
public int? Year = year;
public int? Month = month;
public int? Day = day;
public int? StartYear;
public int? EndYear;
public int? Year { get; } = year;
public int? Month { get; } = month;
public int? StartYear { get; } = startYear;
public int? EndYear { get; } = endYear;
public CalendarContext Clone()
{
return new CalendarContext(Year, Month, Day) { StartYear = StartYear, EndYear = EndYear };
return new CalendarContext(Year, Month, StartYear, EndYear);
}
public static CalendarContext Today()
{
return new CalendarContext(DateTime.Today.Year, DateTime.Today.Month, 1);
return new CalendarContext(DateTime.Today.Year, DateTime.Today.Month);
}
public CalendarContext With(int? year = null, int? month = null, int? startYear = null, int? endYear = null)
{
return new CalendarContext(year ?? Year, month ?? Month, startYear ?? StartYear, endYear ?? EndYear);
}
public CalendarContext NextMonth()
{
var year = Year;
var month = Month;
if (month == 12)
{
year++;
month = 1;
}
else
{
month++;
}
return new CalendarContext(year, month, StartYear, EndYear);
}
public CalendarContext PreviousMonth()
{
var year = Year;
var month = Month;
if (month == 1)
{
year--;
month = 12;
}
else
{
month--;
}
return new CalendarContext(year, month, StartYear, EndYear);
}
public CalendarContext NextYear()
{
return new CalendarContext(Year + 1, Month, StartYear, EndYear);
}
public CalendarContext PreviousYear()
{
return new CalendarContext(Year - 1, Month, StartYear, EndYear);
}
}