Files

113 lines
4.2 KiB
C#
Raw Permalink Normal View History

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