diff options
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs | 222 |
1 files changed, 140 insertions, 82 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs index ee5e0e39c..305d7a37f 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs @@ -81,6 +81,20 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels set { _selectedWinderTypes = value; RaisePropertyChangedAuto(); } } + private SelectedObjectCollection<HardwareSpeedSensorType> _speedSensorTypes; + public SelectedObjectCollection<HardwareSpeedSensorType> SpeedSensorTypes + { + get { return _speedSensorTypes; } + set { _speedSensorTypes = value; RaisePropertyChangedAuto(); } + } + + private ObservableCollection<HardwareSpeedSensorType> _selectedSpeedSensorTypes; + public ObservableCollection<HardwareSpeedSensorType> SelectedSpeedSensorTypes + { + get { return _selectedSpeedSensorTypes; } + set { _selectedSpeedSensorTypes = value; RaisePropertyChangedAuto(); } + } + private HardwareVersion _selectedVersion; public HardwareVersion SelectedVersion { @@ -209,6 +223,22 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels SelectedHardwareObject = hardwareObj; } } + else if (SelectedHardwareObjectType is SelectedObject<HardwareSpeedSensorType>) + { + var type = (SelectedHardwareObjectType as SelectedObject<HardwareSpeedSensorType>).Data; + var hardwareObj = CurrentVersion.HardwareSpeedSensors.SingleOrDefault(x => x.HardwareSpeedSensorType == type); + + if (hardwareObj != null) + { + SelectedHardwareObject = hardwareObj; + } + else + { + hardwareObj = new HardwareSpeedSensor() { HardwareSpeedSensorType = type }; + CurrentVersion.HardwareSpeedSensors.Add(hardwareObj); + SelectedHardwareObject = hardwareObj; + } + } } } @@ -220,6 +250,7 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels SelectedDancerTypes = new ObservableCollection<HardwareDancerType>(); SelectedPidControlTypes = new ObservableCollection<HardwarePidControlType>(); SelectedWinderTypes = new ObservableCollection<HardwareWinderType>(); + SelectedSpeedSensorTypes = new ObservableCollection<HardwareSpeedSensorType>(); } else { @@ -227,12 +258,14 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels SelectedDancerTypes = version.HardwareDancers.Select(x => x.HardwareDancerType).ToObservableCollection(); SelectedPidControlTypes = version.HardwarePidControls.Select(x => x.HardwarePidControlType).ToObservableCollection(); SelectedWinderTypes = version.HardwareWinders.Select(x => x.HardwareWinderType).ToObservableCollection(); + SelectedSpeedSensorTypes = version.HardwareSpeedSensors.Select(x => x.HardwareSpeedSensorType).ToObservableCollection(); } MotorTypes = new SelectedObjectCollection<HardwareMotorType>(Adapter.HardwareMotorTypes, SelectedMotorTypes); DancerTypes = new SelectedObjectCollection<HardwareDancerType>(Adapter.HardwareDancerTypes, SelectedDancerTypes); PidControlTypes = new SelectedObjectCollection<HardwarePidControlType>(Adapter.HardwarePidControlTypes, SelectedPidControlTypes); WinderTypes = new SelectedObjectCollection<HardwareWinderType>(Adapter.HardwareWinderTypes, SelectedWinderTypes); + SpeedSensorTypes = new SelectedObjectCollection<HardwareSpeedSensorType>(Adapter.HardwareSpeedSensorTypes, SelectedSpeedSensorTypes); } private void OnSelectedVersionChanged() @@ -280,116 +313,141 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels { using (_notification.PushTaskItem("Saving hardware version...")) { - HardwareVersion realVersion = null; - - if (_isNew) + await Task.Factory.StartNew(() => { - realVersion = CurrentVersion.Clone(); + HardwareVersion realVersion = null; - realVersion.HardwareMotors.ToList().Where(x => !SelectedMotorTypes.Contains(x.HardwareMotorType)).ToList().ForEach(x => realVersion.HardwareMotors.Remove(x)); - realVersion.HardwareDancers.ToList().Where(x => !SelectedDancerTypes.Contains(x.HardwareDancerType)).ToList().ForEach(x => realVersion.HardwareDancers.Remove(x)); - realVersion.HardwarePidControls.ToList().Where(x => !SelectedPidControlTypes.Contains(x.HardwarePidControlType)).ToList().ForEach(x => realVersion.HardwarePidControls.Remove(x)); - realVersion.HardwareWinders.ToList().Where(x => !SelectedWinderTypes.Contains(x.HardwareWinderType)).ToList().ForEach(x => realVersion.HardwareWinders.Remove(x)); - } - else - { - realVersion = Adapter.HardwareVersions.SingleOrDefault(x => x.Guid == SelectedVersion.Guid); + if (_isNew) + { + realVersion = CurrentVersion.Clone(); - realVersion.Version = CurrentVersion.Version; - realVersion.Name = CurrentVersion.Name; - realVersion.HardwareDancers.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); - realVersion.HardwareMotors.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); - realVersion.HardwarePidControls.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); - realVersion.HardwareWinders.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); + realVersion.HardwareMotors.ToList().Where(x => !SelectedMotorTypes.Contains(x.HardwareMotorType)).ToList().ForEach(x => realVersion.HardwareMotors.Remove(x)); + realVersion.HardwareDancers.ToList().Where(x => !SelectedDancerTypes.Contains(x.HardwareDancerType)).ToList().ForEach(x => realVersion.HardwareDancers.Remove(x)); + realVersion.HardwarePidControls.ToList().Where(x => !SelectedPidControlTypes.Contains(x.HardwarePidControlType)).ToList().ForEach(x => realVersion.HardwarePidControls.Remove(x)); + realVersion.HardwareWinders.ToList().Where(x => !SelectedWinderTypes.Contains(x.HardwareWinderType)).ToList().ForEach(x => realVersion.HardwareWinders.Remove(x)); + realVersion.HardwareSpeedSensors.ToList().Where(x => !SelectedSpeedSensorTypes.Contains(x.HardwareSpeedSensorType)).ToList().ForEach(x => realVersion.HardwareSpeedSensors.Remove(x)); + } + else + { + realVersion = Adapter.HardwareVersions.SingleOrDefault(x => x.Guid == SelectedVersion.Guid); - realVersion.HardwareDancers.Clear(); - realVersion.HardwareMotors.Clear(); - realVersion.HardwarePidControls.Clear(); - realVersion.HardwareWinders.Clear(); + realVersion.Version = CurrentVersion.Version; + realVersion.Name = CurrentVersion.Name; - foreach (var type in SelectedDancerTypes) - { - var item = CurrentVersion.HardwareDancers.SingleOrDefault(x => x.HardwareDancerType == type); - if (item != null) - { - item.HardwareVersionGuid = realVersion.Guid; - realVersion.HardwareDancers.Add(item); - } - else + realVersion.HardwareDancers.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); + realVersion.HardwareMotors.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); + realVersion.HardwarePidControls.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); + realVersion.HardwareWinders.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); + realVersion.HardwareSpeedSensors.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); + + realVersion.HardwareDancers.Clear(); + realVersion.HardwareMotors.Clear(); + realVersion.HardwarePidControls.Clear(); + realVersion.HardwareWinders.Clear(); + realVersion.HardwareSpeedSensors.Clear(); + + foreach (var type in SelectedDancerTypes) { - realVersion.HardwareDancers.Add(new HardwareDancer() + var item = CurrentVersion.HardwareDancers.SingleOrDefault(x => x.HardwareDancerType == type); + if (item != null) + { + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwareDancers.Add(item); + } + else { - HardwareVersionGuid = realVersion.Guid, - HardwareDancerType = type - }); + realVersion.HardwareDancers.Add(new HardwareDancer() + { + HardwareVersionGuid = realVersion.Guid, + HardwareDancerType = type + }); + } } - } - foreach (var type in SelectedMotorTypes) - { - var item = CurrentVersion.HardwareMotors.SingleOrDefault(x => x.HardwareMotorType == type); - if (item != null) + foreach (var type in SelectedMotorTypes) { - item.HardwareVersionGuid = realVersion.Guid; - realVersion.HardwareMotors.Add(item); - } - else - { - realVersion.HardwareMotors.Add(new HardwareMotor() + var item = CurrentVersion.HardwareMotors.SingleOrDefault(x => x.HardwareMotorType == type); + if (item != null) + { + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwareMotors.Add(item); + } + else { - HardwareVersionGuid = realVersion.Guid, - HardwareMotorType = type - }); + realVersion.HardwareMotors.Add(new HardwareMotor() + { + HardwareVersionGuid = realVersion.Guid, + HardwareMotorType = type + }); + } } - } - foreach (var type in SelectedPidControlTypes) - { - var item = CurrentVersion.HardwarePidControls.SingleOrDefault(x => x.HardwarePidControlType == type); - if (item != null) - { - item.HardwareVersionGuid = realVersion.Guid; - realVersion.HardwarePidControls.Add(item); - } - else + foreach (var type in SelectedPidControlTypes) { - realVersion.HardwarePidControls.Add(new HardwarePidControl() + var item = CurrentVersion.HardwarePidControls.SingleOrDefault(x => x.HardwarePidControlType == type); + if (item != null) { - HardwareVersionGuid = realVersion.Guid, - HardwarePidControlType = type - }); + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwarePidControls.Add(item); + } + else + { + realVersion.HardwarePidControls.Add(new HardwarePidControl() + { + HardwareVersionGuid = realVersion.Guid, + HardwarePidControlType = type + }); + } } - } - foreach (var type in SelectedWinderTypes) - { - var item = CurrentVersion.HardwareWinders.SingleOrDefault(x => x.HardwareWinderType == type); - if (item != null) + foreach (var type in SelectedWinderTypes) { - item.HardwareVersionGuid = realVersion.Guid; - realVersion.HardwareWinders.Add(item); + var item = CurrentVersion.HardwareWinders.SingleOrDefault(x => x.HardwareWinderType == type); + if (item != null) + { + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwareWinders.Add(item); + } + else + { + realVersion.HardwareWinders.Add(new HardwareWinder() + { + HardwareVersionGuid = realVersion.Guid, + HardwareWinderType = type + }); + } } - else + + foreach (var type in SelectedSpeedSensorTypes) { - realVersion.HardwareWinders.Add(new HardwareWinder() + var item = CurrentVersion.HardwareSpeedSensors.SingleOrDefault(x => x.HardwareSpeedSensorType == type); + if (item != null) { - HardwareVersionGuid = realVersion.Guid, - HardwareWinderType = type - }); + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwareSpeedSensors.Add(item); + } + else + { + realVersion.HardwareSpeedSensors.Add(new HardwareSpeedSensor() + { + HardwareVersionGuid = realVersion.Guid, + HardwareSpeedSensorType = type + }); + } } } - } - if (_isNew) - { - Adapter.Context.HardwareVersions.Add(realVersion); - } + if (_isNew) + { + Adapter.Context.HardwareVersions.Add(realVersion); + } - await realVersion.SaveAsync(Adapter.Context); + realVersion.Save(Adapter.Context); - SelectedVersion = Adapter.HardwareVersions.SingleOrDefault(x => x.Guid == realVersion.Guid); + SelectedVersion = Adapter.HardwareVersions.SingleOrDefault(x => x.Guid == realVersion.Guid); + }); } } } |
