DeviceManagerViewModel.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. namespace DeviceManagement.ViewModels;
  2. public partial class DeviceManagerViewModel : ObservableObject
  3. {
  4. public DeviceManagerViewModel(DeviceCollection deviceCollection, IDialogService dialogService, IUICaller caller)
  5. {
  6. this._DeviceCollection = deviceCollection;
  7. this._DialogService = dialogService;
  8. this._UICaller = caller;
  9. deviceCollection.DeviceList.CollectionChanged += DeviceList_CollectionChanged;
  10. this.DeviceList_CollectionChanged(deviceCollection.DeviceList, null);
  11. }
  12. private void DeviceList_CollectionChanged(object? sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs? e)
  13. {
  14. if (sender is not ObservableDictionary<Guid, DeviceInfo_VM> deviceList)
  15. return;
  16. this.Devices.Clear();
  17. foreach (DeviceInfo_VM device in deviceList.Values)
  18. {
  19. this.Devices[device.DeviceModel] ??= [];
  20. this.Devices[device.DeviceModel].Add(device);
  21. }
  22. }
  23. private readonly IDialogService _DialogService;
  24. private readonly DeviceCollection _DeviceCollection;
  25. private readonly IUICaller _UICaller;
  26. [ObservableProperty]
  27. private ObservableDictionary<DeviceModel, ObservableCollection<DeviceInfo_VM>> _Devices = [];
  28. [RelayCommand]
  29. private void CheckDetail(DeviceInfo_VM deviceInfo)
  30. {
  31. DirectoryInfo directory = new(AppDomain.CurrentDomain.BaseDirectory);
  32. if (directory.Parent is not DirectoryInfo mainFolder)
  33. {
  34. MessageBox.Show("Folder not exist");
  35. return;
  36. }
  37. string path = Path.Combine(mainFolder.FullName, "Analizer");
  38. try
  39. {
  40. object o = deviceInfo.DeviceModel switch
  41. {
  42. DeviceModel.JetKepler => Process.Start(Path.Combine(path, "Kepler", "KeplerAnalizer.exe")),
  43. DeviceModel.Proxima => Process.Start(Path.Combine(path, "Proxima", "ProximaAnalizer.exe")),
  44. _ => MessageBox.Show("Undefined Type")
  45. };
  46. }
  47. catch
  48. {
  49. MessageBox.Show("Folder not exist");
  50. }
  51. }
  52. [RelayCommand]
  53. private void Remote(DeviceInfo_VM deviceInfo)
  54. {
  55. //string path = Path.Combine(System.Environment.CurrentDirectory, "Analizer");
  56. try
  57. {
  58. object o = deviceInfo.DeviceModel switch
  59. {
  60. //DeviceModel.JetKepler => Process.Start(Path.Combine(path, "Kepler", "KeplerAnalizer.exe")),
  61. DeviceModel.Proxima => Process.Start(@"E:\Furnace\Furnace\FurnaceUI\FurnaceUI.exe"),
  62. _ => MessageBox.Show("Undefined Type")
  63. };
  64. }
  65. catch
  66. {
  67. }
  68. }
  69. [RelayCommand]
  70. private async Task Delete(DeviceInfo_VM deviceInfo)
  71. {
  72. if (deviceInfo.Guid is null || deviceInfo.Guid == Guid.Empty)
  73. return;
  74. MessageBoxResult result = MessageBox.Show($"确认删除 {deviceInfo.DeviceModel}-{deviceInfo.DeviceName} ?", "确认删除", MessageBoxButton.YesNo, MessageBoxImage.Question);
  75. if (result != MessageBoxResult.Yes)
  76. return;
  77. await this._UICaller.RemoveDevice(deviceInfo.Guid.Value);
  78. await this.Refresh();
  79. //this._DeviceCollection.DeviceList.Remove(deviceInfo.Guid.Value);
  80. //MessageBox.Show($"{deviceInfo.DeviceModel}-{deviceInfo.DeviceName} 已删除");
  81. }
  82. [RelayCommand]
  83. private void Setting(DeviceInfo_VM deviceInfo)
  84. {
  85. IDialogParameters para = new DialogParameters() { { "Device", deviceInfo } };
  86. this._DialogService.Show("EditDevice", para, null);
  87. }
  88. [RelayCommand]
  89. private async Task Refresh()
  90. {
  91. IEnumerable<DeviceInfo> devices = await this._UICaller.RequestDeviceLists();
  92. if (devices is null || !devices.Any())
  93. return;
  94. this._DeviceCollection.DeviceList.Clear();
  95. foreach (DeviceInfo device in devices)
  96. {
  97. if (device.Guid is null)
  98. continue;
  99. this._DeviceCollection.DeviceList[device.Guid.Value] = device.Adapt<DeviceInfo_VM>();
  100. }
  101. }
  102. }