2025-11-06 15:51:29 +09:00
|
|
|
using System.Collections.Generic;
|
2025-11-04 20:09:18 +09:00
|
|
|
using UnityEngine;
|
|
|
|
|
using UVC.UI.List.Accordion;
|
2025-11-06 15:51:29 +09:00
|
|
|
using UVC.UI.Window;
|
2025-11-04 20:09:18 +09:00
|
|
|
|
2025-11-06 15:51:29 +09:00
|
|
|
/// <summary>
|
|
|
|
|
/// 샘플 씬에서 <see cref="AccordionWindow"/>에 데이터를 주입해 동작을 시연하는 컴포넌트.
|
|
|
|
|
/// - 수평 섹션: Head 이미지 + Content 텍스트 + Tail 아이콘 버튼들.
|
|
|
|
|
/// - 그리드 섹션: 이미지+캡션 셀.
|
|
|
|
|
/// </summary>
|
2025-11-04 20:09:18 +09:00
|
|
|
public class AccordionSample : MonoBehaviour
|
|
|
|
|
{
|
|
|
|
|
[SerializeField]
|
|
|
|
|
private AccordionWindow accordionWindow;
|
2025-11-06 15:51:29 +09:00
|
|
|
|
|
|
|
|
private void Start()
|
2025-11-04 20:09:18 +09:00
|
|
|
{
|
|
|
|
|
if (accordionWindow == null)
|
|
|
|
|
{
|
2025-11-06 15:51:29 +09:00
|
|
|
accordionWindow = FindFirstObjectByType<AccordionWindow>();
|
2025-11-04 20:09:18 +09:00
|
|
|
}
|
|
|
|
|
|
2025-12-08 21:06:05 +09:00
|
|
|
// AccordionList 이벤트 구독
|
|
|
|
|
if (accordionWindow != null && accordionWindow.AccordionList != null)
|
|
|
|
|
{
|
|
|
|
|
accordionWindow.AccordionList.OnHorizontalItemClick += OnHorizontalItemClick;
|
|
|
|
|
accordionWindow.AccordionList.OnGridItemClick += OnGridItemClick;
|
|
|
|
|
accordionWindow.AccordionList.OnGridItemDrop += OnGridItemDrop;
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-04 20:09:18 +09:00
|
|
|
var data = new AccordionData();
|
|
|
|
|
|
|
|
|
|
// Horizontal section
|
|
|
|
|
var sec1 = new AccordionSectionData
|
|
|
|
|
{
|
|
|
|
|
Title = "Settings",
|
|
|
|
|
IsExpanded = true,
|
|
|
|
|
LayoutType = AccordionItemLayoutType.Horizontal
|
|
|
|
|
};
|
|
|
|
|
sec1.Items.Add(new AccordionHorizontalItemData
|
|
|
|
|
{
|
2025-11-06 15:51:29 +09:00
|
|
|
Head = AccordionContentSpec.FromImage("Prefabs/UI/images/icon_side_tab_library_128"),
|
2025-12-08 21:06:05 +09:00
|
|
|
Content = AccordionContentSpec.FromText("Graphics", "open_graphics"),
|
2025-11-06 15:51:29 +09:00
|
|
|
Tail = new List<AccordionContentSpec>(){
|
2025-12-08 21:06:05 +09:00
|
|
|
AccordionContentSpec.FromIconButton("Prefabs/UI/images/icon_refresh_22x22", "refresh_graphics"),
|
|
|
|
|
AccordionContentSpec.FromIconButton("Prefabs/UI/images/icon_setting_22x22", "setting_graphics"),
|
2025-11-06 15:51:29 +09:00
|
|
|
}
|
2025-11-04 20:09:18 +09:00
|
|
|
});
|
|
|
|
|
sec1.Items.Add(new AccordionHorizontalItemData
|
|
|
|
|
{
|
2025-11-06 15:51:29 +09:00
|
|
|
Head = AccordionContentSpec.FromImage("Prefabs/UI/images/icon_side_tab_fleet_128"),
|
2025-12-08 21:06:05 +09:00
|
|
|
Content = AccordionContentSpec.FromText("Audio", "open_audio"),
|
2025-11-06 15:51:29 +09:00
|
|
|
Tail = new List<AccordionContentSpec>(){
|
2025-12-08 21:06:05 +09:00
|
|
|
AccordionContentSpec.FromIconButton("Prefabs/UI/images/icon_refresh_22x22", "refresh_audio"),
|
|
|
|
|
AccordionContentSpec.FromIconButton("Prefabs/UI/images/icon_setting_22x22", "setting_audio"),
|
2025-11-06 15:51:29 +09:00
|
|
|
}
|
2025-11-04 20:09:18 +09:00
|
|
|
});
|
|
|
|
|
data.Sections.Add(sec1);
|
|
|
|
|
|
|
|
|
|
// Grid section
|
|
|
|
|
var sec2 = new AccordionSectionData
|
|
|
|
|
{
|
|
|
|
|
Title = "Presets",
|
|
|
|
|
IsExpanded = true,
|
|
|
|
|
LayoutType = AccordionItemLayoutType.Grid
|
|
|
|
|
};
|
2025-12-12 19:28:20 +09:00
|
|
|
sec2.Items.Add(new AccordionGridItemData { Caption = "Low", Image = "Simulator/Images/lib_forklift_400x300", Tag = "preset_low" });
|
|
|
|
|
sec2.Items.Add(new AccordionGridItemData { Caption = "Medium", Image = "Simulator/Images/lib_pallet_400x300", Tag = "preset_medium" });
|
|
|
|
|
sec2.Items.Add(new AccordionGridItemData { Caption = "High", Image = "Simulator/Images/lib_worker_400x300", Tag = "preset_high" });
|
2025-11-06 15:51:29 +09:00
|
|
|
|
2025-11-04 20:09:18 +09:00
|
|
|
data.Sections.Add(sec2);
|
|
|
|
|
|
2025-11-06 15:51:29 +09:00
|
|
|
var sec3 = new AccordionSectionData
|
|
|
|
|
{
|
|
|
|
|
Title = "Presets",
|
|
|
|
|
IsExpanded = true,
|
|
|
|
|
LayoutType = AccordionItemLayoutType.Grid
|
|
|
|
|
};
|
2025-12-12 19:28:20 +09:00
|
|
|
sec3.Items.Add(new AccordionGridItemData { Caption = "Low", Image = "Simulator/Images/lib_forklift_400x300", Tag = "preset_low" });
|
|
|
|
|
sec3.Items.Add(new AccordionGridItemData { Caption = "Medium", Image = "Simulator/Images/lib_pallet_400x300", Tag = "preset_medium" });
|
|
|
|
|
sec3.Items.Add(new AccordionGridItemData { Caption = "High", Image = "Simulator/Images/lib_worker_400x300", Tag = "preset_high" });
|
2025-11-06 15:51:29 +09:00
|
|
|
data.Sections.Add(sec3);
|
|
|
|
|
|
|
|
|
|
var sec4 = new AccordionSectionData
|
|
|
|
|
{
|
|
|
|
|
Title = "Presets",
|
|
|
|
|
IsExpanded = true,
|
|
|
|
|
LayoutType = AccordionItemLayoutType.Grid
|
|
|
|
|
};
|
2025-12-12 19:28:20 +09:00
|
|
|
sec4.Items.Add(new AccordionGridItemData { Caption = "Low", Image = "Simulator/Images/lib_forklift_400x300", Tag = "preset_low" });
|
|
|
|
|
sec4.Items.Add(new AccordionGridItemData { Caption = "Medium", Image = "Simulator/Images/lib_pallet_400x300", Tag = "preset_medium" });
|
|
|
|
|
sec4.Items.Add(new AccordionGridItemData { Caption = "High", Image = "Simulator/Images/lib_worker_400x300", Tag = "preset_high" });
|
2025-11-06 15:51:29 +09:00
|
|
|
data.Sections.Add(sec4);
|
|
|
|
|
|
|
|
|
|
var sec5 = new AccordionSectionData
|
|
|
|
|
{
|
|
|
|
|
Title = "Presets",
|
|
|
|
|
IsExpanded = true,
|
|
|
|
|
LayoutType = AccordionItemLayoutType.Grid
|
|
|
|
|
};
|
2025-12-12 19:28:20 +09:00
|
|
|
sec5.Items.Add(new AccordionGridItemData { Caption = "Low", Image = "Simulator/Images/lib_forklift_400x300", Tag = "preset_low" });
|
|
|
|
|
sec5.Items.Add(new AccordionGridItemData { Caption = "Medium", Image = "Simulator/Images/lib_pallet_400x300", Tag = "preset_medium" });
|
|
|
|
|
sec5.Items.Add(new AccordionGridItemData { Caption = "High", Image = "Simulator/Images/lib_worker_400x300", Tag = "preset_high" });
|
2025-11-06 15:51:29 +09:00
|
|
|
data.Sections.Add(sec5);
|
|
|
|
|
|
2025-11-04 20:09:18 +09:00
|
|
|
if (accordionWindow != null)
|
|
|
|
|
{
|
|
|
|
|
accordionWindow.SetData(data);
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-11-06 15:51:29 +09:00
|
|
|
|
2025-12-08 21:06:05 +09:00
|
|
|
private void OnHorizontalItemClick(AccordionHorizontalItemData itemData, AccordionContentSpec contentSpec)
|
|
|
|
|
{
|
|
|
|
|
Debug.Log($"Horizontal item clicked: {contentSpec.Text ?? contentSpec.ActionId}");
|
|
|
|
|
|
|
|
|
|
// ActionId에 따라 분기 처리
|
|
|
|
|
switch (contentSpec.ActionId)
|
|
|
|
|
{
|
|
|
|
|
case "open_graphics":
|
|
|
|
|
Debug.Log("Open Graphics");
|
|
|
|
|
break;
|
|
|
|
|
case "refresh_graphics":
|
|
|
|
|
Debug.Log("Refresh Graphics");
|
|
|
|
|
break;
|
|
|
|
|
case "setting_graphics":
|
|
|
|
|
Debug.Log("Setting Graphics");
|
|
|
|
|
break;
|
|
|
|
|
case "open_audio":
|
|
|
|
|
Debug.Log("Open Audio");
|
|
|
|
|
break;
|
|
|
|
|
case "refresh_audio":
|
|
|
|
|
Debug.Log("Refresh Audio");
|
|
|
|
|
break;
|
|
|
|
|
case "setting_audio":
|
|
|
|
|
Debug.Log("Setting Audio");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnGridItemClick(AccordionGridItemData itemData)
|
2025-11-06 15:51:29 +09:00
|
|
|
{
|
|
|
|
|
Debug.Log($"Click grid item: {itemData.Caption}");
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-08 21:06:05 +09:00
|
|
|
private void OnGridItemDrop(AccordionGridItemData itemData)
|
2025-11-06 15:51:29 +09:00
|
|
|
{
|
|
|
|
|
Debug.Log($"Dropped grid item: {itemData.Caption}");
|
|
|
|
|
}
|
2025-12-08 21:06:05 +09:00
|
|
|
|
|
|
|
|
private void OnDestroy()
|
|
|
|
|
{
|
|
|
|
|
// 이벤트 구독 해제
|
|
|
|
|
if (accordionWindow != null && accordionWindow.AccordionList != null)
|
|
|
|
|
{
|
|
|
|
|
accordionWindow.AccordionList.OnHorizontalItemClick -= OnHorizontalItemClick;
|
|
|
|
|
accordionWindow.AccordionList.OnGridItemClick -= OnGridItemClick;
|
|
|
|
|
accordionWindow.AccordionList.OnGridItemDrop -= OnGridItemDrop;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-11-04 20:09:18 +09:00
|
|
|
}
|