Files
XRLib/Assets/Scripts/UVC/UIToolkit/Property/Items/UTKDatePropertyItem.cs

79 lines
2.7 KiB
C#

#nullable enable
using System;
namespace UVC.UIToolkit
{
/// <summary>
/// 날짜 속성 데이터 클래스입니다.
/// UI는 UTKDatePropertyItemView에서 담당합니다.
/// </summary>
public class UTKDatePropertyItem : UTKPropertyItemBase<DateTime>
{
#region Fields
private string _dateFormat = "yyyy-MM-dd";
private DateTime _minDay = DateTime.MinValue;
private DateTime _maxDay = DateTime.MaxValue;
#endregion
#region Properties
/// <summary>속성 타입</summary>
public override UTKPropertyType PropertyType => UTKPropertyType.Date;
/// <summary>날짜 표시 형식</summary>
public string DateFormat
{
get => _dateFormat;
set => _dateFormat = value ?? "yyyy-MM-dd";
}
/// <summary>최소 날짜</summary>
public DateTime MinDay
{
get => _minDay;
set => _minDay = value;
}
/// <summary>최대 날짜</summary>
public DateTime MaxDay
{
get => _maxDay;
set => _maxDay = value;
}
#endregion
#region Constructor
/// <summary>
/// 날짜 속성을 생성합니다.
/// </summary>
/// <param name="id">고유 ID</param>
/// <param name="name">표시 이름</param>
/// <param name="initialValue">초기 값 (default이면 오늘 날짜)</param>
/// <param name="isReadOnly">읽기 전용 여부</param>
public UTKDatePropertyItem(string id, string name, DateTime initialValue = default, bool isReadOnly = false)
: base(id, name, initialValue == default ? DateTime.Today : initialValue)
{
_minDay = DateTime.MinValue;
_maxDay = DateTime.MaxValue;
IsReadOnly = isReadOnly;
}
/// <summary>
/// 날짜 속성을 생성합니다 (날짜 제한 포함).
/// </summary>
/// <param name="id">고유 ID</param>
/// <param name="name">표시 이름</param>
/// <param name="initialValue">초기 값</param>
/// <param name="minDay">최소 날짜 (null이면 제한 없음)</param>
/// <param name="maxDay">최대 날짜 (null이면 제한 없음)</param>
/// <param name="isReadOnly">읽기 전용 여부</param>
public UTKDatePropertyItem(string id, string name, DateTime initialValue, DateTime? minDay, DateTime? maxDay, bool isReadOnly = false)
: base(id, name, initialValue == default ? DateTime.Today : initialValue)
{
_minDay = minDay ?? DateTime.MinValue;
_maxDay = maxDay ?? DateTime.MaxValue;
IsReadOnly = isReadOnly;
}
#endregion
}
}