39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
using System;
|
|
|
|
namespace UVC.UI.ToolBar
|
|
{
|
|
/// <summary>
|
|
/// 클릭할 때마다 선택/해제 상태가 변경되는 토글 버튼입니다.
|
|
/// </summary>
|
|
public class ToolbarToggleButton : ToolbarButtonBase
|
|
{
|
|
public event Action<bool> OnToggleStateChanged; // IsSelected 변경 시 IsSelected 값을 전달하는 이벤트
|
|
|
|
private bool _isSelected;
|
|
public bool IsSelected
|
|
{
|
|
get => _isSelected;
|
|
set
|
|
{
|
|
if (_isSelected != value)
|
|
{
|
|
_isSelected = value;
|
|
OnToggleStateChanged?.Invoke(_isSelected); // IsSelected 값과 함께 이벤트 발생
|
|
NotifyStateChanged(); // 일반 상태 변경 이벤트도 발생
|
|
}
|
|
}
|
|
}
|
|
public Action<bool> OnToggle { get; set; }
|
|
|
|
public override void ExecuteClick()
|
|
{
|
|
if (IsEnabled)
|
|
{
|
|
IsSelected = !IsSelected; // IsSelected의 setter가 OnStateChanged를 호출
|
|
OnClick?.Invoke(); // OnClick은 상태 변경과 별개로 클릭 시 항상 호출되도록 할 수 있음
|
|
OnToggle?.Invoke(IsSelected); // 기존 OnToggle 로직 유지
|
|
}
|
|
}
|
|
}
|
|
}
|