Files
XRLib/Assets/Scripts/Studio/UIToolkit/Modal/UTKSettingModalContent.cs
2026-02-24 20:01:56 +09:00

75 lines
2.1 KiB
C#

#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<object>
{
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;
}
}
}