ComponentList > 표시 설정 바로가기 기능 개발

This commit is contained in:
logonkhi
2025-08-12 19:06:20 +09:00
parent 3bb2573c51
commit 6f019476b0
12 changed files with 163 additions and 33 deletions

View File

@@ -168,7 +168,7 @@ namespace UVC.UI.List.ComponentList
var modalContent = new ModalContent("Prefabs/UI/Modal/SettingModal")
{
Title = "설정 카테고리",
Message = $"DisplaySetting>{itemData.categoryName}"
Message = $"shortcut:DisplaySetting>{itemData.categoryName}"
};
// 4. 설정 모달을 엽니다. await 키워드를 사용하여 모달이 닫힐 때까지 기다립니다.
@@ -211,6 +211,7 @@ namespace UVC.UI.List.ComponentList
FactoryObject? obj = FactoryObjectManager.Instance.FindById(itemData.factoryObjectInfo.Id);
if (obj != null)
{
FactoryObjectSelectionManager.Instance.Deselect(obj);
// 객체를 비활성화(숨기기)합니다.
obj.gameObject.SetActive(false);

View File

@@ -15,6 +15,12 @@ namespace UVC.UI.Tab
/// <param name="data">전달할 데이터 객체</param>
void SetContentData(object? data);
/// <summary>
/// 탭 전환 시 데이터가 있는 경우 전달 되는 데이터. SetContentData 이후 호출 됨
/// </summary>
/// <param name="data">전달할 데이터 객체</param>
void UpdateContentData(object? data);
/// <summary>
/// 닫힐 때 실행되는 로직을 처리합니다.
/// </summary>

View File

@@ -47,14 +47,14 @@ namespace UVC.UI.Tab
///
/// private object CreateAGVData()
/// {
/// Dictionary<string, string> data = new Dictionary<string, string>();
/// return data;
/// Dictionary<string, string> updateData = new Dictionary<string, string>();
/// return updateData;
/// }
///
/// private object CreateAlarmData()
/// {
/// Dictionary<string, string> data = new Dictionary<string, string>();
/// return data;
/// Dictionary<string, string> updateData = new Dictionary<string, string>();
/// return updateData;
/// }
/// }
/// </code>
@@ -200,7 +200,7 @@ namespace UVC.UI.Tab
/// <summary>
/// 탭 변경 이벤트 처리
/// </summary>
private void HandleTabChanged(int newTabIndex)
private void HandleTabChanged(int newTabIndex, object? updateData = null)
{
if (_tabModel == null || tabView == null) return;
@@ -208,7 +208,7 @@ namespace UVC.UI.Tab
if (activeTabData == null) return;
// TabView에 탭 변경 전달
tabView.UpdateActiveTab(newTabIndex, _tabModel.PrevTabIndex, activeTabData).ContinueWith(() =>
tabView.UpdateActiveTab(newTabIndex, _tabModel.PrevTabIndex, activeTabData, updateData).ContinueWith(() =>
{
// 외부 이벤트 발생
OnTabChanged?.Invoke(newTabIndex);
@@ -223,17 +223,21 @@ namespace UVC.UI.Tab
/// <summary>
/// ID로 특정 탭을 활성화합니다.
/// </summary>
public void ActivateTab(string tabID)
/// <param name="tabID">활성화할 탭의 ID</param>
/// <param name="updateData">탭에 전달할 데이터 (선택적)</param>
public void ActivateTab(string tabID, object? updateData = null)
{
_tabModel?.SwitchToTab(tabID);
_tabModel?.SwitchToTab(tabID, updateData);
}
/// <summary>
/// 인덱스로 특정 탭을 활성화합니다.
/// </summary>
public void ActivateTab(int tabIndex)
/// <param name="tabIndex">활성화할 탭의 인덱스</param>
/// <param name="updateData">탭에 전달할 데이터 (선택적)</param>
public void ActivateTab(int tabIndex, object? updateData = null)
{
_tabModel?.SwitchToTab(tabIndex);
_tabModel?.SwitchToTab(tabIndex, updateData);
}
/// <summary>

View File

@@ -37,7 +37,7 @@ namespace UVC.UI.Tab
/// <summary>
/// 탭이 변경될 때 발생하는 이벤트입니다.
/// </summary>
public event Action<int>? OnTabChanged;
public event Action<int, object?>? OnTabChanged;
/// <summary>
/// 새로운 탭을 모델에 추가합니다.
@@ -58,7 +58,8 @@ namespace UVC.UI.Tab
/// 탭 인덱스로 탭을 전환합니다.
/// </summary>
/// <param name="tabIndex">활성화할 탭의 인덱스</param>
public void SwitchToTab(int tabIndex)
/// <param name="updateData">탭 전환 시 전달할 데이터 (선택적)</param>
public void SwitchToTab(int tabIndex, object? updateData = null)
{
// 인덱스 범위 확인
if (tabIndex < 0 || tabIndex >= _tabs.Count)
@@ -79,20 +80,21 @@ namespace UVC.UI.Tab
_activeTabIndex = tabIndex;
// 이벤트 발생
OnTabChanged?.Invoke(_activeTabIndex);
OnTabChanged?.Invoke(_activeTabIndex, updateData);
}
/// <summary>
/// 탭 ID로 탭을 전환합니다.
/// </summary>
/// <param name="tabID">활성화할 탭의 ID</param>
public void SwitchToTab(string tabID)
/// <param name="updateData">탭 전환 시 전달할 데이터 (선택적)</param>
public void SwitchToTab(string tabID, object? updateData = null)
{
for (int i = 0; i < _tabs.Count; i++)
{
if (_tabs[i].tabID == tabID)
{
SwitchToTab(i);
SwitchToTab(i, updateData);
return;
}
}

View File

@@ -217,7 +217,8 @@ namespace UVC.UI.Tab
/// <param name="tabIndex">활성화할 탭 인덱스</param>
/// <param name="prevTabIndex">현재 활성화 된 탭 인덱스. 없으면 -1</param>
/// <param name="tabData">탭 데이터</param>
public async UniTask UpdateActiveTab(int tabIndex, int prevTabIndex, TabData tabData)
/// <param name="updateData">업데이트할 데이터 (선택적)</param>
public async UniTask UpdateActiveTab(int tabIndex, int prevTabIndex, TabData tabData, object? updateData = null)
{
if (tabIndex < 0 || tabIndex >= _tabConfigs.Count) return;
var config = _tabConfigs[tabIndex];
@@ -273,6 +274,7 @@ namespace UVC.UI.Tab
// 데이터 업데이트
ITabContent? tabContent = activeContent.GetComponent<ITabContent>();
tabContent?.SetContentData(tabData.contentData);
if(updateData != null) tabContent?.UpdateContentData(updateData);
}
// 탭 버튼 상태 업데이트