namespace LanMountainDesktop.PluginSdk;
///
/// 外观变更事件参数,当主题、圆角或其他外观属性变化时触发。
///
public sealed class AppearanceChangedEvent : EventArgs
{
///
/// 创建外观变更事件实例。
///
/// 当前外观快照
/// 变更的属性集合
public AppearanceChangedEvent(
PluginAppearanceSnapshot snapshot,
IReadOnlyCollection changedProperties)
{
ArgumentNullException.ThrowIfNull(snapshot);
ArgumentNullException.ThrowIfNull(changedProperties);
Snapshot = snapshot;
ChangedProperties = changedProperties;
}
///
/// 当前外观快照。
///
public PluginAppearanceSnapshot Snapshot { get; }
///
/// 变更的属性集合。
///
public IReadOnlyCollection ChangedProperties { get; }
///
/// 圆角是否发生变化。
///
public bool CornerRadiusChanged => ChangedProperties.Contains(AppearanceProperty.CornerRadius);
///
/// 主题变体(亮色/暗色)是否发生变化。
///
public bool ThemeVariantChanged => ChangedProperties.Contains(AppearanceProperty.ThemeVariant);
///
/// 强调色是否发生变化。
///
public bool AccentColorChanged => ChangedProperties.Contains(AppearanceProperty.AccentColor);
///
/// 圆角风格是否发生变化。
///
public bool CornerRadiusStyleChanged => ChangedProperties.Contains(AppearanceProperty.CornerRadiusStyle);
///
/// 检查指定属性是否发生变化。
///
/// 要检查的属性
/// 如果属性发生变化则返回 true
public bool HasChanged(AppearanceProperty property)
{
return ChangedProperties.Contains(property);
}
///
/// 检查是否有任何外观属性发生变化。
///
public bool HasAnyChanges => ChangedProperties.Count > 0;
}
///
/// 可变更的外观属性枚举。
///
public enum AppearanceProperty
{
///
/// 圆角Token值发生变化。
///
CornerRadius,
///
/// 主题变体(亮色/暗色)发生变化。
///
ThemeVariant,
///
/// 强调色发生变化。
///
AccentColor,
///
/// 圆角风格(Sharp/Balanced/Rounded/Open)发生变化。
///
CornerRadiusStyle,
///
/// 壁纸发生变化。
///
Wallpaper,
///
/// 系统材质模式发生变化。
///
SystemMaterialMode,
///
/// 所有外观属性(用于批量更新)。
///
All
}