Files

75 lines
2.3 KiB
C#
Raw Permalink Normal View History

2026-03-10 11:35:30 +09:00
#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.AddTab(new UTKTab("Database"){MaterialIcon = UTKMaterialIcons.Database});
tab1.Add(new UTKSettingModalContentDB());
var tab2 = tabView.AddTab(new UTKTab("General"){MaterialIcon = UTKMaterialIcons.Settings});
tab2.Add(new UTKSettingModalContentGeneral());
var tab3 = tabView.AddTab(new UTKTab("Shortcut"){MaterialIcon = UTKMaterialIcons.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;
}
}
}