private async void NextTrackButton_Tapped(object sender, TappedRoutedEventArgs e) { try { HideToLeftAnimation(); if (!(await PlaybackActionHelper.NextTrack())) { showFromLeftStoryboard.Begin(); animationState = AnimationState.None; ViewModel.ProgressRingActive = false; return; } ViewModel.NextButtonEnabled = false; await Task.Delay(1000); await PlayStatusTracker.RefreshPlayStatus(); ViewModel.NextButtonEnabled = true; } catch (UnauthorizedAccessException) { UnauthorizedHelper.OnUnauthorizedError(); } }
private async void SystemControls_ButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs e) { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() => { var mediaControls = SystemMediaTransportControls.GetForCurrentView(); try { switch (e.Button) { case SystemMediaTransportControlsButton.Play: if (await PlaybackActionHelper.Play()) { mediaControls.PlaybackStatus = MediaPlaybackStatus.Playing; } break; case SystemMediaTransportControlsButton.Pause: if (await PlaybackActionHelper.Pause()) { mediaControls.PlaybackStatus = MediaPlaybackStatus.Paused; } break; case SystemMediaTransportControlsButton.Stop: if (await PlaybackActionHelper.Pause()) { mediaControls.PlaybackStatus = MediaPlaybackStatus.Paused; } break; case SystemMediaTransportControlsButton.Next: if (await PlaybackActionHelper.NextTrack()) { compactOverlayView?.PlayChangeTrackAnimation(reverse: false); } break; case SystemMediaTransportControlsButton.Previous: if (await PlaybackActionHelper.PreviousTrack()) { compactOverlayView?.PlayChangeTrackAnimation(reverse: true); } // Necessary for progress bar update, in case 'previous' command goes to // the beginning of the same track. await Task.Delay(500); await PlayStatusTracker.RefreshPlayStatus(); break; } } catch (UnauthorizedAccessException) { UnauthorizedHelper.OnUnauthorizedError(); } }); }