104 lines
3.0 KiB
C#
104 lines
3.0 KiB
C#
|
using System;
|
|||
|
using System.Windows.Media;
|
|||
|
using Filtration.ObjectModel.Enums;
|
|||
|
using Filtration.ObjectModel.Extensions;
|
|||
|
using Filtration.ObjectModel.ThemeEditor;
|
|||
|
|
|||
|
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
|||
|
{
|
|||
|
public abstract class IconBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme
|
|||
|
{
|
|||
|
private IconSize _size;
|
|||
|
private IconColor _color;
|
|||
|
private IconShape _shape;
|
|||
|
private ThemeComponent _themeComponent;
|
|||
|
|
|||
|
protected IconBlockItem()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
protected IconBlockItem(IconSize size, IconColor color, IconShape shape)
|
|||
|
{
|
|||
|
Size = size;
|
|||
|
Color = color;
|
|||
|
Shape = shape;
|
|||
|
}
|
|||
|
|
|||
|
public override string OutputText => PrefixText + " " + (int)Size + " " + Color.GetAttributeDescription() + " " + Shape.GetAttributeDescription() +
|
|||
|
(ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty);
|
|||
|
|
|||
|
public override string SummaryText => string.Empty;
|
|||
|
|
|||
|
public ThemeComponent ThemeComponent
|
|||
|
{
|
|||
|
get { return _themeComponent; }
|
|||
|
set
|
|||
|
{
|
|||
|
if (_themeComponent == value) { return; }
|
|||
|
|
|||
|
if (_themeComponent != null)
|
|||
|
{
|
|||
|
_themeComponent.ThemeComponentUpdated -= OnThemeComponentUpdated;
|
|||
|
_themeComponent.ThemeComponentDeleted -= OnThemeComponentDeleted;
|
|||
|
}
|
|||
|
if (value != null)
|
|||
|
{
|
|||
|
value.ThemeComponentUpdated += OnThemeComponentUpdated;
|
|||
|
value.ThemeComponentDeleted += OnThemeComponentDeleted;
|
|||
|
}
|
|||
|
|
|||
|
_themeComponent = value;
|
|||
|
OnPropertyChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public override Color SummaryBackgroundColor => Colors.Transparent;
|
|||
|
public override Color SummaryTextColor => Colors.Transparent;
|
|||
|
|
|||
|
public IconSize Size
|
|||
|
{
|
|||
|
get { return _size; }
|
|||
|
set
|
|||
|
{
|
|||
|
_size = value;
|
|||
|
IsDirty = true;
|
|||
|
OnPropertyChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public IconColor Color
|
|||
|
{
|
|||
|
get { return _color; }
|
|||
|
set
|
|||
|
{
|
|||
|
_color = value;
|
|||
|
IsDirty = true;
|
|||
|
OnPropertyChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public IconShape Shape
|
|||
|
{
|
|||
|
get { return _shape; }
|
|||
|
set
|
|||
|
{
|
|||
|
_shape = value;
|
|||
|
IsDirty = true;
|
|||
|
OnPropertyChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void OnThemeComponentUpdated(object sender, EventArgs e)
|
|||
|
{
|
|||
|
Size = ((IconThemeComponent)sender).IconSize;
|
|||
|
Color = ((IconThemeComponent)sender).IconColor;
|
|||
|
Shape = ((IconThemeComponent)sender).IconShape;
|
|||
|
}
|
|||
|
|
|||
|
private void OnThemeComponentDeleted(object sender, EventArgs e)
|
|||
|
{
|
|||
|
ThemeComponent = null;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|