public QueueTitlesWindowViewModel() { this.main = Ioc.Get <MainViewModel>(); this.PickersService = Ioc.Get <PickersService>(); this.windowManager = Ioc.Get <IWindowManager>(); this.selectedTitles = new ReactiveList <TitleSelectionViewModel>(); this.titleStartOverrideEnabled = Config.QueueTitlesUseTitleOverride; this.titleStartOverride = Config.QueueTitlesTitleOverride; this.nameOverrideEnabled = Config.QueueTitlesUseNameOverride; this.nameOverride = Config.QueueTitlesNameOverride; this.titles = new ReactiveList <TitleSelectionViewModel>(); this.RefreshTitles(); this.Play = ReactiveCommand.Create(MvvmUtilities.CreateConstantObservable(Players.Installed.Count > 0)); this.Play.Subscribe(_ => this.PlayImpl()); this.AddToQueue = ReactiveCommand.Create(); this.AddToQueue.Subscribe(_ => this.AddToQueueImpl()); this.main.WhenAnyValue(x => x.SourceData) .Skip(1) .Subscribe(_ => { this.RefreshTitles(); }); this.PickersService.WhenAnyValue(x => x.SelectedPicker.Picker.TitleRangeSelectEnabled) .Skip(1) .Subscribe(_ => { this.SetSelectedFromRange(); }); this.PickersService.WhenAnyValue(x => x.SelectedPicker.Picker.TitleRangeSelectStartMinutes) .Skip(1) .Subscribe(_ => { this.SetSelectedFromRange(); }); this.PickersService.WhenAnyValue(x => x.SelectedPicker.Picker.TitleRangeSelectEndMinutes) .Skip(1) .Subscribe(_ => { this.SetSelectedFromRange(); }); this.selectedTitles.CountChanged .Select(count => count == 1) .ToProperty(this, x => x.TitleDetailsVisible, out this.titleDetailsVisible, initialValue: false); this.selectedTitles.CollectionChanged += (sender, args) => { if (this.selectedTitles.Count == 1) { SourceTitle title = this.selectedTitles[0].Title; // Do preview var previewProfile = new VCProfile { CustomCropping = true, Cropping = new VCCropping(), VideoEncoder = "x264", AudioEncodings = new List <AudioEncoding>() }; var previewJob = new VCJob { RangeType = VideoRangeType.All, Title = title.Index, EncodingProfile = previewProfile }; this.PreviewImage = this.main.ScanInstance.GetPreview(previewProfile.CreatePreviewSettings(title), 2); this.RaisePropertyChanged(nameof(this.TitleText)); } }; }
public QueueTitlesWindowViewModel() { this.main = StaticResolver.Resolve <MainViewModel>(); this.PickersService = StaticResolver.Resolve <PickersService>(); this.windowManager = StaticResolver.Resolve <IWindowManager>(); this.titleStartOverrideEnabled = Config.QueueTitlesUseTitleOverride; this.titleStartOverride = Config.QueueTitlesTitleOverride; this.nameOverrideEnabled = Config.QueueTitlesUseNameOverride; this.nameOverride = Config.QueueTitlesNameOverride; this.RefreshTitles(); this.main.WhenAnyValue(x => x.SourceData) .Skip(1) .Subscribe(_ => { this.RefreshTitles(); }); this.PickersService.WhenAnyValue(x => x.SelectedPicker.Picker.TitleRangeSelectEnabled) .Skip(1) .Subscribe(_ => { this.SetSelectedFromRange(); }); this.PickersService.WhenAnyValue(x => x.SelectedPicker.Picker.TitleRangeSelectStartMinutes) .Skip(1) .Subscribe(_ => { this.SetSelectedFromRange(); }); this.PickersService.WhenAnyValue(x => x.SelectedPicker.Picker.TitleRangeSelectEndMinutes) .Skip(1) .Subscribe(_ => { this.SetSelectedFromRange(); }); this.SelectedTitles.CollectionChanged += (sender, args) => { this.RaisePropertyChanged(nameof(this.TitleDetailsVisible)); if (this.SelectedTitles.Count == 1) { SourceTitle title = this.SelectedTitles[0].Title; // Do preview var previewProfile = new VCProfile { CustomCropping = true, Cropping = new VCCropping(), VideoEncoder = "x264", AudioEncodings = new List <AudioEncoding>() }; this.PreviewImage = BitmapUtilities.ConvertToBitmapImage(BitmapUtilities.ConvertByteArrayToBitmap(this.main.ScanInstance.GetPreview(previewProfile.CreatePreviewSettings(title), 2, deinterlace: false))); this.RaisePropertyChanged(nameof(this.TitleText)); } }; }