1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-31 17:53:32 +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}; var device = new SurfaceDeviceViewModel(surfaceDevice) {Cursor = Cursors.Hand};
Devices.Add(device); 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}; var device = new SurfaceDeviceViewModel(e.Device) {Cursor = Cursors.Hand};
Devices.Add(device); Devices.Add(device);
device.ZIndex = Devices.IndexOf(device) + 1;
} }
}); });
} }
@ -103,56 +105,47 @@ namespace Artemis.UI.ViewModels.Screens
public void BringToFront(SurfaceDeviceViewModel surfaceDeviceViewModel) public void BringToFront(SurfaceDeviceViewModel surfaceDeviceViewModel)
{ {
var original = surfaceDeviceViewModel.ZIndex; Devices.Move(Devices.IndexOf(surfaceDeviceViewModel), Devices.Count - 1);
surfaceDeviceViewModel.ZIndex = Devices.Count; for (var i = 0; i < Devices.Count; i++)
foreach (var deviceViewModel in Devices)
{ {
if (deviceViewModel.ZIndex >= original && deviceViewModel != surfaceDeviceViewModel) var deviceViewModel = Devices[i];
deviceViewModel.ZIndex--; deviceViewModel.ZIndex = i + 1;
} }
foreach (var deviceViewModel in Devices)
Console.WriteLine(deviceViewModel.ZIndex);
} }
public void BringForward(SurfaceDeviceViewModel surfaceDeviceViewModel) public void BringForward(SurfaceDeviceViewModel surfaceDeviceViewModel)
{ {
var newIndex = Math.Max(Devices.Count, surfaceDeviceViewModel.ZIndex + 1); var currentIndex = Devices.IndexOf(surfaceDeviceViewModel);
var neighbor = Devices.FirstOrDefault(d => d.ZIndex == newIndex); var newIndex = Math.Min(currentIndex + 1, Devices.Count - 1);
if (neighbor != null) Devices.Move(currentIndex, newIndex);
neighbor.ZIndex--;
surfaceDeviceViewModel.ZIndex = newIndex; for (var i = 0; i < Devices.Count; i++)
{
foreach (var deviceViewModel in Devices) var deviceViewModel = Devices[i];
Console.WriteLine(deviceViewModel.ZIndex); deviceViewModel.ZIndex = i + 1;
}
} }
public void SendToBack(SurfaceDeviceViewModel surfaceDeviceViewModel) public void SendToBack(SurfaceDeviceViewModel surfaceDeviceViewModel)
{ {
var original = surfaceDeviceViewModel.ZIndex; Devices.Move(Devices.IndexOf(surfaceDeviceViewModel), 0);
surfaceDeviceViewModel.ZIndex = 1; for (var i = 0; i < Devices.Count; i++)
foreach (var deviceViewModel in Devices)
{ {
if (deviceViewModel.ZIndex <= original && deviceViewModel != surfaceDeviceViewModel) var deviceViewModel = Devices[i];
deviceViewModel.ZIndex++; deviceViewModel.ZIndex = i + 1;
} }
foreach (var deviceViewModel in Devices)
Console.WriteLine(deviceViewModel.ZIndex);
} }
public void SendBackward(SurfaceDeviceViewModel surfaceDeviceViewModel) public void SendBackward(SurfaceDeviceViewModel surfaceDeviceViewModel)
{ {
var newIndex = Math.Max(0, surfaceDeviceViewModel.ZIndex - 1); var currentIndex = Devices.IndexOf(surfaceDeviceViewModel);
var neighbor = Devices.FirstOrDefault(d => d.ZIndex == newIndex); var newIndex = Math.Max(currentIndex - 1, 0);
if (neighbor != null) Devices.Move(currentIndex, newIndex);
neighbor.ZIndex++; for (var i = 0; i < Devices.Count; i++)
{
surfaceDeviceViewModel.ZIndex = newIndex; var deviceViewModel = Devices[i];
deviceViewModel.ZIndex = i + 1;
foreach (var deviceViewModel in Devices) }
Console.WriteLine(deviceViewModel.ZIndex);
} }
#endregion #endregion

View File

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