#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 { /// /// 설정 모달 - Database 탭 콘텐츠 /// [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(UXML_PATH); if (asset != null) { var root = asset.Instantiate(); root.style.flexGrow = 1; // 참조 가져오기 _shortcutList = root.Q("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 shortcuts) { _shortcutList.SetData(shortcuts); return; } // 예시 데이터 설정 var tempData = new List() { 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 } }