DragAndDrop core
This commit is contained in:
111
Lattice.Themes.Core/ThemePack.cs
Normal file
111
Lattice.Themes.Core/ThemePack.cs
Normal file
@@ -0,0 +1,111 @@
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace Lattice.Themes;
|
||||
|
||||
/// <summary>
|
||||
/// Базовый класс для пакетов тем.
|
||||
/// </summary>
|
||||
public abstract class ThemePack : INotifyPropertyChanged
|
||||
{
|
||||
private string _name;
|
||||
private string _description = string.Empty;
|
||||
private string _version = "1.0.0";
|
||||
private bool _isDark;
|
||||
|
||||
public event PropertyChangedEventHandler? PropertyChanged;
|
||||
|
||||
protected ThemePack(string name)
|
||||
{
|
||||
_name = name ?? throw new ArgumentNullException(nameof(name));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Название темы.
|
||||
/// </summary>
|
||||
public string Name
|
||||
{
|
||||
get => _name;
|
||||
set
|
||||
{
|
||||
if (_name != value)
|
||||
{
|
||||
_name = value;
|
||||
OnPropertyChanged(nameof(Name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Описание темы.
|
||||
/// </summary>
|
||||
public string Description
|
||||
{
|
||||
get => _description;
|
||||
set
|
||||
{
|
||||
if (_description != value)
|
||||
{
|
||||
_description = value;
|
||||
OnPropertyChanged(nameof(Description));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Версия темы.
|
||||
/// </summary>
|
||||
public string Version
|
||||
{
|
||||
get => _version;
|
||||
set
|
||||
{
|
||||
if (_version != value)
|
||||
{
|
||||
_version = value;
|
||||
OnPropertyChanged(nameof(Version));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Определяет, является ли тема тёмной.
|
||||
/// </summary>
|
||||
public bool IsDark
|
||||
{
|
||||
get => _isDark;
|
||||
set
|
||||
{
|
||||
if (_isDark != value)
|
||||
{
|
||||
_isDark = value;
|
||||
OnPropertyChanged(nameof(IsDark));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Возвращает список словарей ресурсов, которые должны быть подключены.
|
||||
/// </summary>
|
||||
public abstract IReadOnlyList<Uri> GetResourceUris();
|
||||
|
||||
/// <summary>
|
||||
/// Вызывается при применении темы.
|
||||
/// </summary>
|
||||
public virtual void OnApply()
|
||||
{
|
||||
// Может быть переопределено в производных классах
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Вызывается при удалении темы.
|
||||
/// </summary>
|
||||
public virtual void OnRemove()
|
||||
{
|
||||
// Может быть переопределено в производных классах
|
||||
}
|
||||
|
||||
protected virtual void OnPropertyChanged(string propertyName)
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user