public async Task PromptNextEpisode() { if (PlaybackViewParameters.Playlist.Any()) { IUnityContainer container = Globals.Instance.Container; PlaybackConfirmationViewModel confirmationVm = container.Resolve <PlaybackConfirmationViewModel>(); var pvpm = new PlaybackViewParameterModel { SelectedMediaElement = SelectedMediaElement, IsJustFinishedPlaying = true, Playlist = PlaybackViewParameters.Playlist }; NavigationService.GoBack(); confirmationVm.PlaybackViewParametersChanged(pvpm); } else { Return(); } }
public async Task PlaybackViewParametersChanged(PlaybackViewParameterModel p) { _logManager.LogDebug($"Playback View Parameters Changed raised, obj = {p}"); // Does it come from movie / episode chooser? if (!p.IsJustFinishedPlaying) { IsLoading = true; _logManager.LogDebug($"{p.SelectedMediaElement}, It comes from movie/epi chooser."); IsShowConfirmation = false; SelectedMediaElement = p.SelectedMediaElement; if (SelectedMediaElement.PlaybackPosition.TotalMinutes > 2 && SelectedMediaElement.PlaybackRemaining.TotalMinutes < 2) { // Let the user decide what they want, aka let the view model // render fully and show the action buttons IsLoading = false; } else if (SelectedMediaElement.PlaybackPosition.TotalMinutes <= 2) { _logManager.LogDebug($"{p.SelectedMediaElement}, playback position total less than 2min."); PlayFromBeginning(); } else if (SelectedMediaElement.PlaybackRemaining.TotalMinutes <= 2) { _logManager.LogDebug($"{p.SelectedMediaElement}, playback remaining total less than 2min."); PlayFromBeginning(); } } else { // go to the next element on the playlist, then play that from the beginning. SelectedMediaElement = PlaybackViewParameters.SelectedMediaElement; if (PlaybackViewParameters.Playlist.Length >= 2) { _logManager.LogDebug( $"{p.SelectedMediaElement}, go to the next element on the playlist, then play that from the beginning."); NextMediaElement = PlaybackViewParameters.Playlist[0]; PlaybackViewParameters.Playlist = PlaybackViewParameters.Playlist.Skip(1).ToArray(); IsLoading = false; IsShowConfirmation = true; AutoPlayNextTimeLeft = 20; _autoPlaybackTimer.Start(); IsTimerVisible = true; } else { IsLoading = false; _logManager.LogDebug("No next element, navigating back twice."); // As it comes from the playback, we should navigate back two times NavigationService.GoBack(); NavigationService.GoBack(); } } }