public RegisterSensorWindowViewModel() { var sensorRegistry = ((App)App.Current).SensorRegistry; this.RegisteredSensors = sensorRegistry.Sensors.ToReadOnlyReactiveCollection( sensorInformation => new SensorInformationViewModel( sensorInformation, vm => { }, vm => { sensorRegistry.UnregisterSensor(sensorInformation); })); this.UpdateUnregisteredSensorsCommand = (new ReactiveCommand()).AddTo(this.disposables); var sensorEnumerator = new Model.SensorEnumerator(); var unregisteredSensorsObservable = this.UpdateUnregisteredSensorsCommand .Select(_ => sensorEnumerator.Enumerate().SubscribeOnUIDispatcher()) .Switch() .Where(sensor => !sensorRegistry.IsRegistered(sensor)) .Select(sensor => new SensorInformationViewModel( sensor, vm => { sensorRegistry.RegisterSensor(sensor); this.IsUnregisteredSensorsShown.Value = false; }, vm => { })); this.UnregisteredSensors = unregisteredSensorsObservable.ToReadOnlyReactiveCollection(this.UpdateUnregisteredSensorsCommand.ToUnit()).AddTo(this.disposables); (this.IsUnregisteredSensorsShown = new ReactiveProperty <bool>()).AddTo(this.disposables); this.ShowUnregisteredSensorsCommand = new ReactiveCommand(); this.ShowUnregisteredSensorsCommand .Do(_ => { this.UpdateUnregisteredSensorsCommand.Execute(); this.IsUnregisteredSensorsShown.Value = true; }) .CatchIgnore() .Subscribe() .AddTo(this.disposables); }
public RegisterSensorWindowViewModel() { var sensorRegistry = ((App)App.Current).SensorRegistry; this.RegisteredSensors = sensorRegistry.Sensors.ToReadOnlyReactiveCollection( sensorInformation => new SensorInformationViewModel( sensorInformation, vm => { }, vm => { sensorRegistry.UnregisterSensor(sensorInformation); })); this.UpdateUnregisteredSensorsCommand = (new ReactiveCommand()).AddTo(this.disposables); var sensorEnumerator = new Model.SensorEnumerator(); var unregisteredSensorsObservable = this.UpdateUnregisteredSensorsCommand .Select(_ => sensorEnumerator.Enumerate().SubscribeOnUIDispatcher()) .Switch() .Where(sensor => !sensorRegistry.IsRegistered(sensor)) .Select(sensor => new SensorInformationViewModel( sensor, vm => { sensorRegistry.RegisterSensor(sensor); this.IsUnregisteredSensorsShown.Value = false; }, vm => { })); this.UnregisteredSensors = unregisteredSensorsObservable.ToReadOnlyReactiveCollection(this.UpdateUnregisteredSensorsCommand.ToUnit()).AddTo(this.disposables); (this.IsUnregisteredSensorsShown = new ReactiveProperty<bool>()).AddTo(this.disposables); this.ShowUnregisteredSensorsCommand = new ReactiveCommand(); this.ShowUnregisteredSensorsCommand .Do(_ => { this.UpdateUnregisteredSensorsCommand.Execute(); this.IsUnregisteredSensorsShown.Value = true; }) .CatchIgnore() .Subscribe() .AddTo(this.disposables); }