Files
EnglewoodLAB/Assets/Scripts/Factory/Modal/Settings/DisplayDataOrderListItemView.cs

73 lines
2.0 KiB
C#

#nullable enable
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UVC.UI.List.Draggable;
namespace UVC.Factory.Modal.Settings
{
public class DisplayDataOrderListItemView : ListItemView
{
[Header("UI 추가 요소 연결")]
[SerializeField]
[Tooltip("사용 유무를 선택 할 Toggle")]
protected Toggle? toggle;
[SerializeField]
[Tooltip("아이템의 제목을 표시할 TMP_InputField 컴포넌트")]
protected TMP_InputField? inputText;
public void Start()
{
if (toggle != null)
{
toggle.onValueChanged.AddListener(OnToggleValueChanged);
}
if (inputText != null)
{
inputText.onValueChanged.AddListener(OnInputTextChanged);
}
}
private void OnInputTextChanged(string text)
{
if (boundData != null)
{
boundData.DisplayName = text;
OnChangeData?.Invoke(boundData);
}
}
private void OnToggleValueChanged(bool isChecked)
{
if (boundData is ConfigDataOrderListItemData itemData)
{
itemData.isChecked = isChecked;
OnChangeData?.Invoke(itemData);
}
}
protected override void UpdateUI()
{
base.UpdateUI();
// IListItemData 인터페이스를 구현한 경우
if (boundData != null)
{
if(inputText != null) inputText.text = boundData.DisplayName;
if(toggle != null) toggle.isOn = boundData is ConfigDataOrderListItemData itemData && itemData.isChecked;
}
}
protected override void OnDestroy()
{
base.OnDestroy();
if (toggle != null) toggle.onValueChanged.RemoveListener(OnToggleValueChanged);
if (inputText != null)
{
inputText.onValueChanged.RemoveListener(OnInputTextChanged);
}
}
}
}