using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TeamAAS_VP.Models.Lights
{
///
/// 表示单个灯通道的配置项。
/// 包含通道名称、描述、控制器内索引、系统全局索引以及默认亮度等信息。
/// 该类继承自 ,支持属性变更通知,适用于 WPF 数据绑定。
///
public class ChannelConfig: BindableBase
{
private string _Name;
///
/// 通道名称。
/// 用于界面显示和识别通道,可为空字符串。
///
public string Name
{
get { return _Name; }
set { SetProperty(ref _Name, value); }
}
private string _Description;
///
/// 通道描述。
/// 对通道的补充说明,可用于显示在工具提示或详细信息面板中。
///
public string Description
{
get { return _Description; }
set { SetProperty(ref _Description, value); }
}
private int _LocalIndex;
///
/// 控制器内的通道索引(局部索引)。
/// 表示该通道在所属控制器中的位置,通常从 0 或 1 开始,取决于系统约定。
///
public int LocalIndex
{
get { return _LocalIndex; }
set { SetProperty(ref _LocalIndex, value); }
}
private int _GlobalIndex;
///
/// 系统中的全局通道索引(全局唯一)。
/// 在多控制器环境中用于唯一标识一个通道。
///
public int GlobalIndex
{
get { return _GlobalIndex; }
set { SetProperty(ref _GlobalIndex, value); }
}
private int _DefaultBrightness = 255;
///
/// 默认亮度(百分比)。
/// 范围通常为 0 到 100,表示通道的默认亮度设置。默认值为 100(表示最大亮度)。
///
public int DefaultBrightness
{
get { return _DefaultBrightness; }
set { SetProperty(ref _DefaultBrightness, value); }
}
///
/// 初始化 的新实例。
/// 创建一个默认的通道配置对象,属性使用默认值。
///
public ChannelConfig()
{
}
///
/// 使用指定的索引和可选信息初始化 的新实例。
///
/// 控制器内的通道索引(局部索引)。
/// 系统中的全局通道索引(全局唯一)。
/// 通道名称,可选,默认为空字符串。
/// 通道描述,可选,默认为空字符串。
/// 默认亮度(百分比),可选,默认值为 100。期望范围为 0 到 100。
public ChannelConfig(int localIndex, int globalIndex, string name = "", string description = "", int defaultBrightness = 100)
{
LocalIndex = localIndex;
GlobalIndex = globalIndex;
Name = name;
Description = description;
DefaultBrightness = defaultBrightness;
}
}
public class ChannelConfigEx: ChannelConfig
{
//是否选中
private bool _IsSelected;
public bool IsSelected
{
get { return _IsSelected; }
set { SetProperty(ref _IsSelected, value); }
}
public ChannelConfigEx() : base()
{
}
public ChannelConfigEx(ChannelConfig channelConfig)
{
this.LocalIndex = channelConfig.LocalIndex;
this.GlobalIndex = channelConfig.GlobalIndex;
this.Name = channelConfig.Name;
this.Description = channelConfig.Description;
this.DefaultBrightness = channelConfig.DefaultBrightness;
}
public ChannelConfig ToChannelConfig()
{
return new ChannelConfig(this.LocalIndex, this.GlobalIndex, this.Name, this.Description, this.DefaultBrightness);
}
}
}