Filtration/Filtration.ObjectModel/ItemFilterBlockGroup.cs

76 lines
2.5 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
2015-06-24 14:57:16 -04:00
namespace Filtration.ObjectModel
{
2015-06-24 14:57:16 -04:00
public class ItemFilterBlockGroup
{
private bool _isShowChecked;
private bool _isEnableChecked;
public ItemFilterBlockGroup(string groupName, ItemFilterBlockGroup parent, bool advanced = false)
{
GroupName = groupName;
ParentGroup = parent;
Advanced = advanced;
ChildGroups = new List<ItemFilterBlockGroup>();
}
public event EventHandler BlockGroupStatusChanged;
public string GroupName { get; }
public ItemFilterBlockGroup ParentGroup { get; }
public List<ItemFilterBlockGroup> ChildGroups { get; }
public bool Advanced { get; }
public bool IsShowChecked
{
get { return _isShowChecked; }
set
{
if (value != _isShowChecked)
{
_isShowChecked = value;
// Raise an event to let blocks that have this block group assigned that
// they might need to change their Action due to the block group status changing.
BlockGroupStatusChanged?.Invoke(null, null);
}
}
}
public bool IsEnableChecked
{
get { return _isEnableChecked; }
set
{
if (value != _isEnableChecked)
{
_isEnableChecked = value;
// Raise an event to let blocks that have this block group assigned that
// they might need to change their Enabled due to the block group status changing.
BlockGroupStatusChanged?.Invoke(null, null);
}
}
}
public override string ToString()
{
var currentBlockGroup = this;
var outputString = (Advanced ? "~" : string.Empty) + GroupName;
// TODO: This is retarded, fix this.
if (currentBlockGroup.ParentGroup != null)
{
while (currentBlockGroup.ParentGroup.ParentGroup != null)
{
outputString = (currentBlockGroup.ParentGroup.Advanced ? "~" : string.Empty) + currentBlockGroup.ParentGroup.GroupName + " - " + outputString;
currentBlockGroup = currentBlockGroup.ParentGroup;
}
}
return outputString;
}
}
}