diff --git a/Artemis/Artemis/Profiles/Layers/Abstract/LayerPropertiesViewModel.cs b/Artemis/Artemis/Profiles/Layers/Abstract/LayerPropertiesViewModel.cs
index ef03980cd..33ea330e7 100644
--- a/Artemis/Artemis/Profiles/Layers/Abstract/LayerPropertiesViewModel.cs
+++ b/Artemis/Artemis/Profiles/Layers/Abstract/LayerPropertiesViewModel.cs
@@ -1,6 +1,6 @@
using System.Windows.Media;
-using Artemis.Models.Interfaces;
using Artemis.Profiles.Layers.Models;
+using Artemis.ViewModels.Profiles;
using Caliburn.Micro;
namespace Artemis.Profiles.Layers.Abstract
@@ -10,13 +10,19 @@ namespace Artemis.Profiles.Layers.Abstract
private Brush _brush;
private LayerModel _layerModel;
- protected LayerPropertiesViewModel(LayerModel layerModel, IDataModel dataModel)
+ protected LayerPropertiesViewModel(LayerEditorViewModel layerEditorViewModel)
{
- LayerModel = layerModel;
- DataModel = dataModel;
+ LayerEditorViewModel = layerEditorViewModel;
+ LayerModel = layerEditorViewModel.ProposedLayer;
+
Brush = LayerModel.Properties.Brush.Clone();
}
+ public LayerEditorViewModel LayerEditorViewModel { get; set; }
+
+ ///
+ /// The proposed brush
+ ///
public Brush Brush
{
get { return _brush; }
@@ -28,6 +34,9 @@ namespace Artemis.Profiles.Layers.Abstract
}
}
+ ///
+ /// The proposed layer
+ ///
public LayerModel LayerModel
{
get { return _layerModel; }
@@ -39,8 +48,6 @@ namespace Artemis.Profiles.Layers.Abstract
}
}
- public IDataModel DataModel { get; set; }
-
public abstract void ApplyProperties();
}
}
\ No newline at end of file
diff --git a/Artemis/Artemis/Profiles/Layers/Interfaces/ILayerType.cs b/Artemis/Artemis/Profiles/Layers/Interfaces/ILayerType.cs
index 4630d6680..02a5bfb56 100644
--- a/Artemis/Artemis/Profiles/Layers/Interfaces/ILayerType.cs
+++ b/Artemis/Artemis/Profiles/Layers/Interfaces/ILayerType.cs
@@ -3,6 +3,7 @@ using System.Windows.Media;
using Artemis.Models.Interfaces;
using Artemis.Profiles.Layers.Abstract;
using Artemis.Profiles.Layers.Models;
+using Artemis.ViewModels.Profiles;
using Newtonsoft.Json;
namespace Artemis.Profiles.Layers.Interfaces
@@ -58,12 +59,9 @@ namespace Artemis.Profiles.Layers.Interfaces
///
/// Sets up a viewmodel to accomodate this layerType
///
+ /// The layer editor VM this type resides in
/// The current viewmodel
- ///
- /// The datamodel to use in the new viewmodel
- /// The layer to use in the new viewmodel
- LayerPropertiesViewModel SetupViewModel(LayerPropertiesViewModel layerPropertiesViewModel,
- List layerAnimations, IDataModel dataModel, LayerModel proposedLayer);
+ LayerPropertiesViewModel SetupViewModel(LayerEditorViewModel layerEditorViewModel, LayerPropertiesViewModel layerPropertiesViewModel);
}
public enum DrawType
diff --git a/Artemis/Artemis/Profiles/Layers/Models/DynamicPropertiesModel.cs b/Artemis/Artemis/Profiles/Layers/Models/DynamicPropertiesModel.cs
index fc3ba8ee1..8cbf2ca6c 100644
--- a/Artemis/Artemis/Profiles/Layers/Models/DynamicPropertiesModel.cs
+++ b/Artemis/Artemis/Profiles/Layers/Models/DynamicPropertiesModel.cs
@@ -1,4 +1,5 @@
-using System.ComponentModel;
+using System;
+using System.ComponentModel;
using Artemis.Models.Interfaces;
using Artemis.Utilities;
@@ -62,8 +63,11 @@ namespace Artemis.Profiles.Layers.Models
private void ApplyWidth(LayerPropertiesModel properties, float percentage)
{
- var newWidth = percentage*(float) properties.Width;
+ var newWidth = Math.Round(percentage*(float) properties.Width, 2);
var difference = properties.Width - newWidth;
+ if (newWidth < 0)
+ newWidth = 0;
+
properties.Width = newWidth;
// Apply the right to left option
@@ -73,8 +77,11 @@ namespace Artemis.Profiles.Layers.Models
private void ApplyHeight(LayerPropertiesModel properties, float percentage)
{
- var newHeight = percentage*(float) properties.Height;
+ var newHeight = Math.Round(percentage*(float) properties.Height, 2);
var difference = properties.Height - newHeight;
+ if (newHeight < 0)
+ newHeight = 0;
+
properties.Height = newHeight;
if (LayerPropertyOptions == LayerPropertyOptions.Downwards)
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioPropertiesViewModel.cs b/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioPropertiesViewModel.cs
index f3ce5015b..cc502a220 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioPropertiesViewModel.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioPropertiesViewModel.cs
@@ -1,12 +1,11 @@
-using Artemis.Models.Interfaces;
-using Artemis.Profiles.Layers.Abstract;
-using Artemis.Profiles.Layers.Models;
+using Artemis.Profiles.Layers.Abstract;
+using Artemis.ViewModels.Profiles;
namespace Artemis.Profiles.Layers.Types.Audio
{
public class AudioPropertiesViewModel : LayerPropertiesViewModel
{
- public AudioPropertiesViewModel(LayerModel layerModel, IDataModel dataModel) : base(layerModel, dataModel)
+ public AudioPropertiesViewModel(LayerEditorViewModel editorVm) : base(editorVm)
{
}
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioType.cs b/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioType.cs
index ca2b50c73..0b455fe7b 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioType.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioType.cs
@@ -12,6 +12,7 @@ using Artemis.Profiles.Layers.Interfaces;
using Artemis.Profiles.Layers.Models;
using Artemis.Properties;
using Artemis.Utilities;
+using Artemis.ViewModels.Profiles;
using NAudio.CoreAudioApi;
using NAudio.Wave;
using Newtonsoft.Json;
@@ -119,12 +120,12 @@ namespace Artemis.Profiles.Layers.Types.Audio
};
}
- public LayerPropertiesViewModel SetupViewModel(LayerPropertiesViewModel layerPropertiesViewModel,
- List layerAnimations, IDataModel dataModel, LayerModel proposedLayer)
+ public LayerPropertiesViewModel SetupViewModel(LayerEditorViewModel layerEditorViewModel,
+ LayerPropertiesViewModel layerPropertiesViewModel)
{
if (layerPropertiesViewModel is AudioPropertiesViewModel)
return layerPropertiesViewModel;
- return new AudioPropertiesViewModel(proposedLayer, dataModel);
+ return new AudioPropertiesViewModel(layerEditorViewModel);
}
private void ApplyVertical(AudioPropertiesModel settings)
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Folder/FolderPropertiesViewModel.cs b/Artemis/Artemis/Profiles/Layers/Types/Folder/FolderPropertiesViewModel.cs
index de809f0e1..318662690 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Folder/FolderPropertiesViewModel.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Folder/FolderPropertiesViewModel.cs
@@ -1,12 +1,11 @@
-using Artemis.Models.Interfaces;
-using Artemis.Profiles.Layers.Abstract;
-using Artemis.Profiles.Layers.Models;
+using Artemis.Profiles.Layers.Abstract;
+using Artemis.ViewModels.Profiles;
namespace Artemis.Profiles.Layers.Types.Folder
{
public class FolderPropertiesViewModel : LayerPropertiesViewModel
{
- public FolderPropertiesViewModel(LayerModel layerModel, IDataModel dataModel) : base(layerModel, dataModel)
+ public FolderPropertiesViewModel(LayerEditorViewModel editorVm) : base(editorVm)
{
}
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Folder/FolderType.cs b/Artemis/Artemis/Profiles/Layers/Types/Folder/FolderType.cs
index 40bf854fb..7856f0e40 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Folder/FolderType.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Folder/FolderType.cs
@@ -7,6 +7,7 @@ using Artemis.Profiles.Layers.Interfaces;
using Artemis.Profiles.Layers.Models;
using Artemis.Properties;
using Artemis.Utilities;
+using Artemis.ViewModels.Profiles;
namespace Artemis.Profiles.Layers.Types.Folder
{
@@ -44,12 +45,12 @@ namespace Artemis.Profiles.Layers.Types.Folder
layerModel.Properties = new SimplePropertiesModel(layerModel.Properties);
}
- public LayerPropertiesViewModel SetupViewModel(LayerPropertiesViewModel layerPropertiesViewModel,
- List layerAnimations, IDataModel dataModel, LayerModel proposedLayer)
+ public LayerPropertiesViewModel SetupViewModel(LayerEditorViewModel layerEditorViewModel,
+ LayerPropertiesViewModel layerPropertiesViewModel)
{
if (layerPropertiesViewModel is FolderPropertiesViewModel)
return layerPropertiesViewModel;
- return new FolderPropertiesViewModel(proposedLayer, dataModel);
+ return new FolderPropertiesViewModel(layerEditorViewModel);
}
}
}
\ No newline at end of file
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericPropertiesViewModel.cs b/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericPropertiesViewModel.cs
index 42dcc8d09..ebe5ee700 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericPropertiesViewModel.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericPropertiesViewModel.cs
@@ -1,10 +1,6 @@
-using System.Collections.Generic;
-using System.Linq;
-using Artemis.Models.Interfaces;
+using System.Linq;
using Artemis.Profiles.Layers.Abstract;
using Artemis.Profiles.Layers.Interfaces;
-using Artemis.Profiles.Layers.Models;
-using Artemis.Utilities;
using Artemis.ViewModels.Profiles;
using Caliburn.Micro;
@@ -14,16 +10,14 @@ namespace Artemis.Profiles.Layers.Types.Generic
{
private ILayerAnimation _selectedLayerAnimation;
- public GenericPropertiesViewModel(LayerModel layerModel, IDataModel dataModel,
- IEnumerable layerAnimations) : base(layerModel, dataModel)
+ public GenericPropertiesViewModel(LayerEditorViewModel editorVm) : base(editorVm)
{
- LayerAnimations = new BindableCollection(layerAnimations);
- OpacityProperties = new LayerDynamicPropertiesViewModel("Opacity",
- new BindableCollection(GeneralHelpers.GenerateTypeMap(dataModel)),
- layerModel.Properties);
+ LayerAnimations = new BindableCollection(editorVm.Animations);
+ OpacityProperties = new LayerDynamicPropertiesViewModel("Opacity", editorVm);
- SelectedLayerAnimation = LayerAnimations.FirstOrDefault(l => l.Name == layerModel.LayerAnimation?.Name) ??
- LayerAnimations.First(l => l.Name == "None");
+ SelectedLayerAnimation =
+ LayerAnimations.FirstOrDefault(l => l.Name == editorVm.ProposedLayer.LayerAnimation?.Name) ??
+ LayerAnimations.First(l => l.Name == "None");
}
public BindableCollection LayerAnimations { get; set; }
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericType.cs b/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericType.cs
index 0155ce658..94181f4ee 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericType.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericType.cs
@@ -9,6 +9,7 @@ using Artemis.Profiles.Layers.Interfaces;
using Artemis.Profiles.Layers.Models;
using Artemis.Properties;
using Artemis.Utilities;
+using Artemis.ViewModels.Profiles;
namespace Artemis.Profiles.Layers.Types.Generic
{
@@ -85,12 +86,12 @@ namespace Artemis.Profiles.Layers.Types.Generic
layerModel.Properties.DynamicProperties.FirstOrDefault(d => d.LayerProperty == "Width"));
}
- public LayerPropertiesViewModel SetupViewModel(LayerPropertiesViewModel layerPropertiesViewModel,
- List layerAnimations, IDataModel dataModel, LayerModel proposedLayer)
+ public LayerPropertiesViewModel SetupViewModel(LayerEditorViewModel layerEditorViewModel,
+ LayerPropertiesViewModel layerPropertiesViewModel)
{
if (layerPropertiesViewModel is GenericPropertiesViewModel)
return layerPropertiesViewModel;
- return new GenericPropertiesViewModel(proposedLayer, dataModel, layerAnimations);
+ return new GenericPropertiesViewModel(layerEditorViewModel);
}
}
}
\ No newline at end of file
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Headset/HeadsetPropertiesViewModel.cs b/Artemis/Artemis/Profiles/Layers/Types/Headset/HeadsetPropertiesViewModel.cs
index 76ac3cae1..88bb4c0b5 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Headset/HeadsetPropertiesViewModel.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Headset/HeadsetPropertiesViewModel.cs
@@ -1,10 +1,6 @@
-using System.Collections.Generic;
-using System.Linq;
-using Artemis.Models.Interfaces;
+using System.Linq;
using Artemis.Profiles.Layers.Abstract;
using Artemis.Profiles.Layers.Interfaces;
-using Artemis.Profiles.Layers.Models;
-using Artemis.Utilities;
using Artemis.ViewModels.Profiles;
using Caliburn.Micro;
@@ -14,16 +10,14 @@ namespace Artemis.Profiles.Layers.Types.Headset
{
private ILayerAnimation _selectedLayerAnimation;
- public HeadsetPropertiesViewModel(LayerModel layerModel, IDataModel dataModel,
- IEnumerable layerAnimations) : base(layerModel, dataModel)
+ public HeadsetPropertiesViewModel(LayerEditorViewModel editorVm) : base(editorVm)
{
- LayerAnimations = new BindableCollection(layerAnimations);
- OpacityProperties = new LayerDynamicPropertiesViewModel("Opacity",
- new BindableCollection(GeneralHelpers.GenerateTypeMap(dataModel)),
- layerModel.Properties);
+ LayerAnimations = new BindableCollection(editorVm.Animations);
+ OpacityProperties = new LayerDynamicPropertiesViewModel("Opacity", editorVm);
- SelectedLayerAnimation = LayerAnimations.FirstOrDefault(l => l.Name == layerModel.LayerAnimation?.Name) ??
- LayerAnimations.First(l => l.Name == "None");
+ SelectedLayerAnimation =
+ LayerAnimations.FirstOrDefault(l => l.Name == editorVm.ProposedLayer.LayerAnimation?.Name) ??
+ LayerAnimations.First(l => l.Name == "None");
}
public BindableCollection LayerAnimations { get; set; }
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Headset/HeadsetType.cs b/Artemis/Artemis/Profiles/Layers/Types/Headset/HeadsetType.cs
index 0b5b6382e..5cef2d84c 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Headset/HeadsetType.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Headset/HeadsetType.cs
@@ -9,6 +9,7 @@ using Artemis.Profiles.Layers.Interfaces;
using Artemis.Profiles.Layers.Models;
using Artemis.Properties;
using Artemis.Utilities;
+using Artemis.ViewModels.Profiles;
namespace Artemis.Profiles.Layers.Types.Headset
{
@@ -83,12 +84,12 @@ namespace Artemis.Profiles.Layers.Types.Headset
layerModel.Properties.DynamicProperties.FirstOrDefault(d => d.LayerProperty == "Width"));
}
- public LayerPropertiesViewModel SetupViewModel(LayerPropertiesViewModel layerPropertiesViewModel,
- List layerAnimations, IDataModel dataModel, LayerModel proposedLayer)
+ public LayerPropertiesViewModel SetupViewModel(LayerEditorViewModel layerEditorViewModel,
+ LayerPropertiesViewModel layerPropertiesViewModel)
{
if (layerPropertiesViewModel is HeadsetPropertiesViewModel)
return layerPropertiesViewModel;
- return new HeadsetPropertiesViewModel(proposedLayer, dataModel, layerAnimations);
+ return new HeadsetPropertiesViewModel(layerEditorViewModel);
}
}
}
\ No newline at end of file
diff --git a/Artemis/Artemis/Profiles/Layers/Types/KeyPress/KeyPressPropertiesViewModel.cs b/Artemis/Artemis/Profiles/Layers/Types/KeyPress/KeyPressPropertiesViewModel.cs
index 6ea9c2e6c..9efbd9907 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/KeyPress/KeyPressPropertiesViewModel.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/KeyPress/KeyPressPropertiesViewModel.cs
@@ -1,12 +1,11 @@
-using Artemis.Models.Interfaces;
-using Artemis.Profiles.Layers.Abstract;
-using Artemis.Profiles.Layers.Models;
+using Artemis.Profiles.Layers.Abstract;
+using Artemis.ViewModels.Profiles;
namespace Artemis.Profiles.Layers.Types.KeyPress
{
public class KeyPressPropertiesViewModel : LayerPropertiesViewModel
{
- public KeyPressPropertiesViewModel(LayerModel layerModel, IDataModel dataModel) : base(layerModel, dataModel)
+ public KeyPressPropertiesViewModel(LayerEditorViewModel editorVm) : base(editorVm)
{
}
diff --git a/Artemis/Artemis/Profiles/Layers/Types/KeyPress/KeyPressType.cs b/Artemis/Artemis/Profiles/Layers/Types/KeyPress/KeyPressType.cs
index 43d0ac4e0..d67996403 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/KeyPress/KeyPressType.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/KeyPress/KeyPressType.cs
@@ -13,6 +13,7 @@ using Artemis.Profiles.Layers.Models;
using Artemis.Properties;
using Artemis.Utilities;
using Artemis.Utilities.Keyboard;
+using Artemis.ViewModels.Profiles;
namespace Artemis.Profiles.Layers.Types.KeyPress
{
@@ -89,12 +90,12 @@ namespace Artemis.Profiles.Layers.Types.KeyPress
layerModel.Properties = new KeyPressPropertiesModel(layerModel.Properties);
}
- public LayerPropertiesViewModel SetupViewModel(LayerPropertiesViewModel layerPropertiesViewModel,
- List layerAnimations, IDataModel dataModel, LayerModel proposedLayer)
+ public LayerPropertiesViewModel SetupViewModel(LayerEditorViewModel layerEditorViewModel,
+ LayerPropertiesViewModel layerPropertiesViewModel)
{
if (layerPropertiesViewModel is KeyPressPropertiesViewModel)
return layerPropertiesViewModel;
- return new KeyPressPropertiesViewModel(proposedLayer, dataModel);
+ return new KeyPressPropertiesViewModel(layerEditorViewModel);
}
private void KeyboardHookOnKeyDownCallback(KeyEventArgs e)
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Keyboard/KeyboardPropertiesViewModel.cs b/Artemis/Artemis/Profiles/Layers/Types/Keyboard/KeyboardPropertiesViewModel.cs
index 69a1f08d0..86ed34c81 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Keyboard/KeyboardPropertiesViewModel.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Keyboard/KeyboardPropertiesViewModel.cs
@@ -1,10 +1,7 @@
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using System.Windows.Forms;
-using Artemis.Models.Interfaces;
using Artemis.Profiles.Layers.Abstract;
using Artemis.Profiles.Layers.Interfaces;
-using Artemis.Profiles.Layers.Models;
using Artemis.Utilities;
using Artemis.ViewModels.Profiles;
using Caliburn.Micro;
@@ -16,19 +13,17 @@ namespace Artemis.Profiles.Layers.Types.Keyboard
private bool _isGif;
private ILayerAnimation _selectedLayerAnimation;
- public KeyboardPropertiesViewModel(LayerModel layerModel, IDataModel dataModel,
- IEnumerable layerAnimations) : base(layerModel, dataModel)
+ public KeyboardPropertiesViewModel(LayerEditorViewModel editorVm) : base(editorVm)
{
- LayerAnimations = new BindableCollection(layerAnimations);
+ LayerAnimations = new BindableCollection(editorVm.Animations);
- var dataModelProps =
- new BindableCollection(GeneralHelpers.GenerateTypeMap(dataModel));
- HeightProperties = new LayerDynamicPropertiesViewModel("Height", dataModelProps, layerModel.Properties);
- WidthProperties = new LayerDynamicPropertiesViewModel("Width", dataModelProps, layerModel.Properties);
- OpacityProperties = new LayerDynamicPropertiesViewModel("Opacity", dataModelProps, layerModel.Properties);
+ HeightProperties = new LayerDynamicPropertiesViewModel("Height", editorVm);
+ WidthProperties = new LayerDynamicPropertiesViewModel("Width", editorVm);
+ OpacityProperties = new LayerDynamicPropertiesViewModel("Opacity", editorVm);
- SelectedLayerAnimation = LayerAnimations.FirstOrDefault(l => l.Name == layerModel.LayerAnimation?.Name) ??
- LayerAnimations.First(l => l.Name == "None");
+ SelectedLayerAnimation =
+ LayerAnimations.FirstOrDefault(l => l.Name == editorVm.ProposedLayer.LayerAnimation?.Name) ??
+ LayerAnimations.First(l => l.Name == "None");
}
public bool ShowGif => IsGif;
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Keyboard/KeyboardType.cs b/Artemis/Artemis/Profiles/Layers/Types/Keyboard/KeyboardType.cs
index 1b510d03d..7a570c644 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Keyboard/KeyboardType.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Keyboard/KeyboardType.cs
@@ -6,6 +6,7 @@ using Artemis.Profiles.Layers.Abstract;
using Artemis.Profiles.Layers.Animations;
using Artemis.Profiles.Layers.Interfaces;
using Artemis.Profiles.Layers.Models;
+using Artemis.ViewModels.Profiles;
namespace Artemis.Profiles.Layers.Types.Keyboard
{
@@ -82,12 +83,12 @@ namespace Artemis.Profiles.Layers.Types.Keyboard
layerModel.Properties = new KeyboardPropertiesModel(layerModel.Properties);
}
- public LayerPropertiesViewModel SetupViewModel(LayerPropertiesViewModel layerPropertiesViewModel,
- List layerAnimations, IDataModel dataModel, LayerModel proposedLayer)
+ public LayerPropertiesViewModel SetupViewModel(LayerEditorViewModel layerEditorViewModel,
+ LayerPropertiesViewModel layerPropertiesViewModel)
{
var model = layerPropertiesViewModel as KeyboardPropertiesViewModel;
if (model == null)
- return new KeyboardPropertiesViewModel(proposedLayer, dataModel, layerAnimations)
+ return new KeyboardPropertiesViewModel(layerEditorViewModel)
{
IsGif = false
};
diff --git a/Artemis/Artemis/Profiles/Layers/Types/KeyboardGif/KeyboardGifType.cs b/Artemis/Artemis/Profiles/Layers/Types/KeyboardGif/KeyboardGifType.cs
index c280b3adc..de0e3b1a2 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/KeyboardGif/KeyboardGifType.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/KeyboardGif/KeyboardGifType.cs
@@ -10,6 +10,7 @@ using Artemis.Profiles.Layers.Models;
using Artemis.Profiles.Layers.Types.Keyboard;
using Artemis.Properties;
using Artemis.Utilities;
+using Artemis.ViewModels.Profiles;
namespace Artemis.Profiles.Layers.Types.KeyboardGif
{
@@ -76,12 +77,12 @@ namespace Artemis.Profiles.Layers.Types.KeyboardGif
layerModel.Properties = new KeyboardPropertiesModel(layerModel.Properties);
}
- public LayerPropertiesViewModel SetupViewModel(LayerPropertiesViewModel layerPropertiesViewModel,
- List layerAnimations, IDataModel dataModel, LayerModel proposedLayer)
+ public LayerPropertiesViewModel SetupViewModel(LayerEditorViewModel layerEditorViewModel,
+ LayerPropertiesViewModel layerPropertiesViewModel)
{
var model = layerPropertiesViewModel as KeyboardPropertiesViewModel;
if (model == null)
- return new KeyboardPropertiesViewModel(proposedLayer, dataModel, layerAnimations)
+ return new KeyboardPropertiesViewModel(layerEditorViewModel)
{
IsGif = true
};
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Mouse/MousePropertiesViewModel.cs b/Artemis/Artemis/Profiles/Layers/Types/Mouse/MousePropertiesViewModel.cs
index aba7a1a1f..6363ec67d 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Mouse/MousePropertiesViewModel.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Mouse/MousePropertiesViewModel.cs
@@ -1,10 +1,6 @@
-using System.Collections.Generic;
-using System.Linq;
-using Artemis.Models.Interfaces;
+using System.Linq;
using Artemis.Profiles.Layers.Abstract;
using Artemis.Profiles.Layers.Interfaces;
-using Artemis.Profiles.Layers.Models;
-using Artemis.Utilities;
using Artemis.ViewModels.Profiles;
using Caliburn.Micro;
@@ -14,16 +10,14 @@ namespace Artemis.Profiles.Layers.Types.Mouse
{
private ILayerAnimation _selectedLayerAnimation;
- public MousePropertiesViewModel(LayerModel layerModel, IDataModel dataModel,
- IEnumerable layerAnimations) : base(layerModel, dataModel)
+ public MousePropertiesViewModel(LayerEditorViewModel editorVm) : base(editorVm)
{
- LayerAnimations = new BindableCollection(layerAnimations);
- OpacityProperties = new LayerDynamicPropertiesViewModel("Opacity",
- new BindableCollection(GeneralHelpers.GenerateTypeMap(dataModel)),
- layerModel.Properties);
+ LayerAnimations = new BindableCollection(editorVm.Animations);
+ OpacityProperties = new LayerDynamicPropertiesViewModel("Opacity", editorVm);
- SelectedLayerAnimation = LayerAnimations.FirstOrDefault(l => l.Name == layerModel.LayerAnimation?.Name) ??
- LayerAnimations.First(l => l.Name == "None");
+ SelectedLayerAnimation =
+ LayerAnimations.FirstOrDefault(l => l.Name == editorVm.ProposedLayer.LayerAnimation?.Name) ??
+ LayerAnimations.First(l => l.Name == "None");
}
public BindableCollection LayerAnimations { get; set; }
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Mouse/MouseType.cs b/Artemis/Artemis/Profiles/Layers/Types/Mouse/MouseType.cs
index fdc0e7418..eb9723a13 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Mouse/MouseType.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Mouse/MouseType.cs
@@ -9,6 +9,7 @@ using Artemis.Profiles.Layers.Interfaces;
using Artemis.Profiles.Layers.Models;
using Artemis.Properties;
using Artemis.Utilities;
+using Artemis.ViewModels.Profiles;
namespace Artemis.Profiles.Layers.Types.Mouse
{
@@ -85,12 +86,12 @@ namespace Artemis.Profiles.Layers.Types.Mouse
layerModel.Properties.DynamicProperties.FirstOrDefault(d => d.LayerProperty == "Width"));
}
- public LayerPropertiesViewModel SetupViewModel(LayerPropertiesViewModel layerPropertiesViewModel,
- List layerAnimations, IDataModel dataModel, LayerModel proposedLayer)
+ public LayerPropertiesViewModel SetupViewModel(LayerEditorViewModel layerEditorViewModel,
+ LayerPropertiesViewModel layerPropertiesViewModel)
{
if (layerPropertiesViewModel is MousePropertiesViewModel)
return layerPropertiesViewModel;
- return new MousePropertiesViewModel(proposedLayer, dataModel, layerAnimations);
+ return new MousePropertiesViewModel(layerEditorViewModel);
}
}
}
\ No newline at end of file
diff --git a/Artemis/Artemis/ViewModels/Profiles/LayerConditionViewModel.cs b/Artemis/Artemis/ViewModels/Profiles/LayerConditionViewModel.cs
index 60ec72358..fe8ad7a78 100644
--- a/Artemis/Artemis/ViewModels/Profiles/LayerConditionViewModel.cs
+++ b/Artemis/Artemis/ViewModels/Profiles/LayerConditionViewModel.cs
@@ -48,14 +48,13 @@ namespace Artemis.ViewModels.Profiles
private string _userValue;
private bool _userValueIsVisible;
- public LayerConditionViewModel(LayerEditorViewModel conditionModel, LayerConditionModel layerConditionModel,
- BindableCollection dataModelProps)
+ public LayerConditionViewModel(LayerEditorViewModel conditionModel, LayerConditionModel layerConditionModel)
{
_conditionModel = conditionModel;
_preselecting = false;
LayerConditionModel = layerConditionModel;
- DataModelProps = dataModelProps;
+ DataModelProps = conditionModel.DataModelProps;
Operators = new BindableCollection();
Enums = new BindableCollection();
diff --git a/Artemis/Artemis/ViewModels/Profiles/LayerDynamicPropertiesViewModel.cs b/Artemis/Artemis/ViewModels/Profiles/LayerDynamicPropertiesViewModel.cs
index a080953aa..54e056009 100644
--- a/Artemis/Artemis/ViewModels/Profiles/LayerDynamicPropertiesViewModel.cs
+++ b/Artemis/Artemis/ViewModels/Profiles/LayerDynamicPropertiesViewModel.cs
@@ -9,6 +9,7 @@ namespace Artemis.ViewModels.Profiles
{
public sealed class LayerDynamicPropertiesViewModel : PropertyChangedBase
{
+ private readonly LayerEditorViewModel _layerEditorViewModel;
private readonly string _property;
private BindableCollection _layerPropertyOptions;
private LayerPropertyType _layerPropertyType;
@@ -19,15 +20,19 @@ namespace Artemis.ViewModels.Profiles
private bool _sourcesIsVisible;
private bool _userSourceIsVisible;
- public LayerDynamicPropertiesViewModel(string property,
- BindableCollection dataModelProps,
- LayerPropertiesModel layerPropertiesModel)
+ public LayerDynamicPropertiesViewModel(string property, LayerEditorViewModel layerEditorViewModel)
{
_property = property;
+ _layerEditorViewModel = layerEditorViewModel;
// Look for the existing property model
Proposed = new DynamicPropertiesModel();
- var original = layerPropertiesModel.DynamicProperties.FirstOrDefault(lp => lp.LayerProperty == _property);
+ var original = layerEditorViewModel
+ .ProposedLayer
+ .Properties
+ .DynamicProperties
+ .FirstOrDefault(lp => lp.LayerProperty == _property);
+
if (original == null)
{
Proposed.LayerProperty = property;
@@ -37,7 +42,7 @@ namespace Artemis.ViewModels.Profiles
Proposed = GeneralHelpers.Clone(original);
PropertyChanged += OnPropertyChanged;
- SetupControls(dataModelProps);
+ SetupControls();
}
public LayerPropertyType LayerPropertyType
@@ -129,14 +134,15 @@ namespace Artemis.ViewModels.Profiles
}
}
- public bool ControlsEnabled => SelectedTarget.Display != "None" && SelectedTarget.Path != null;
+ public bool ControlsEnabled => (SelectedTarget.Display != "None") && (SelectedTarget.Path != null);
public BindableCollection Targets { get; set; }
public BindableCollection Sources { get; set; }
- private void SetupControls(BindableCollection dataModelProps)
+ private void SetupControls()
{
+ var dataModelProps = _layerEditorViewModel.DataModelProps;
Name = _property + ":";
// Populate target combobox
@@ -144,11 +150,11 @@ namespace Artemis.ViewModels.Profiles
{
new GeneralHelpers.PropertyCollection {Display = "None"}
};
- Targets.AddRange(dataModelProps.Where(p => p.Type == "Int32" || p.Type == "Single"));
+ Targets.AddRange(dataModelProps.Where(p => (p.Type == "Int32") || (p.Type == "Single")));
// Populate sources combobox
Sources = new BindableCollection();
- Sources.AddRange(dataModelProps.Where(p => p.Type == "Int32" || p.Type == "Single"));
+ Sources.AddRange(dataModelProps.Where(p => (p.Type == "Int32") || (p.Type == "Single")));
// Preselect according to the model
SelectedTarget = dataModelProps.FirstOrDefault(p => p.Path == Proposed.GameProperty);
@@ -208,12 +214,13 @@ namespace Artemis.ViewModels.Profiles
public void Apply(LayerModel layerModel)
{
- var original = layerModel.Properties.DynamicProperties.FirstOrDefault(lp => lp.LayerProperty == _property);
- if (original != null)
- layerModel.Properties.DynamicProperties.Remove(original);
+ var proposedProperties = _layerEditorViewModel.ProposedLayer.Properties;
+ proposedProperties.DynamicProperties = proposedProperties
+ .DynamicProperties
+ .Where(p => p.LayerProperty != _property).ToList();
if (!Proposed.GameProperty.IsNullOrEmpty())
- layerModel.Properties.DynamicProperties.Add(Proposed);
+ proposedProperties.DynamicProperties.Add(Proposed);
}
}
}
\ No newline at end of file
diff --git a/Artemis/Artemis/ViewModels/Profiles/LayerEditorViewModel.cs b/Artemis/Artemis/ViewModels/Profiles/LayerEditorViewModel.cs
index 87920681f..cd7dbfaf9 100644
--- a/Artemis/Artemis/ViewModels/Profiles/LayerEditorViewModel.cs
+++ b/Artemis/Artemis/ViewModels/Profiles/LayerEditorViewModel.cs
@@ -10,57 +10,53 @@ using Artemis.Profiles.Layers.Models;
using Artemis.Profiles.Layers.Types.Keyboard;
using Artemis.Profiles.Layers.Types.KeyboardGif;
using Artemis.Services;
-using Artemis.Utilities;
using Artemis.ViewModels.Profiles.Events;
using Caliburn.Micro;
using Newtonsoft.Json;
using Ninject;
-using NuGet;
+using static Artemis.Utilities.GeneralHelpers;
namespace Artemis.ViewModels.Profiles
{
public sealed class LayerEditorViewModel : Screen
{
- private readonly IDataModel _dataModel;
- private readonly List _layerAnimations;
private EventPropertiesViewModel _eventPropertiesViewModel;
private LayerModel _layer;
private LayerPropertiesViewModel _layerPropertiesViewModel;
private LayerModel _proposedLayer;
private ILayerType _selectedLayerType;
- public LayerEditorViewModel(IDataModel dataModel, LayerModel layer, IEnumerable layerTypes,
- List layerAnimations)
+ public LayerEditorViewModel(LayerModel layer, IDataModel dataModel, IEnumerable types,
+ List animations)
{
- _dataModel = dataModel;
- _layerAnimations = layerAnimations;
-
- LayerTypes = new BindableCollection(layerTypes);
- DataModelProps = new BindableCollection(
- GeneralHelpers.GenerateTypeMap(dataModel));
-
Layer = layer;
- ProposedLayer = GeneralHelpers.Clone(layer);
- ProposedLayer.Children.Clear();
+ ProposedLayer = Clone(layer);
+ DataModel = DataModel;
+ Types = new BindableCollection(types);
+ Animations = animations;
+
+ DataModelProps = new BindableCollection(GenerateTypeMap(dataModel));
if (Layer.Properties == null)
Layer.SetupProperties();
- LayerConditionVms = new BindableCollection(
- layer.Properties.Conditions.Select(c => new LayerConditionViewModel(this, c, DataModelProps)));
+ // Setup existing conditions
+ var conditions = layer.Properties.Conditions.Select(c => new LayerConditionViewModel(this, c));
+ LayerConditionVms = new BindableCollection(conditions);
PropertyChanged += PropertiesViewModelHandler;
+
+ // Setup existiing properties
PreSelect();
}
-
- public bool ModelChanged { get; set; }
+ public object DataModel { get; set; }
[Inject]
public MetroDialogService DialogService { get; set; }
- public BindableCollection LayerTypes { get; set; }
- public BindableCollection DataModelProps { get; set; }
+ public BindableCollection Types { get; set; }
+ public BindableCollection DataModelProps { get; set; }
public BindableCollection LayerConditionVms { get; set; }
public bool KeyboardGridIsVisible => ProposedLayer.LayerType is KeyboardType;
public bool GifGridIsVisible => ProposedLayer.LayerType is KeyboardGifType;
@@ -76,6 +72,8 @@ namespace Artemis.ViewModels.Profiles
}
}
+ public List Animations { get; set; }
+
public LayerModel ProposedLayer
{
get { return _proposedLayer; }
@@ -122,7 +120,7 @@ namespace Artemis.ViewModels.Profiles
public void PreSelect()
{
- SelectedLayerType = LayerTypes.FirstOrDefault(t => t.Name == ProposedLayer.LayerType.Name);
+ SelectedLayerType = Types.FirstOrDefault(t => t.Name == ProposedLayer.LayerType.Name);
ToggleIsEvent();
}
@@ -142,8 +140,7 @@ namespace Artemis.ViewModels.Profiles
}
// Let the layer type handle the viewmodel setup
- LayerPropertiesViewModel = ProposedLayer.LayerType.SetupViewModel(LayerPropertiesViewModel, _layerAnimations,
- _dataModel, ProposedLayer);
+ LayerPropertiesViewModel = ProposedLayer.LayerType.SetupViewModel(this, LayerPropertiesViewModel);
if (oldBrush != null)
ProposedLayer.Properties.Brush = oldBrush;
@@ -161,22 +158,23 @@ namespace Artemis.ViewModels.Profiles
public void AddCondition()
{
var condition = new LayerConditionModel();
- LayerConditionVms.Add(new LayerConditionViewModel(this, condition, DataModelProps));
+ LayerConditionVms.Add(new LayerConditionViewModel(this, condition));
}
public void Apply()
{
LayerPropertiesViewModel?.ApplyProperties();
+
+ Layer.Properties.DynamicProperties.Clear();
+ Layer.Properties.Conditions.Clear();
JsonConvert.PopulateObject(JsonConvert.SerializeObject(ProposedLayer), Layer);
+ foreach (var conditionViewModel in LayerConditionVms)
+ Layer.Properties.Conditions.Add(conditionViewModel.LayerConditionModel);
// TODO: EventPropVM must have layer too
if (EventPropertiesViewModel != null)
Layer.EventProperties = EventPropertiesViewModel.GetAppliedProperties();
-
- Layer.Properties.Conditions.Clear();
- foreach (var conditionViewModel in LayerConditionVms)
- Layer.Properties.Conditions.Add(conditionViewModel.LayerConditionModel);
-
+
// Don't bother checking for a GIF path unless the type is GIF
if (!(Layer.LayerType is KeyboardGifType))
return;
@@ -214,7 +212,7 @@ namespace Artemis.ViewModels.Profiles
// Ignore the children, can't just temporarily add them to the proposed layer because
// that would upset the child layers' relations (sounds like an episode of Dr. Phil amirite?)
- var currentObj = GeneralHelpers.Clone(Layer);
+ var currentObj = Clone(Layer);
currentObj.Children.Clear();
var current = JsonConvert.SerializeObject(currentObj, Formatting.Indented);
var proposed = JsonConvert.SerializeObject(ProposedLayer, Formatting.Indented);