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

112 lines
5.3 KiB
C#

#nullable enable
using Cysharp.Threading.Tasks;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
using UVC.UIToolkit;
namespace UVC.Studio.UIToolkit.Modal
{
/// <summary>
/// 설정 모달 - Database 탭 콘텐츠
/// </summary>
[UxmlElement]
public partial class UTKSettingModalContentShortcut : VisualElement, IDisposable, IUTKTabContent
{
#region Constants
private const string UXML_PATH = "Studio/UIToolkit/Modal/UTKSettingModalContentShortcutUXML";
#endregion
#region Fields
private bool _disposed;
private UTKShortcutList? _shortcutList;
#endregion
#region Properties
#endregion
#region Constructor
public UTKSettingModalContentShortcut()
{
var asset = Resources.Load<VisualTreeAsset>(UXML_PATH);
if (asset != null)
{
var root = asset.Instantiate();
root.style.flexGrow = 1;
// 참조 가져오기
_shortcutList = root.Q<UTKShortcutList>("window");
if (_shortcutList != null)
{
// 변경 이벤트 구독
_shortcutList.OnDataChanged += OnDataChanged;
}
Add(root);
}
}
#endregion
private void OnDataChanged(UTKShortcutItemData item)
{
Debug.Log($"{item.CommandName}: Ctrl={item.UseCtrl} Key={item.Key}");
}
#region IUTKTabContent
public void Show(object? data)
{
Debug.Log($"[UTKSettingModalContentShortcut] Show called with data: {data}");
if (_shortcutList != null)
{
if(data is List<UTKShortcutItemData> shortcuts)
{
_shortcutList.SetData(shortcuts);
return;
}
// 예시 데이터 설정
var tempData = new List<UTKShortcutItemData>()
{
new() { Id = "file.new_project", CommandName = "File > New Project", UseCtrl = true, UseShift = false, UseAlt = false, Key = "N" },
new() { Id = "file.open_project", CommandName = "File > Open Project", UseCtrl = true, UseShift = true, UseAlt = false, Key = "O" },
new() { Id = "file.save_project", CommandName = "File > Save Project", UseCtrl = true, UseShift = false, UseAlt = true, Key = "S" },
new() { Id = "file.save_as", CommandName = "File > Save As...", UseCtrl = true, UseShift = true, UseAlt = true, Key = "S" },
new() { Id = "file.insert_database", CommandName = "File > Insert Database", UseCtrl = true, UseShift = true, UseAlt = false, Key = "I" },
new() { Id = "file.export_layout", CommandName = "File > Export > Layout", UseCtrl = true, UseShift = true, UseAlt = false, Key = "L" },
new() { Id = "file.export_metadata", CommandName = "File > Export > Metadata",UseCtrl = true, UseShift = true, UseAlt = false, Key = "M" },
new() { Id = "file.export_gltf", CommandName = "File > Export > glTF", UseCtrl = true, UseShift = true, UseAlt = false, Key = "G" },
new() { Id = "edit.undo", CommandName = "Edit > Undo", UseCtrl = true, UseShift = true, UseAlt = false, Key = "Z" },
new() { Id = "edit.redo", CommandName = "Edit > Redo", UseCtrl = true, UseShift = true, UseAlt = false, Key = "Y" },
new() { Id = "edit.duplicate", CommandName = "Edit > Duplicate", UseCtrl = true, UseShift = true, UseAlt = false, Key = "D" },
new() { Id = "edit.delete", CommandName = "Edit > Delete", UseCtrl = false, UseShift = true, UseAlt = false, Key = "Delete" },
new() { Id = "create.plane", CommandName = "Create > Plane", UseCtrl = true, UseShift = true, UseAlt = false, Key = "V" },
new() { Id = "tool.select", CommandName = "Select Tool", UseCtrl = false, UseShift = false, UseAlt = false, Key = "1" },
new() { Id = "tool.move", CommandName = "Move Tool", UseCtrl = false, UseShift = false, UseAlt = false, Key = "2" },
new() { Id = "tool.rotate", CommandName = "Rotate Tool", UseCtrl = false, UseShift = false, UseAlt = false, Key = "3" },
new() { Id = "tool.scale", CommandName = "Scale Tool", UseCtrl = false, UseShift = false, UseAlt = false, Key = "4" },
};
_shortcutList.SetData(tempData);
}
}
public async UniTask Hide()
{
}
#endregion
#region IDisposable
public void Dispose()
{
if (_disposed) return;
_disposed = true;
if (_shortcutList != null)
{
_shortcutList.OnDataChanged -= OnDataChanged;
}
}
#endregion
}
}