#nullable enable using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; using UVC.UIToolkit; namespace Factory.UIToolkit.Modal { /// /// 설정 표시 정보 탭 뷰. /// UTKReordableList를 사용하여 표시 항목의 순서, 사용 유무, 내용을 관리합니다. /// [UxmlElement] public partial class UTKFactorySettingModalContent : VisualElement, IDisposable, IUTKModalContent { private UTKTabView tabView; public UTKFactorySettingModalContent() { style.flexGrow = 1; tabView = new UTKTabView(); tabView.style.flexGrow = 1; tabView.TabWidth = 140; // 탭 너비 설정 // 탭 정렬 방향 설정 tabView.Align = TabAlign.Left; // 탭을 왼쪽에 세로로 배치 // 탭 추가 var tab1 = tabView.AddTab(new UTKTab("일반정보"){MaterialIcon = UTKMaterialIcons.Info}); tab1.Add(new UTKFactorySettingModalContentGeneral()); var tab2 = tabView.AddTab(new UTKTab("표시정보"){MaterialIcon = UTKMaterialIcons.DisplaySettings}); tab2.Add(new UTKFactorySettingModalContentDisplay()); var tab3 = tabView.AddTab(new UTKTab("알람설정"){MaterialIcon = UTKMaterialIcons.Alarm}); tab3.Add(new UTKFactorySettingModalContentAlarm()); var tab4 = tabView.AddTab(new UTKTab("입력설정"){MaterialIcon = UTKMaterialIcons.Input}); tab4.Add(new UTKFactorySettingModalContentInput()); tabView.OnTabChanged += OnTabChanged; tabView.tabClosed += OnTabClosed; Add(tabView); } public UTKFactorySettingModalContent(int tabIndex = 0, object? data = null) : this() { // 생성자에서 탭 인덱스를 받아서 초기 탭 설정 tabView.SelectedIndex = tabIndex; } private void OnTabChanged(int index, UnityEngine.UIElements.Tab? tab) { Debug.Log($"Selected Tab Index: {index}"); } private void OnTabClosed(UnityEngine.UIElements.Tab tab, int index) { Debug.Log($"Closed Tab Index: {index}"); } public object? GetResult() { IUTKTabContent? content = UTKTabView.FindTabContent(tabView.activeTab); if (content != null) { return content.Hide(); } return null; } public void Dispose() { // 필요한 경우 리소스 정리 tabView.OnTabChanged -= OnTabChanged; tabView.tabClosed -= OnTabClosed; } } }