using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace ZTools
{
[RequireComponent(typeof(ZCalendarModel))]
public class ZCalendar : MonoBehaviour
{
///
/// ���ݸ���ʱ���ɻ�ȡ��ÿһ�����ڣ���������в���
///
public event Action UpdateDateEvent;
///
/// ���Ի�ȡ�������ijһ��
///
public event Action ChoiceDayEvent;
///
/// ѡ������ʱ���¼�
///
public event Action RangeTimeEvent;
///
/// �������ؽ���
///
public event Action CompleteEvent;
///
/// ��ȡ��ǰѡ�е������
///
public ZCalendarDayItem CrtTime { get; set; }
///
/// model
///
private ZCalendarModel zCalendarModel;
///
/// controller
///
private ZCalendarController zCalendarController;
///
/// ���
///
private void Start()
{
zCalendarModel = this.GetComponent();
zCalendarController = new ZCalendarController()
{
zCalendar = this,
zCalendarModel = zCalendarModel,
pos = this.transform.localPosition
};
zCalendarController.Init();
// ����ʱ�Զ���ʼ��
Init();
}
///
/// ��������ʱ���ʼ��
///
public void Init()
{
zCalendarController.InitDate(DateTime.Now);
}
///
/// ����DateTime��ʽ��ʼ������
///
public void Init(DateTime dateTime)
{
zCalendarController.InitDate(dateTime);
}
///
/// ����YYYY-MM-DD��ʽ��ʼ������
///
public void Init(string dateTime)
{
string[] dateTimes = dateTime.Split('-');
zCalendarController.InitDate(new DateTime(int.Parse(dateTimes[0]), int.Parse(dateTimes[1]), int.Parse(dateTimes[2])));
}
///
/// ��ʾ����
///
public void Show()
{
zCalendarController.Show();
}
///
/// ���ص���
///
public void Hide()
{
zCalendarController.Hide();
}
///
/// �л�ʱ��
///
///
[Obsolete("�¼�����������ʹ��UpdateDateEvent��ȡ�л��·�ʱ���ص�ʱ�����")]
public void UpdateDate(ZCalendarDayItem obj)
{
if (null != UpdateDateEvent)
{
UpdateDateEvent.Invoke(obj);
}
}
///
/// ���ڵ��
///
[Obsolete("�¼�����������ʹ��ChoiceDayEvent��ȡ��ǰѡ���ʱ��")]
public void DayClick(ZCalendarDayItem dayItem)
{
if (null != ChoiceDayEvent)
{
ChoiceDayEvent.Invoke(dayItem);
}
CrtTime = dayItem;
}
///
/// ���ؽ���
///
[Obsolete("�¼�����������ʹ��CompleteEvent��ȡ������������¼�")]
public void DateComplete()
{
if (null != CompleteEvent)
{
CompleteEvent.Invoke();
}
}
///
/// ��������ѡ��
///
///
///
[Obsolete("�¼�����������ʹ��RangeTimeEvent��ȡ����ʱ��")]
public void RangeCalendar(ZCalendarDayItem firstDay, ZCalendarDayItem secondDay )
{
if (null != RangeTimeEvent)
{
RangeTimeEvent.Invoke(firstDay, secondDay);
}
}
///
/// 组件销毁时清理资源
///
private void OnDestroy()
{
// 清理事件订阅,避免内存泄漏
UpdateDateEvent = null;
ChoiceDayEvent = null;
RangeTimeEvent = null;
CompleteEvent = null;
// 清理引用
zCalendarController = null;
zCalendarModel = null;
CrtTime = null;
// 移除 GC.Collect() 调用
// .NET 的垃圾回收器会自动管理内存,不需要手动调用 GC.Collect()
// 频繁调用 GC.Collect() 会导致垃圾回收效率下降,影响应用程序性能
// 如果有非托管资源需要释放,应该实现 IDisposable 接口,使用 using 语句确保资源释放
}
}
}