From 7f49d2ae6d7925416886ace1c0cbd39e6ad6dcba Mon Sep 17 00:00:00 2001 From: SpoinkyNL Date: Thu, 17 Oct 2019 00:24:03 +0200 Subject: [PATCH] Added surface editor device sorting --- .../Screens/SurfaceEditorViewModel.cs | 59 ++++++++----------- .../Views/Screens/SurfaceEditorView.xaml | 4 +- 2 files changed, 28 insertions(+), 35 deletions(-) diff --git a/src/Artemis.UI/ViewModels/Screens/SurfaceEditorViewModel.cs b/src/Artemis.UI/ViewModels/Screens/SurfaceEditorViewModel.cs index aa7c090b8..2404e26a2 100644 --- a/src/Artemis.UI/ViewModels/Screens/SurfaceEditorViewModel.cs +++ b/src/Artemis.UI/ViewModels/Screens/SurfaceEditorViewModel.cs @@ -36,6 +36,7 @@ namespace Artemis.UI.ViewModels.Screens { var device = new SurfaceDeviceViewModel(surfaceDevice) {Cursor = Cursors.Hand}; Devices.Add(device); + device.ZIndex = Devices.IndexOf(device) + 1; } } @@ -56,6 +57,7 @@ namespace Artemis.UI.ViewModels.Screens { var device = new SurfaceDeviceViewModel(e.Device) {Cursor = Cursors.Hand}; Devices.Add(device); + device.ZIndex = Devices.IndexOf(device) + 1; } }); } @@ -103,56 +105,47 @@ namespace Artemis.UI.ViewModels.Screens public void BringToFront(SurfaceDeviceViewModel surfaceDeviceViewModel) { - var original = surfaceDeviceViewModel.ZIndex; - surfaceDeviceViewModel.ZIndex = Devices.Count; - foreach (var deviceViewModel in Devices) + Devices.Move(Devices.IndexOf(surfaceDeviceViewModel), Devices.Count - 1); + for (var i = 0; i < Devices.Count; i++) { - if (deviceViewModel.ZIndex >= original && deviceViewModel != surfaceDeviceViewModel) - deviceViewModel.ZIndex--; + var deviceViewModel = Devices[i]; + deviceViewModel.ZIndex = i + 1; } - - foreach (var deviceViewModel in Devices) - Console.WriteLine(deviceViewModel.ZIndex); } public void BringForward(SurfaceDeviceViewModel surfaceDeviceViewModel) { - var newIndex = Math.Max(Devices.Count, surfaceDeviceViewModel.ZIndex + 1); - var neighbor = Devices.FirstOrDefault(d => d.ZIndex == newIndex); - if (neighbor != null) - neighbor.ZIndex--; + var currentIndex = Devices.IndexOf(surfaceDeviceViewModel); + var newIndex = Math.Min(currentIndex + 1, Devices.Count - 1); + Devices.Move(currentIndex, newIndex); - surfaceDeviceViewModel.ZIndex = newIndex; - - foreach (var deviceViewModel in Devices) - Console.WriteLine(deviceViewModel.ZIndex); + for (var i = 0; i < Devices.Count; i++) + { + var deviceViewModel = Devices[i]; + deviceViewModel.ZIndex = i + 1; + } } public void SendToBack(SurfaceDeviceViewModel surfaceDeviceViewModel) { - var original = surfaceDeviceViewModel.ZIndex; - surfaceDeviceViewModel.ZIndex = 1; - foreach (var deviceViewModel in Devices) + Devices.Move(Devices.IndexOf(surfaceDeviceViewModel), 0); + for (var i = 0; i < Devices.Count; i++) { - if (deviceViewModel.ZIndex <= original && deviceViewModel != surfaceDeviceViewModel) - deviceViewModel.ZIndex++; + var deviceViewModel = Devices[i]; + deviceViewModel.ZIndex = i + 1; } - - foreach (var deviceViewModel in Devices) - Console.WriteLine(deviceViewModel.ZIndex); } public void SendBackward(SurfaceDeviceViewModel surfaceDeviceViewModel) { - var newIndex = Math.Max(0, surfaceDeviceViewModel.ZIndex - 1); - var neighbor = Devices.FirstOrDefault(d => d.ZIndex == newIndex); - if (neighbor != null) - neighbor.ZIndex++; - - surfaceDeviceViewModel.ZIndex = newIndex; - - foreach (var deviceViewModel in Devices) - Console.WriteLine(deviceViewModel.ZIndex); + var currentIndex = Devices.IndexOf(surfaceDeviceViewModel); + var newIndex = Math.Max(currentIndex - 1, 0); + Devices.Move(currentIndex, newIndex); + for (var i = 0; i < Devices.Count; i++) + { + var deviceViewModel = Devices[i]; + deviceViewModel.ZIndex = i + 1; + } } #endregion diff --git a/src/Artemis.UI/Views/Screens/SurfaceEditorView.xaml b/src/Artemis.UI/Views/Screens/SurfaceEditorView.xaml index a9b6516a7..2b36d8159 100644 --- a/src/Artemis.UI/Views/Screens/SurfaceEditorView.xaml +++ b/src/Artemis.UI/Views/Screens/SurfaceEditorView.xaml @@ -57,7 +57,7 @@ - + @@ -71,7 +71,7 @@ - +