#nullable enable using System; using UnityEngine; using UnityEngine.UIElements; using UVC.UIToolkit; namespace UVC.Studio.UIToolkit.Modal { [UxmlElement] public partial class UTKSettingModalContent : VisualElement, IDisposable, IUTKModalContent { private UTKTabView tabView; public UTKSettingModalContent() { style.flexGrow = 1; tabView = new UTKTabView(); tabView.style.flexGrow = 1; tabView.TabWidth = 140; // 탭 너비 설정 // 탭 정렬 방향 설정 tabView.Align = TabAlign.Left; // 탭을 왼쪽에 세로로 배치 // 탭 추가 var tab1 = tabView.AddUTKTab("Database"); tab1.Add(new UTKSettingModalContentDB()); var tab2 = tabView.AddUTKTab("General"); tab2.Add(new UTKSettingModalContentGeneral()); var tab3 = tabView.AddUTKTab("Shortcut"); tab3.Add(new UTKSettingModalContentShortcut()); tabView.OnTabChanged += OnTabChanged; tabView.tabClosed += OnTabClosed; Add(tabView); } public UTKSettingModalContent(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; } } }