Example #1
0
        private async void WebViewCheckTimer_Tick(object sender, object e)
        {
            // Ignore if not logged in
            if (!TokenHelper.HasTokens())
            {
                return;
            }

            try
            {
                var currentPlaying = await WebViewHelper.GetCurrentPlaying();

                if (currentPlaying != prevCurrentPlaying)
                {
                    prevCurrentPlaying = currentPlaying;
                    logger.Info($"CurrentPlaying text extracted from web page changed to '{currentPlaying}'.");

                    await PlayStatusTracker.RefreshPlayStatus();
                }
            }
            catch (Exception ex)
            {
                logger.Warn("checkCurrentPlaying failed: " + ex.ToString());
            }

            try
            {
                webViewBackEnabled = await WebViewHelper.IsBackPossible();
            }
            catch (Exception ex)
            {
                logger.Warn("checkBackButtonEnable failed: " + ex.ToString());
            }
        }
Example #2
0
        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();
            }
        }
Example #3
0
        private async void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                await Update();

                await PlayStatusTracker.RefreshPlayStatus();
            }
            catch (Exception ex)
            {
                logger.Warn("Loaded event failed: " + ex.ToString());
            }
        }
Example #4
0
        private async void PlayButton_Tapped(object sender, TappedRoutedEventArgs e)
        {
            try
            {
                ViewModel.IsPlaying = true;
                ViewModel.PlayPauseButtonEnabled = false;
                timer.Stop();

                // This delay is a workaround for PlayPauseButtonEnabled to
                // update the newly appeared UI. Otherwize it appears after
                // running PlaybackActionHelper.Play().
                await Task.Delay(100);

                if (await PlaybackActionHelper.Play())
                {
                    await Task.Delay(1000);

                    await PlayStatusTracker.RefreshPlayStatus();

                    ViewModel.PlayPauseButtonEnabled = true;
                }
                else
                {
                    ViewModel.IsPlaying = false;
                    ViewModel.PlayPauseButtonEnabled = true;

                    await PlayStatusTracker.RefreshPlayStatus();
                }
            }
            catch (UnauthorizedAccessException)
            {
                UnauthorizedHelper.OnUnauthorizedError();
            }
            finally
            {
                ViewModel.PlayPauseButtonEnabled = true;
                if (!timer.IsEnabled)
                {
                    timer.Start();
                }
            }
        }
Example #5
0
        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();
                }
            });
        }
Example #6
0
        private async void RefreshPlayStatus()
        {
            await Task.Delay(1000);

            await PlayStatusTracker.RefreshPlayStatus();
        }
Example #7
0
        private static async void SystemControls_ButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs e)
        {
            await _dispatcher.RunAsync(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())
                        {
                            TrackChanged?.Invoke(null, new TrackChangedEventArgs
                            {
                                Direction = TrackChangedEventArgs.TrackChangeDirection.Forward,
                            });
                        }


                        break;

                    case SystemMediaTransportControlsButton.Previous:
                        if (await PlaybackActionHelper.PreviousTrack())
                        {
                            TrackChanged?.Invoke(null, new TrackChangedEventArgs
                            {
                                Direction = TrackChangedEventArgs.TrackChangeDirection.Backward,
                            });
                        }

                        // 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();
                }
            });
        }