1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00
SpoinkyNL 4e1a09308f Data model visualization - Simplified and improved VMs
Layer conditions - Added left side property selection
2020-07-05 15:34:16 +02:00

49 lines
2.0 KiB
C#

using System.Linq;
using Artemis.Core.Models.Profile;
using Artemis.Core.Models.Profile.Conditions;
using Artemis.UI.Ninject.Factories;
using Artemis.UI.Shared.DataModelVisualization.Shared;
using Artemis.UI.Shared.Events;
using Artemis.UI.Shared.Services;
using Artemis.UI.Shared.Services.Interfaces;
namespace Artemis.UI.Screens.Module.ProfileEditor.DisplayConditions
{
public class DisplayConditionsViewModel : ProfileEditorPanelViewModel
{
private readonly IDisplayConditionsVmFactory _displayConditionsVmFactory;
private readonly IDataModelVisualizationService _dataModelVisualizationService;
private DisplayConditionGroupViewModel _rootGroup;
public DisplayConditionsViewModel(IProfileEditorService profileEditorService, IDataModelVisualizationService dataModelVisualizationService,
IDisplayConditionsVmFactory displayConditionsVmFactory)
{
_dataModelVisualizationService = dataModelVisualizationService;
_displayConditionsVmFactory = displayConditionsVmFactory;
profileEditorService.ProfileElementSelected += ProfileEditorServiceOnProfileElementSelected;
}
public DisplayConditionGroupViewModel RootGroup
{
get => _rootGroup;
set => SetAndNotify(ref _rootGroup, value);
}
private void ProfileEditorServiceOnProfileElementSelected(object sender, ProfileElementEventArgs e)
{
_dataModelVisualizationService.BustCache();
if (e.ProfileElement is Layer layer)
{
// Ensure the layer has a root display condition group
if (layer.DisplayConditionGroup == null)
layer.DisplayConditionGroup = new DisplayConditionGroup();
RootGroup = _displayConditionsVmFactory.DisplayConditionGroupViewModel(layer.DisplayConditionGroup, null);
RootGroup.IsRootGroup = true;
}
else
RootGroup = null;
}
}
}