mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 03:48:56 +00:00
Conditions - Moved non-list conditions to new paths API
Conditions - Move list conditions to new paths API (WIP)
This commit is contained in:
1 parent
9417332a07
commit
725bb2a128
16 files changed
+168
-273
No files matched your search
+31
-33
@@ -79,18 +79,6 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
|
||||
|
||||
public DelegateCommand SelectOperatorCommand { get; }
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (!_isPrimitiveList)
|
||||
{
|
||||
LeftSideSelectionViewModel.PropertySelected -= LeftSideOnPropertySelected;
|
||||
LeftSideSelectionViewModel.Dispose();
|
||||
}
|
||||
|
||||
DisposeRightSideDynamic();
|
||||
DisposeRightSideStatic();
|
||||
}
|
||||
|
||||
public override void Delete()
|
||||
{
|
||||
base.Delete();
|
||||
@@ -123,7 +111,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
Guid? listDataModelGuid = DataModelConditionListPredicate.DataModelConditionList.ListPath.DataModelGuid;
|
||||
Guid? listDataModelGuid = DataModelConditionListPredicate.DataModelConditionList.ListPath?.DataModelGuid;
|
||||
if (listDataModelGuid == null)
|
||||
return;
|
||||
|
||||
@@ -132,7 +120,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
|
||||
LeftSideSelectionViewModel.FilterTypes = _supportedInputTypes.ToArray();
|
||||
LeftSideSelectionViewModel.ButtonBrush = new SolidColorBrush(Color.FromRgb(71, 108, 188));
|
||||
LeftSideSelectionViewModel.SelectedPropertyViewModel = LeftSideSelectionViewModel.DataModelViewModel.GetChildByPath(
|
||||
listDataModelGuid.Value, DataModelConditionListPredicate.LeftPropertyPath
|
||||
listDataModelGuid.Value, DataModelConditionListPredicate.DataModelConditionList.ListPath.Path
|
||||
);
|
||||
}
|
||||
|
||||
@@ -142,14 +130,20 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
|
||||
|
||||
// Get the supported operators
|
||||
Operators.Clear();
|
||||
Operators.AddRange(_conditionOperatorService.GetConditionOperatorsForType(leftSideType));
|
||||
Operators.AddRange(_conditionOperatorService.GetConditionOperatorsForType(leftSideType ?? typeof(object)));
|
||||
if (DataModelConditionListPredicate.Operator == null)
|
||||
DataModelConditionListPredicate.UpdateOperator(Operators.FirstOrDefault(o => o.SupportsType(leftSideType)));
|
||||
DataModelConditionListPredicate.UpdateOperator(Operators.FirstOrDefault(o => o.SupportsType(leftSideType ?? typeof(object))));
|
||||
SelectedOperator = DataModelConditionListPredicate.Operator;
|
||||
if (SelectedOperator == null || !SelectedOperator.SupportsRightSide)
|
||||
{
|
||||
DisposeRightSideStatic();
|
||||
DisposeRightSideDynamic();
|
||||
}
|
||||
|
||||
// Ensure the right side has the proper VM
|
||||
if (DataModelConditionListPredicate.PredicateType == ListRightSideType.Dynamic ||
|
||||
DataModelConditionListPredicate.PredicateType == ListRightSideType.DynamicList)
|
||||
if ((DataModelConditionListPredicate.PredicateType == ListRightSideType.Dynamic ||
|
||||
DataModelConditionListPredicate.PredicateType == ListRightSideType.DynamicList) &&
|
||||
SelectedOperator.SupportsRightSide)
|
||||
{
|
||||
DisposeRightSideStatic();
|
||||
if (RightSideSelectionViewModel == null)
|
||||
@@ -164,20 +158,16 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
|
||||
|
||||
RightSideSelectionViewModel.FilterTypes = new[] {leftSideType};
|
||||
if (DataModelConditionListPredicate.PredicateType == ListRightSideType.Dynamic)
|
||||
{
|
||||
RightSideSelectionViewModel.PopulateSelectedPropertyViewModel(
|
||||
DataModelConditionListPredicate.RightDataModel,
|
||||
DataModelConditionListPredicate.RightPropertyPath
|
||||
DataModelConditionListPredicate.RightPath?.Target,
|
||||
DataModelConditionListPredicate.RightPath?.Path
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
RightSideSelectionViewModel.SelectedPropertyViewModel = RightSideSelectionViewModel.DataModelViewModel.GetChildByPath(
|
||||
listDataModelGuid.Value, DataModelConditionListPredicate.RightPropertyPath
|
||||
listDataModelGuid.Value, DataModelConditionListPredicate.RightPath?.Path
|
||||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (SelectedOperator.SupportsRightSide)
|
||||
{
|
||||
DisposeRightSideDynamic();
|
||||
if (RightSideInputViewModel == null)
|
||||
@@ -205,16 +195,12 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
|
||||
public void ApplyRightSideDynamic()
|
||||
{
|
||||
if (DataModelConditionListPredicate.PredicateType == ListRightSideType.Dynamic)
|
||||
{
|
||||
DataModelConditionListPredicate.UpdateRightSideDynamic(
|
||||
RightSideSelectionViewModel.SelectedPropertyViewModel.DataModel,
|
||||
RightSideSelectionViewModel.SelectedPropertyViewModel.Path
|
||||
);
|
||||
}
|
||||
else if (DataModelConditionListPredicate.PredicateType == ListRightSideType.DynamicList)
|
||||
{
|
||||
DataModelConditionListPredicate.UpdateRightSideDynamic(RightSideSelectionViewModel.SelectedPropertyViewModel.Path);
|
||||
}
|
||||
|
||||
_profileEditorService.UpdateSelectedProfileElement();
|
||||
Update();
|
||||
@@ -238,10 +224,10 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
|
||||
|
||||
private DataModelVisualizationViewModel GetListDataModel()
|
||||
{
|
||||
DataModelPropertiesViewModel dataModel = _dataModelUIService.GetPluginDataModelVisualization(_profileEditorService.GetCurrentModule(), true);
|
||||
if (DataModelConditionListPredicate.DataModelConditionList.ListPath.DataModelGuid == null)
|
||||
return null;
|
||||
if (DataModelConditionListPredicate.DataModelConditionList.ListPath?.DataModelGuid == null)
|
||||
throw new ArtemisUIException("Failed to retrieve the list data model VM for this list predicate because it has no list path");
|
||||
|
||||
DataModelPropertiesViewModel dataModel = _dataModelUIService.GetPluginDataModelVisualization(_profileEditorService.GetCurrentModule(), true);
|
||||
DataModelListViewModel listDataModel = (DataModelListViewModel) dataModel.GetChildByPath(
|
||||
DataModelConditionListPredicate.DataModelConditionList.ListPath.DataModelGuid.Value,
|
||||
DataModelConditionListPredicate.DataModelConditionList.ListPath.Path
|
||||
@@ -293,5 +279,17 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
|
||||
RightSideSelectionViewModel = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (!_isPrimitiveList)
|
||||
{
|
||||
LeftSideSelectionViewModel.PropertySelected -= LeftSideOnPropertySelected;
|
||||
LeftSideSelectionViewModel.Dispose();
|
||||
}
|
||||
|
||||
DisposeRightSideDynamic();
|
||||
DisposeRightSideStatic();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -107,7 +107,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
TargetSelectionViewModel.PopulateSelectedPropertyViewModel(DataModelConditionList.ListPath.Target, DataModelConditionList.ListPath.Path);
|
||||
TargetSelectionViewModel.PopulateSelectedPropertyViewModel(DataModelConditionList.ListPath?.Target, DataModelConditionList.ListPath?.Path);
|
||||
NotifyOfPropertyChange(nameof(SelectedListOperator));
|
||||
|
||||
// Remove VMs of effects no longer applied on the layer
|
||||
|
||||
+12
-13
@@ -118,25 +118,24 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
|
||||
{
|
||||
LeftSideSelectionViewModel.FilterTypes = _supportedInputTypes.ToArray();
|
||||
LeftSideSelectionViewModel.PopulateSelectedPropertyViewModel(
|
||||
DataModelConditionPredicate.LeftPath.Target as DataModel,
|
||||
DataModelConditionPredicate.LeftPath.Path
|
||||
DataModelConditionPredicate.LeftPath?.Target,
|
||||
DataModelConditionPredicate.LeftPath?.Path
|
||||
);
|
||||
Type leftSideType = LeftSideSelectionViewModel.SelectedPropertyViewModel?.DataModelPath?.GetPropertyType();
|
||||
|
||||
// Get the supported operators
|
||||
Operators.Clear();
|
||||
Operators.AddRange(_conditionOperatorService.GetConditionOperatorsForType(leftSideType));
|
||||
Operators.AddRange(_conditionOperatorService.GetConditionOperatorsForType(leftSideType ?? typeof(object)));
|
||||
if (DataModelConditionPredicate.Operator == null)
|
||||
DataModelConditionPredicate.UpdateOperator(Operators.FirstOrDefault(o => o.SupportsType(leftSideType)));
|
||||
DataModelConditionPredicate.UpdateOperator(Operators.FirstOrDefault(o => o.SupportsType(leftSideType ?? typeof(object))));
|
||||
SelectedOperator = DataModelConditionPredicate.Operator;
|
||||
if (!SelectedOperator.SupportsRightSide)
|
||||
if (SelectedOperator == null || !SelectedOperator.SupportsRightSide)
|
||||
{
|
||||
DisposeRightSideStatic();
|
||||
DisposeRightSideDynamic();
|
||||
}
|
||||
|
||||
// Ensure the right side has the proper VM
|
||||
Type targetType = LeftSideSelectionViewModel?.SelectedPropertyViewModel?.DataModelPath?.GetPropertyType();
|
||||
if (DataModelConditionPredicate.PredicateType == ProfileRightSideType.Dynamic && SelectedOperator.SupportsRightSide)
|
||||
{
|
||||
DisposeRightSideStatic();
|
||||
@@ -148,24 +147,24 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
|
||||
}
|
||||
|
||||
RightSideSelectionViewModel.PopulateSelectedPropertyViewModel(
|
||||
DataModelConditionPredicate.RightPath.Target as DataModel,
|
||||
DataModelConditionPredicate.RightPath.Path
|
||||
DataModelConditionPredicate.RightPath?.Target,
|
||||
DataModelConditionPredicate.RightPath?.Path
|
||||
);
|
||||
RightSideSelectionViewModel.FilterTypes = new[] {targetType};
|
||||
RightSideSelectionViewModel.FilterTypes = new[] {leftSideType};
|
||||
}
|
||||
else if (SelectedOperator.SupportsRightSide)
|
||||
{
|
||||
DisposeRightSideDynamic();
|
||||
if (RightSideInputViewModel == null)
|
||||
{
|
||||
RightSideInputViewModel = _dataModelUIService.GetStaticInputViewModel(targetType);
|
||||
RightSideInputViewModel = _dataModelUIService.GetStaticInputViewModel(leftSideType);
|
||||
RightSideInputViewModel.ButtonBrush = (Brush) Application.Current.FindResource("PrimaryHueMidBrush");
|
||||
RightSideInputViewModel.ValueUpdated += RightSideOnValueEntered;
|
||||
}
|
||||
|
||||
RightSideInputViewModel.Value = DataModelConditionPredicate.RightStaticValue;
|
||||
if (RightSideInputViewModel.TargetType != targetType)
|
||||
RightSideInputViewModel.UpdateTargetType(targetType);
|
||||
if (RightSideInputViewModel.TargetType != leftSideType)
|
||||
RightSideInputViewModel.UpdateTargetType(leftSideType);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,7 +212,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
|
||||
ApplyLeftSide();
|
||||
}
|
||||
|
||||
private void RightSideOnPropertySelected(object? sender, DataModelInputDynamicEventArgs e)
|
||||
private void RightSideOnPropertySelected(object sender, DataModelInputDynamicEventArgs e)
|
||||
{
|
||||
ApplyRightSideDynamic();
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user