#nullable enable using Cysharp.Threading.Tasks; using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; using UVC.UIToolkit; namespace Factory.UIToolkit.Modal { /// /// 설정 모달 - Display 탭 콘텐츠 /// [UxmlElement] public partial class UTKFactorySettingModalContentDisplay : VisualElement, IDisposable, IUTKTabContent { #region Constants private const string UXML_PATH = "Factory/UIToolkit/Modal/UTKFactorySettingModalContentDisplayUXML"; #endregion #region Fields private bool _disposed; #endregion #region Properties private UTKReordableTabList? _reordableTabList; #endregion #region Constructor public UTKFactorySettingModalContentDisplay() { var asset = Resources.Load(UXML_PATH); if (asset != null) { var root = asset.Instantiate(); root.style.flexGrow = 1; _reordableTabList = root.Q("tab-list"); if(_reordableTabList != null) { _reordableTabList.OnDataChanged += OnDataChanged; _reordableTabList.OnOrderChanged += OnOrderChanged; SetTabListSampleData(); } Add(root); } } private void OnDataChanged(string tabName, int tabIndex) { Debug.Log($"Tab '{tabName}' at index {tabIndex} has changed."); } private void OnOrderChanged(string tabName, int tabIndex) { Debug.Log($"Tab '{tabName}' moved index {tabIndex}."); } private void SetTabListSampleData() { var data = new Dictionary>> { ["센서"] = new() { new() { ["order"] = "0", ["active"] = "True", ["text"] = "온도 센서" }, new() { ["order"] = "1", ["active"] = "True", ["text"] = "습도 센서" }, new() { ["order"] = "2", ["active"] = "False", ["text"] = "압력 센서" }, }, ["장비"] = new() { new() { ["order"] = "0", ["active"] = "True", ["text"] = "컨베이어" }, new() { ["order"] = "1", ["active"] = "False", ["text"] = "로봇암" }, new() { ["order"] = "2", ["active"] = "True", ["text"] = "CNC" }, new() { ["order"] = "3", ["active"] = "True", ["text"] = "AGV" }, }, ["알림"] = new() { new() { ["order"] = "0", ["active"] = "True", ["text"] = "경고" }, new() { ["order"] = "1", ["active"] = "True", ["text"] = "에러" }, } }; _reordableTabList?.SetData(data); } #endregion #region Public Methods public void Show(object? data) { } public async UniTask Hide() { } #endregion #region IDisposable public void Dispose() { if (_disposed) return; _disposed = true; if (_reordableTabList != null) { _reordableTabList.OnDataChanged -= OnDataChanged; _reordableTabList.OnOrderChanged -= OnOrderChanged; } } #endregion } }