예제 #1
0
 public DashboardCollection(IObservable <T> inputSequence)
 {
     _roItems      = new ReadOnlyObservableCollection <T>(_items);
     _subscription = inputSequence.Subscribe(
         i => _items.Add(i),
         ex => Status = ViewModelStatus.Error(ex.Message),
         () => Status = ViewModelStatus.Idle);
 }
예제 #2
0
 private IDisposable SubscribeToContact()
 {
     return(_profileDashboard.Contact
            .ObserveOn(_schedulerProvider.Dispatcher)
            .Subscribe(c => Contact = c,
                       ex => ContactStatus = ViewModelStatus.Error(ex.Message),
                       () => ContactStatus = ViewModelStatus.Idle));
 }
예제 #3
0
 public BluetoothSetupViewModel(IBluetoothService bluetoothService, IBluetoothProfileActivator bluetoothProfileActivator, ISchedulerProvider schedulerProvider)
 {
     _bluetoothService          = bluetoothService;
     _bluetoothProfileActivator = bluetoothProfileActivator;
     _schedulerProvider         = schedulerProvider;
     _roDevices             = new ReadOnlyObservableCollection <IBluetoothDevice>(_devices);
     _scanForDevicesCommand = new DelegateCommand(ScanForDevices, CanScanForDevices);
     _status = ViewModelStatus.Error(Resources.Bluetooth_NoDevices_RequiresScan);
     _bluetoothProfileActivator.PropertyChanges(bs => bs.IsEnabled)
     .Subscribe(_ =>
     {
         OnPropertyChanged("IsEnabled");
         _scanForDevicesCommand.RaiseCanExecuteChanged();
     });
 }
예제 #4
0
 private void ScanForDevices()
 {
     _devices.Clear();
     Status = ViewModelStatus.Processing;
     _bluetoothService.ScanForDevices()
     .SubscribeOn(_schedulerProvider.Concurrent)
     .ObserveOn(_schedulerProvider.Dispatcher)
     .Subscribe(
         device => _devices.Add(device),
         ex => { Status = ViewModelStatus.Error(ex.Message); },
         () =>
     {
         Status = _devices.Any()
                         ? ViewModelStatus.Idle
                         : ViewModelStatus.Error(Resources.Bluetooth_NoDevicesFound);
     });
 }