using MvCamCtrl.NET;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Security.Cryptography;
using System.Windows;
using TeamAAS_VP.Core;
using TeamAAS_VP.Core.Cameras;
using TeamAAS_VP.Enums;
using TeamAAS_VP.Models;
using TeamAAS_VP.Resources.Languages;
namespace TeamAAS_VP.ViewModels.Setting
{
public class EditCameraViewModel : BindableBase, IDialogAware
{
private CameraInfo _Camera;
///
/// 相机
///
public CameraInfo Camera
{
get { return _Camera; }
set { SetProperty(ref _Camera, value); }
}
private ObservableCollection _CameraList = new ObservableCollection();
public ObservableCollection CameraList
{
get { return _CameraList; }
set { SetProperty(ref _CameraList, value); }
}
private CameraInfo _SelectCamera;
///
/// 选中的相机
///
public CameraInfo SelectCamera
{
get { return _SelectCamera; }
set
{
SetProperty(ref _SelectCamera, value);
try
{
if (value!=null && Camera != null)
{
Camera.SerialNumber = value.SerialNumber;
Camera.Model = value.Model;
Camera.ManufacturerName = value.ManufacturerName;
Camera.CameraType = value.CameraType;
Camera.CameraBrand = value.CameraBrand;
Camera.CameraIp = value.CameraIp;
Camera.IsFindByIp = value.IsFindByIp;
}
}
catch (Exception)
{
}
}
}
private DelegateCommand _ConfirmCommand;
public DelegateCommand ConfirmCommand =>
_ConfirmCommand ?? (_ConfirmCommand = new DelegateCommand(ExecuteConfirmCommand));
void ExecuteConfirmCommand()
{
if (string.IsNullOrEmpty(Camera.CameraName))
{
return;
}
if (!FileHelper.CheckFileName(Camera.CameraName))
{
MessageBox.Show(Lang.AddCameraVM_message1, "AAS", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
IDialogParameters parameters = new DialogParameters();
parameters.Add("Camera", Camera);
Tuple rest = new Tuple(false, Camera);
RequestClose?.Invoke(new DialogResult(ButtonResult.OK, parameters));
}
private DelegateCommand _CancelCommand;
public DelegateCommand CancelCommand =>
_CancelCommand ?? (_CancelCommand = new DelegateCommand(ExecuteCancelCommand));
void ExecuteCancelCommand()
{
IDialogParameters parameters = new DialogParameters();
parameters.Add("Camera", Camera);
Tuple rest = new Tuple(false, Camera);
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel, parameters));
}
public EditCameraViewModel()
{
}
public string Title { get; set; } = "修改相机";
public event Action RequestClose;
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
public void OnDialogOpened(IDialogParameters parameters)
{
var cameraBrand = parameters.GetValue("CameraBrand");
Title = Lang.SettingView_Camera_btnEditCamera;
Camera = parameters.GetValue("Camera");
//GlobalCameraModuleTool globalCamera = new GlobalCameraModuleTool();
//CameraInfoList cameraInfoList = globalCamera.ModuParams.GetCameraInfoList();
CameraList.Clear();
CameraInfo[] cameras = null;
if (cameraBrand == CameraBrand.HikRobot_MVS)
{
cameras = MvCamera.GetDevices();
}
else if (cameraBrand == CameraBrand.Basler_Pylon)
{
cameras = BaslerCamera.GetDevices();
}
else if (cameraBrand == CameraBrand.IRayple)
{
cameras = AHuaCamera.GetDevices();
}
else if (cameraBrand == CameraBrand.Cognex)
{
cameras = CognexCamera.GetDevices();
}
else if (cameraBrand == CameraBrand.Galaxy)
{
cameras = GalaxyCamera.GetDevices();
}
CameraList.Clear();
if (cameras != null)
{
foreach (var camera in cameras)
{
CameraList.Add(camera);
}
}
if (Camera.CameraBrand== cameraBrand)
{
SelectCamera = CameraList.FirstOrDefault(c => c.SerialNumber == Camera.SerialNumber);
}
}
}
}