public ZonesSelectionViewModel(Device device, List<Guid> zones, ZoneLogicState zoneLogicState) { Title = "Выбор зон устройства " + device.PresentationAddressAndName; AddCommand = new RelayCommand<object>(OnAdd, CanAdd); RemoveCommand = new RelayCommand<object>(OnRemove, CanRemove); AddAllCommand = new RelayCommand(OnAddAll, CanAddAll); RemoveAllCommand = new RelayCommand(OnRemoveAll, CanRemoveAll); Zones = zones; TargetZones = new ObservableCollection<ZoneViewModel>(); SourceZones = new ObservableCollection<ZoneViewModel>(); var zoneTypeFilter = ZoneType.Fire; switch (zoneLogicState) { case ZoneLogicState.Alarm: case ZoneLogicState.GuardSet: case ZoneLogicState.GuardUnSet: case ZoneLogicState.PCN: case ZoneLogicState.Lamp: zoneTypeFilter = ZoneType.Guard; break; } List<Zone> availableZones = FiresecManager.FiresecConfiguration.GetChannelZones(device); if (device.Driver.DriverType == DriverType.Exit) { availableZones = FiresecManager.FiresecConfiguration.GetPanelZones(device); } foreach (var zone in availableZones) { var zoneViewModel = new ZoneViewModel(zone); if (zone.ZoneType != zoneTypeFilter) { continue; } if ((zoneLogicState == ZoneLogicState.MPTAutomaticOn) || (zoneLogicState == ZoneLogicState.MPTOn) || (zoneLogicState == ZoneLogicState.Firefighting)) { if (!zone.DevicesInZone.Any(x => x.Driver.DriverType == DriverType.MPT)) continue; //if (device.ParentPanel.Children.Any(x => x.Driver.DriverType == DriverType.MPT && x.ZoneUID == zone.UID) == false) //{ // continue; //} } if (Zones.Contains(zone.UID)) TargetZones.Add(zoneViewModel); else SourceZones.Add(zoneViewModel); } SelectedTargetZone = TargetZones.FirstOrDefault(); SelectedSourceZone = SourceZones.FirstOrDefault(); }
public ZoneLogicDevicesSelectionViewModel(Device device, List<Device> selectedDevices, ZoneLogicState zoneLogicState) { Title = "Выбор устройств"; AddCommand = new RelayCommand(OnAdd, CanAdd); RemoveCommand = new RelayCommand(OnRemove, CanRemove); Device = device; ZoneLogicState = zoneLogicState; SelectedDevices = selectedDevices; InitializeDevices(); InitializeAvailableDevices(); }
public static ZoneLogicState GetEventTypeByCode(byte code) { ZoneLogicState zoneLogicState; switch (code) { case 0x01: zoneLogicState = ZoneLogicState.MPTAutomaticOn; break; case 0x02: zoneLogicState = ZoneLogicState.Alarm; break; case 0x03: zoneLogicState = ZoneLogicState.GuardSet; break; case 0x04: zoneLogicState = ZoneLogicState.Fire; break; case 0x05: zoneLogicState = ZoneLogicState.GuardUnSet; break; case 0x06: zoneLogicState = ZoneLogicState.PCN; break; //case 0x07: Меандр? case 0x08: zoneLogicState = ZoneLogicState.Failure; break; case 0x09: zoneLogicState = ZoneLogicState.PumpStationOn; break; case 0x0A: zoneLogicState = ZoneLogicState.PumpStationAutomaticOff; break; case 0x0B: zoneLogicState = ZoneLogicState.AM1TOn; break; //case 0x10: Выходная задержка? case 0x20: zoneLogicState = ZoneLogicState.Attention; break; case 0x40: zoneLogicState = ZoneLogicState.MPTOn; break; case 0x80: zoneLogicState = ZoneLogicState.Firefighting; break; default: zoneLogicState = new ZoneLogicState(); break; } return zoneLogicState; }
int ZoneLogicStateToInt(ZoneLogicState zoneLogicState) { switch (zoneLogicState) { case ZoneLogicState.MPTAutomaticOn: return 0x01; case ZoneLogicState.Alarm: return 0x02; case ZoneLogicState.GuardSet: return 0x03; case ZoneLogicState.GuardUnSet: return 0x05; case ZoneLogicState.PCN: return 0x06; case ZoneLogicState.Fire: return 0x04; case ZoneLogicState.Failure: return 0x08; case ZoneLogicState.PumpStationOn: return 0x09; case ZoneLogicState.PumpStationAutomaticOff: return 0x0A; case ZoneLogicState.Attention: return 0x20; case ZoneLogicState.MPTOn: return 0x40; case ZoneLogicState.Firefighting: return 0x80; case ZoneLogicState.AM1TOn: return 0x0B; case ZoneLogicState.ShuzOn: return 0x0D; } return 0; }
public void OnCurrentClauseStateChanged(ZoneLogicState zoneLogicState) { _isBlocked = ((zoneLogicState == ZoneLogicState.Lamp) || (zoneLogicState == ZoneLogicState.PCN)); if (_isBlocked) { var selectedClause = Clauses.FirstOrDefault(x => x.SelectedState == zoneLogicState); Clauses.Clear(); Clauses.Add(selectedClause); } }