public AdapterListViewModel(IAdapterScanner scanner,
                                    IUserDialogs dialogs,
                                    IViewModelManager vmManager)
        {
            this.scanner = scanner;
            this.Select  = ReactiveCommand.CreateFromTask <IAdapter>(async adapter =>
            {
                CrossBleAdapter.Current = adapter;
                await vmManager.Push <MainViewModel>();
            });
            this.Scan = ReactiveCommand.Create(() =>
            {
                this.IsBusy = true;
                this.scanner
                .FindAdapters()
                .ObserveOn(RxApp.MainThreadScheduler)
                .Subscribe(
                    this.Adapters.Add,
                    async() =>
                {
                    this.IsBusy = false;
                    switch (this.Adapters.Count)
                    {
                    case 0:
                        dialogs.Alert("No BluetoothLE Adapters Found");
                        break;

                    case 1:
                        CrossBleAdapter.Current = this.Adapters.First();
                        await vmManager.Push <MainViewModel>();
                        break;
                    }
                }
                    );
            },
                                               this.WhenAny(x => x.IsBusy, x => !x.Value));
        }
Example #2
0
        public AdapterListViewModel(INavigationService navigationService,
                                    IAdapterScanner adapterScanner,
                                    IUserDialogs dialogs)
        {
            this.adapterScanner    = adapterScanner;
            this.navigationService = navigationService;

            this.Select = ReactiveCommand.CreateFromTask <IAdapter>(navigationService.NavToAdapter);

            this.Scan = ReactiveCommand.Create(() =>
            {
                this.IsBusy = true;
                adapterScanner
                .FindAdapters()
                .ObserveOn(RxApp.MainThreadScheduler)
                .Subscribe(
                    this.Adapters.Add,
                    ex => dialogs.Alert(ex.ToString(), "Error"),
                    async() =>
                {
                    this.IsBusy = false;
                    switch (this.Adapters.Count)
                    {
                    case 0:
                        dialogs.Alert("No BluetoothLE Adapters Found");
                        break;

                    case 1:
                        var adapter = this.Adapters.First();
                        await navigationService.NavToAdapter(adapter);
                        break;
                    }
                }
                    );
            },
                                               this.WhenAny(x => x.IsBusy, x => !x.Value));
        }