private void AddSwapCameraMenuItems(List <Control> itemsList, LayoutSlot slot) { //-- Add the context menu items var menuItem = new MenuItem { Header = "Swap this camera", }; itemsList.Add(new Separator()); itemsList.Add(menuItem); foreach (var optionalCamera in slot.OptionalCameras) { var swapItem = new MenuItem { Header = optionalCamera.Camera.Name, Tag = optionalCamera, }; swapItem.Click += (sender, e) => { if (this.LayoutHolder.Content is LayoutControl existingLayout) { existingLayout.SwapCamera(slot, optionalCamera); } }; menuItem.Items.Add(swapItem); } }
private void AddCycleCameraMenuItems(List <Control> itemsList, LayoutSlot slot) { itemsList.Add(new Separator()); //-- Add the context menu items var menuItem = new MenuItem { Header = "Cycle Options", }; itemsList.Add(menuItem); foreach (var optionalCamera in slot.OptionalCameras) { var chooseItem = new MenuItem { Header = optionalCamera.Camera.Name, Tag = optionalCamera, IsCheckable = true, IsChecked = slot.CyclingImages.Any(i => i.Camera.ID == optionalCamera.OptionalCameraID), }; chooseItem.Click += (sender, e) => { slot.ToggleCycleCamera(optionalCamera); }; menuItem.Items.Add(chooseItem); } }
public LayoutControl(Layout layout, IPAddress multicastAddress) { //-- Save the layout ID this._layout = layout; this._multicastAddress = multicastAddress; //-- Retrieve the cameras in the layout var cameras = DBHelper.FetchCamerasForLayout(layout.ID); var optionalCameras = DBHelper.FetchUserChoiceForLayout(layout.ID); //-- Set the row and column definitions for (var i = 0; i < this._layout.Rows; i++) { this.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star), }); } for (var i = 0; i < this._layout.Columns; i++) { this.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star), }); } //-- Add the images foreach (var camera in cameras) { //-- Set the optional cameras for the camera camera.UserChoices.AddRange(optionalCameras.Where(oc => oc.CameraID == camera.CameraID).OrderBy(oc => oc.Camera.Name)); //-- Create the slot for the camera var slot = new LayoutSlot(this._multicastAddress); slot.OriginalCamera = camera; Grid.SetRow(slot, camera.RowIndex - 1); Grid.SetRowSpan(slot, camera.RowSpan); Grid.SetColumn(slot, camera.ColumnIndex - 1); Grid.SetColumnSpan(slot, camera.ColumnSpan); slot.CreateInitialImages(); this._slots.Add(slot); this.Children.Add(slot); } }
public void SwapCamera(LayoutSlot slot, LayoutCameraUserChoice newCamera) { slot.SwapCamera(newCamera); }