using System.Collections.ObjectModel;
namespace SHH.CameraDashboard
{
///
/// 应用程序全局状态和事件总线。
/// 此类作为一个静态的中央枢纽,用于在应用程序的不同部分之间共享数据和通信。
///
public static class AppGlobal
{
#region --- 全局数据存储 ---
///
/// 获取一个可观察的集合,用于存储和显示所有已配置的服务节点。
/// 由于使用了 ,当集合内容发生变化时,UI(如 ListView)会自动更新。
///
public static ObservableCollection ServiceNodes { get; }
= new ObservableCollection();
///
/// 获取或设置当前正在使用的服务节点。
/// 当用户从列表中选择一个节点时,应更新此属性。
///
public static ServiceNodeModel? UseServiceNode { get; set; }
#endregion
#region --- 全局事件总线 ---
#region CameraAdd
///
/// 当应用程序的任何部分请求添加一个新摄像头时发生。
///
public static event Action? OnRequestAddCamera;
///
/// 触发 事件,以请求打开摄像头添加界面。
///
public static void RequestAdd()
=> OnRequestAddCamera?.Invoke();
#endregion
#region CameraEdit
///
/// 当应用程序的任何部分请求编辑一个摄像头时发生。
/// 事件处理程序将接收到要编辑的 实例。
///
public static event Action? OnRequestEditCamera;
///
/// 触发 事件,以请求打开摄像头编辑界面。
///
/// 要编辑的摄像头数据模型。
public static void RequestEdit(WebApiCameraModel camera)
=> OnRequestEditCamera?.Invoke(camera);
#endregion
#region CameraDelete
///
/// 当应用程序的任何部分请求删除一个摄像头时发生。
/// 事件处理程序将接收到要删除的 实例。
///
public static event Action? OnRequestDeleteCamera;
///
/// 触发 事件,以请求删除指定的摄像头。
///
/// 要删除的摄像头数据模型。
public static void RequestDelete(WebApiCameraModel camera)
=> OnRequestDeleteCamera?.Invoke(camera);
#endregion
#region CameraRefreshList
///
/// 当应用程序的任何部分请求刷新摄像头列表时发生。
///
public static event Action? OnRefreshListRequest;
///
/// 触发 事件,以请求刷新摄像头列表数据。
///
public static void RequestRefresh()
=> OnRefreshListRequest?.Invoke();
#endregion
// [新增] 请求云台控制事件
public static event Action? OnRequestPtzCamera;
// [新增] 触发方法
public static void RequestPtz(WebApiCameraModel camera) => OnRequestPtzCamera?.Invoke(camera);
// 图像处理
public static event Action? OnRequestImgProc;
public static void RequestImgProc(WebApiCameraModel camera) => OnRequestImgProc?.Invoke(camera);
// 1. 定义事件委托:当 ViewModel 请求订阅时触发
public static event Action? OnRequestSubscription;
// 2. 定义触发方法:供 CameraItemTopViewModel 调用
public static void RequestSubscription(WebApiCameraModel camera) => OnRequestSubscription?.Invoke(camera);
#endregion
}
}