public ShellMenuViewModel( LibraryViewModel libraryViewModel, //AllTracksFilterViewModel allTracksViewModel, //AllTracksViewModel allTracksViewModel, PlaybackControlsViewModel playbackControlsViewModel) { this.LibraryViewModel = libraryViewModel ?? throw new ArgumentNullException(nameof(libraryViewModel)); //this.AllTracksViewModel = allTracksViewModel ?? throw new ArgumentNullException(nameof(allTracksViewModel)); this.PlaybackControlsViewModel = playbackControlsViewModel ?? throw new ArgumentNullException(nameof(playbackControlsViewModel)); }
public ShellViewModel( IAudioPlaybackEngine playbackService, //IWriteLibraryService writeLibraryService, IReadLibraryService readLibraryService, IDialogService dialogService, LibraryViewModel libraryViewModel, PlaybackControlsViewModel playbackControlsViewModel, PlaybackHistoryViewModel playbackHistoryViewModel, ShellMenuViewModel shellMenuViewModel) { this._playbackService = playbackService ?? throw new ArgumentNullException(nameof(playbackService)); //this._writeLibraryService = writeLibraryService ?? throw new ArgumentNullException(nameof(writeLibraryService)); this._readLibraryService = readLibraryService ?? throw new ArgumentNullException(nameof(readLibraryService)); this._dialogService = dialogService ?? throw new ArgumentNullException(nameof(dialogService)); this.LibraryViewModel = libraryViewModel ?? throw new ArgumentNullException(nameof(libraryViewModel)); this.PlaybackControlsViewModel = playbackControlsViewModel ?? throw new ArgumentNullException(nameof(playbackControlsViewModel)); this.PlaybackHistoryViewModel = playbackHistoryViewModel ?? throw new ArgumentNullException(nameof(playbackHistoryViewModel)); this.ShellMenuViewModel = shellMenuViewModel ?? throw new ArgumentNullException(nameof(shellMenuViewModel)); this._isEnabled_OAPH = Observable .Return(true) .ToProperty(this, nameof(this.IsEnabled)) .DisposeWith(this._disposables); this._taskbarProgressState_OAPH = Observable.CombineLatest( this._playbackService.WhenStatusChanged, this._playbackService.WhenDurationChanged, this._playbackService.WhenPositionChanged, (status, duration, position) => { switch (status) { case PlaybackStatus.Loaded: case PlaybackStatus.PlayedToEnd: case PlaybackStatus.ManuallyInterrupted: case PlaybackStatus.None: return(TaskbarItemProgressState.None); case PlaybackStatus.Playing: if (duration.HasValue && position.HasValue) { return(TaskbarItemProgressState.Normal); } return(TaskbarItemProgressState.Indeterminate); case PlaybackStatus.Paused: return(TaskbarItemProgressState.Paused); case PlaybackStatus.Loading: return(TaskbarItemProgressState.Indeterminate); case PlaybackStatus.Exploded: return(TaskbarItemProgressState.Error); default: return(TaskbarItemProgressState.None); } }) .DistinctUntilChanged() .ToProperty(this, nameof(this.TaskbarProgressState)) .DisposeWith(this._disposables); this._taskbarProgressValue_OAPH = Observable.CombineLatest( this._playbackService.WhenDurationChanged, this._playbackService.WhenPositionChanged, (duration, position) => { if (duration.HasValue && position.HasValue) { return(position.Value.TotalMilliseconds / duration.Value.TotalMilliseconds); } return(Double.NaN); }) .DistinctUntilChanged() .ToProperty(this, nameof(this.TaskbarProgressValue)) .DisposeWith(this._disposables); this._playbackService.WhenTrackChanged .Subscribe(track => this.UpdateDisplayName(track)) .DisposeWith(this._disposables); this.ActivateItem(this.LibraryViewModel); this.ActivateItem(this.PlaybackControlsViewModel); this.ActivateItem(this.PlaybackHistoryViewModel); this.ActivateItem(this.ShellMenuViewModel); }