55 lines
2.1 KiB
C#
55 lines
2.1 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using UVC.UI.Commands;
|
|||
|
|
|
|||
|
|
namespace UVC.UI.Menu
|
|||
|
|
{
|
|||
|
|
// 메뉴 아이템 하나를 나타내는 데이터 구조체 또는 클래스
|
|||
|
|
public class MenuItemData
|
|||
|
|
{
|
|||
|
|
public string ItemId { get; private set; }
|
|||
|
|
public string DisplayNameKey { get; private set; } // 다국어 처리를 위한 키
|
|||
|
|
public ICommand Command { get; private set; } // Action 대신 ICommand 사용
|
|||
|
|
public List<MenuItemData> SubMenuItems { get; private set; } // 하위 메뉴 아이템 목록
|
|||
|
|
public bool IsSeparator { get; private set; } // 구분선 여부 플래그
|
|||
|
|
|
|||
|
|
public MenuItemData(string itemId, string displayNameKey, ICommand command = null, List<MenuItemData> subMenuItems = null, bool isSeparator = false)
|
|||
|
|
{
|
|||
|
|
ItemId = itemId;
|
|||
|
|
DisplayNameKey = displayNameKey;
|
|||
|
|
Command = command;
|
|||
|
|
SubMenuItems = subMenuItems ?? new List<MenuItemData>();
|
|||
|
|
IsSeparator = isSeparator;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void AddSubMenuItem(MenuItemData subItem)
|
|||
|
|
{
|
|||
|
|
if (IsSeparator) return; // 구분선에는 하위 메뉴를 추가할 수 없음
|
|||
|
|
SubMenuItems.Add(subItem);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 구분선 역할을 하는 MenuItemData 객체를 생성합니다.
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="itemId">구분선의 고유 ID. null일 경우 GUID로 자동 생성됩니다.</param>
|
|||
|
|
/// <returns>구분선 MenuItemData 객체입니다.</returns>
|
|||
|
|
public static MenuItemData CreateSeparator(string itemId = null)
|
|||
|
|
{
|
|||
|
|
return new MenuItemData(itemId ?? $"separator_{Guid.NewGuid()}", string.Empty, null, null, true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class TopMenuModel
|
|||
|
|
{
|
|||
|
|
public List<MenuItemData> MenuItems { get; private set; }
|
|||
|
|
|
|||
|
|
public TopMenuModel()
|
|||
|
|
{
|
|||
|
|
MenuItems = new List<MenuItemData>();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// LoadMenuItems 메서드는 Controller에서 직접 데이터를 채움
|
|||
|
|
//public void LoadMenuItems(string jsonString) { }
|
|||
|
|
}
|
|||
|
|
}
|