Exemplo n.º 1
0
        public MainWindowViewModel(IStopwatchService service)
        {
            this.service = service;

            Ellapsed = this.service.ObserveProperty(x => x.Ellapsed)
                       .ToReadOnlyReactiveProperty()
                       .AddTo(CompositeDisposable);

            LapTimes = this.service.LapTimes
                       ?.ToReadOnlyReactiveCollection(t => new LapTimeViewModel(this.service.LapTimes.Count, t));

            StartCommand = this.service.ObserveProperty(x => x.IsRunning)
                           .Inverse()
                           .ToReactiveCommand()
                           .AddTo(CompositeDisposable);
            StartCommand.Subscribe(() => this.service.Start()).AddTo(CompositeDisposable);

            StopCommand = this.service.ObserveProperty(x => x.IsRunning)
                          .ToReactiveCommand()
                          .AddTo(CompositeDisposable);
            StopCommand.Subscribe(() => this.service.Stop()).AddTo(CompositeDisposable);

            ResetCommand = new ReactiveCommand().AddTo(CompositeDisposable);
            ResetCommand.Subscribe(() => this.service.Reset()).AddTo(CompositeDisposable);

            LapCommand = this.service.ObserveProperty(x => x.IsRunning)
                         .ToReactiveCommand()
                         .AddTo(CompositeDisposable);
            LapCommand.Subscribe(() => this.service.Lap()).AddTo(CompositeDisposable);
        }
Exemplo n.º 2
0
 /// <summary>
 /// コンストラクタで処理を購読
 /// </summary>
 public MainWindowViewModel()
 {
     StartCommand.Subscribe(async() => await StartPreview());
     StopCommand.Subscribe(_ => StopPreview());
     PhotoCommand = IsStop.ObserveHasErrors.CombineLatest(
         InputText.ObserveHasErrors, (x, y) => !x && !y).ToReactiveCommand();
     OptionCommand.Subscribe(_ => IsOption.Value = !IsOption.Value);
     PhotoCommand.Subscribe(_ => Photo());
     IsPhoto = InputText.Select(x => x.Length != 0).ToReactiveProperty();
 }
        public ReactiveTimerViewModel(ReactiveTimerModel _model)
        {
            Model = _model.AddTo(DisposeCollection);

            ReadOnlyReactiveTimer =
                Observable.Merge(
                    Model.ReactiveTimer,
                    Model.ChangeStop().Select(_ => (long)0)
                    ).ToReadOnlyReactivePropertySlim()
                .AddTo(DisposeCollection);

            StartCommand = Model.CanStart().ToReactiveCommand().AddTo(DisposeCollection);
            StartCommand.Subscribe(start).AddTo(DisposeCollection);

            PauseCommand = Model.CanPause().ToReactiveCommand().AddTo(DisposeCollection);
            PauseCommand.Subscribe(pause).AddTo(DisposeCollection);

            StopCommand = Model.CanStop().ToReactiveCommand().AddTo(DisposeCollection);
            StopCommand.Subscribe(stop).AddTo(DisposeCollection);
        }
Exemplo n.º 4
0
        //private DxxUrl CreateDxxUrl() {
        //    var driver = Driver.Value;
        //    var uri = new Uri(Url.Value);
        //    return new DxxUrl(uri, driver, driver.GetNameFromUri(uri, "link"), IsMain ? "from main" : "from sub");
        //}

        private void InitializeCommands()
        {
            GoBackCommand.Subscribe(() => {
                GoBack();
            });
            GoForwardCommand.Subscribe(() => {
                GoForward();
            });
            ReloadCommand.Subscribe(() => {
                Reload();
            });
            StopCommand.Subscribe(() => {
                Stop();
            });
            BookmarkCommand.Subscribe((v) => {
                if (string.IsNullOrEmpty(v) || !v.StartsWith("http"))
                {
                    IsBookmarked.Value = false;
                    return;
                }
                if (IsBookmarked.Value)
                {
                    Bookmarks.Value.AddBookmark("", v);
                }
                else
                {
                    Bookmarks.Value.RemoveBookmark(v);
                    Url.Value = v;
                }
            });
            NavigateCommand.Subscribe((v) => {
                Navigate(v);
            });
            ClearURLCommand.Subscribe((v) => {
                Url.Value = "";
            });
            AnalyzeCommand.Subscribe((v) => {
                if (v == null)
                {
                    v = Url.Value;
                }
                var aw = new DxxAnalysisWindow(v);
                //aw.Owner = Owner;
                aw.Show();
            });
            CopyCommand.Subscribe((v) => {
                Clipboard.SetData(DataFormats.Text, v);
            });
            DownloadCommand.Subscribe(() => {
                if (IsTarget.Value || IsContainer.Value)
                {
                    DxxDriverManager.Instance.Download(Url.Value, null, "");
                }
            });
            ListingCommand.Subscribe(async() => {
                if (IsContainerList.Value)
                {
                    var uri     = new Uri(Url.Value);
                    var dxxUrl  = new DxxUrl(uri, Driver.Value, Driver.Value.GetNameFromUri(uri), "");
                    var targets = await Driver.Value.LinkExtractor.ExtractTargets(dxxUrl);
                    if (targets != null && targets.Count > 0)
                    {
                        TargetList.Value = new ObservableCollection <DxxTargetInfo>(targets);
                    }
                    else
                    {
                        TargetList.Value?.Clear();
                    }
                }
            });

            SetupDriverCommand.Subscribe(() => {
                DxxDriverManager.Instance.Setup(Driver.Value, Owner);
            });

            FrameSelectCommand.Subscribe((v) => {
                if (IsMain)
                {
                    RequestLoadInSubview.OnNext(v);
                }
                else
                {
                    Navigate(v);
                }
            });
        }