113 lines
4.2 KiB
C#
113 lines
4.2 KiB
C#
|
|
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
|
|||
|
|
}
|
|||
|
|
}
|