Files
Ayay/SHH.CameraDashboard/App/AppGlobal.cs
2026-01-01 22:40:32 +08:00

113 lines
4.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
}
}