コード例 #1
0
 private void OnUrlPropertiesChanged()
 {
     RaisePropertyChanged(nameof(StartRecordingURL));
     RaisePropertyChanged(nameof(StopRecordingURL));
     StartRecordingCommand.RaiseCanExecuteChanged();
     StopRecordingCommand.RaiseCanExecuteChanged();
 }
コード例 #2
0
        private void ViewModelPropertyChanged(object sender, PropertyChangedEventArgs e) =>
        OnDispatchEvent(() =>
        {
            switch (e.PropertyName)
            {
            case "StreamingHost":
                OnUrlPropertiesChanged();
                break;

            case "ApplicationName":
                OnUrlPropertiesChanged();
                break;

            case "StreamName":
                OnUrlPropertiesChanged();
                break;

            case "Username":
                OnUrlPropertiesChanged();
                break;

            case "Credentials":
                OnUrlPropertiesChanged();
                break;

            case "IsBroadcasting":
                StartRecordingCommand.RaiseCanExecuteChanged();
                StopRecordingCommand.RaiseCanExecuteChanged();
                if (this._mainViewModel.IsBroadcasting)
                {
                    break;
                }

                IsRecording = false;
                break;
            }
        });
コード例 #3
0
        public MainWindowViewModel()
        {
            _commandService       = new PaletteCommandService();
            CommandPaletteCommand = new ReactiveCommand();
            CommandPaletteCommand.Subscribe(
                _ =>
            {
                if (!IsCommandPaletteOpen.Value)
                {
                    IsCommandPaletteOpen.Value = true;
                }
                else
                {
                    IsCommandPaletteOpen.Value = false;
                }
            });
            IsCommandPaletteOpen = new ReactiveProperty <bool>();

            State = new ReactiveProperty <TargetState>();

            TargetList = new ReactiveCollection <string>();
            TargetList.Add(new string("default"));
            TargetList.Add(new string("TargetA"));
            TargetList.Add(new string("TargetB"));
            TargetList.Add(new string("TargetC"));

            ConnectCommand = State
                             .Select(x => x == TargetState.NotConnected)
                             .ToReactiveCommand <string>()
                             .AddTo(Disposable);
            ConnectCommand.Subscribe(
                (target) =>
            {
                State.Value = TargetState.Connected;
            });

            var targetItemList = new List <IPaletteSearchItem>();

            foreach (var target in TargetList)
            {
                var targetItem = PaletteParameterFactory.CreateSearchItem(target, target.ToString());
                targetItemList.Add(targetItem);
            }
            var targetParameter = PaletteParameterFactory.CreateSearchParameter(targetItemList, "Target", "接続先を指定してください");

            _commandService.AddCommand(ConnectCommand,
                                       nameof(ConnectCommand),
                                       "ターゲットと接続します",
                                       (paramList) =>
            {
                return(paramList.First());
            },
                                       targetParameter);

            DisconnectCommand = State
                                .Select(x => x != TargetState.NotConnected)
                                .ToReactiveCommand()
                                .AddTo(Disposable);
            DisconnectCommand.Subscribe(
                _ =>
            {
                State.Value = TargetState.NotConnected;
            });
            _commandService.AddCommand(DisconnectCommand, nameof(DisconnectCommand), "ターゲットとの接続を切断します");
            Volume              = new ReactiveProperty <float>().AddTo(Disposable);
            Volume.Value        = 0.5f;
            ChangeVolumeCommand = new ReactiveCommand <float>();
            ChangeVolumeCommand.Subscribe((volume) =>
            {
                Volume.Value = volume;
            });
            var volumeParameter = PaletteParameterFactory.CreateMinMaxParameter(0.0f, 1.0f, "Volume", "ボリュームを変更します (0.0 - 1.0)");

            _commandService.AddCommand(ChangeVolumeCommand,
                                       nameof(ChangeVolumeCommand),
                                       "プレイバックボリュームを変更します",
                                       (paramList) =>
            {
                return(paramList.First());
            },
                                       volumeParameter);
            RecordingDirectory = new ReactiveProperty <string>().AddTo(Disposable);
            SelectRecordingDirectoryCommand = State
                                              .Select(x => x != TargetState.Recording)
                                              .ToReactiveCommand()
                                              .AddTo(Disposable);
            SelectRecordingDirectoryCommand.Subscribe(
                _ =>
            {
                MessageBox.Show("SelectCommand");
            });
            _commandService.AddCommand(SelectRecordingDirectoryCommand, nameof(SelectRecordingDirectoryCommand), "録音の保存先を選択します");
            StartRecordingCommand = State
                                    .Select(x => x == TargetState.Connected)
                                    .ToReactiveCommand()
                                    .AddTo(Disposable);
            StartRecordingCommand.Subscribe(
                _ =>
            {
                State.Value = TargetState.Recording;
            });
            _commandService.AddCommand(StartRecordingCommand, nameof(StartRecordingCommand), "録音を開始します");
            StopRecordingCommand = State
                                   .Select(x => x == TargetState.Recording)
                                   .ToReactiveCommand()
                                   .AddTo(Disposable);
            StopRecordingCommand.Subscribe(
                _ =>
            {
                State.Value = TargetState.Connected;
            });
            _commandService.AddCommand(StopRecordingCommand, nameof(StopRecordingCommand), "録音を終了します");
        }