Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/UIWidgetsSamples/ToDoList/ToDoListViewComponent.cs
2026-02-21 16:45:37 +08:00

89 lines
1.6 KiB
C#

using System;
using UIWidgets;
using UnityEngine;
using UnityEngine.UI;
namespace UIWidgetsSamples.ToDoList
{
public class ToDoListViewComponent : ListViewItem, IListViewItemHeight
{
[SerializeField]
public Toggle Toggle;
[SerializeField]
public Text Task;
[NonSerialized]
public ToDoListItem Item;
private LayoutGroup layoutGroup;
public float Height
{
get
{
return CalculateHeight();
}
}
public LayoutGroup LayoutGroup
{
get
{
if (layoutGroup == null)
{
layoutGroup = GetComponent<LayoutGroup>();
}
return layoutGroup;
}
}
protected override void Start()
{
base.Start();
Toggle.onValueChanged.AddListener(OnToggle);
}
private void OnToggle(bool toggle)
{
Item.Done = toggle;
}
public void SetData(ToDoListItem item)
{
Item = item;
if (Item == null)
{
Toggle.isOn = false;
Task.text = string.Empty;
}
else
{
Toggle.isOn = Item.Done;
Task.text = Item.Task.Replace("\\n", "\n");
}
}
private float CalculateHeight()
{
base.gameObject.SetActive(true);
LayoutGroup.CalculateLayoutInputHorizontal();
LayoutGroup.SetLayoutHorizontal();
LayoutGroup.CalculateLayoutInputVertical();
LayoutGroup.SetLayoutVertical();
float preferredHeight = LayoutUtility.GetPreferredHeight(base.transform as RectTransform);
base.gameObject.SetActive(false);
return preferredHeight;
}
protected override void OnDestroy()
{
base.OnDestroy();
if (Toggle != null)
{
Toggle.onValueChanged.RemoveListener(OnToggle);
}
}
}
}