1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Added surface editor device sorting

This commit is contained in:
SpoinkyNL 2019-10-17 00:24:03 +02:00
parent 10bc3f84dd
commit 7f49d2ae6d
2 changed files with 28 additions and 35 deletions

View File

@ -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

View File

@ -57,7 +57,7 @@
<Grid.Background>
<ImageBrush TileMode="Tile" ViewportUnits="Absolute" Viewport="0,0,15,15" ImageSource="/Artemis.UI;component/Resources/tile.png" />
</Grid.Background>
<ItemsControl ItemsSource="{Binding Devices}" ClipToBounds="True" Panel.ZIndex="{Binding Device.ZIndex}">
<ItemsControl ItemsSource="{Binding Devices}" ClipToBounds="True">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
@ -71,7 +71,7 @@
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Width="{Binding Device.Size.Width}" Height="{Binding Device.Size.Height}" s:View.Model="{Binding }">
<ContentControl Width="{Binding Device.Size.Width}" Height="{Binding Device.Size.Height}" s:View.Model="{Binding }" >
<ContentControl.ContextMenu>
<ContextMenu>
<MenuItem Header="Bring to Front">