using Avalonia.Media;
namespace YZWater.Avalonia.Controls;
///
/// PLC 连接状态辅助类 - 供自定义控件订阅连接状态变化,实现断线降级显示。
/// 遵循 ISA-101 标准:断线时控件停止动画、变灰、叠加"通信中断"标记。
///
internal static class ConnectionStateHelper
{
/// 连接状态变化事件
public static event Action? StateChanged;
/// 当前是否已连接
public static bool IsConnected { get; private set; } = true;
/// 断线态灰色画刷(统一降级视觉)
public static IBrush DisconnectedGray { get; } = new SolidColorBrush(Color.Parse("#6B7280"));
/// 断线态文字画刷
public static IBrush DisconnectedText { get; } = new SolidColorBrush(Color.Parse("#9CA3AF"));
/// 断线警告色(橙黄)
public static IBrush DisconnectedWarning { get; } = new SolidColorBrush(Color.Parse("#F5A524"));
/// 半透明遮罩(用于叠加在控件上表示数据失效)
public static IBrush OverlayBrush { get; } = new SolidColorBrush(Color.Parse("#000000"), 0.25);
///
/// 设置连接状态(由 App 层在连接状态变化时调用)
///
public static void SetConnected(bool connected)
{
if (IsConnected == connected) return;
IsConnected = connected;
StateChanged?.Invoke(connected);
}
}