示例#1
0
        private void addToNowPlaying_Click(object sender, RoutedEventArgs e)
        {
            MenuFlyoutItem item = sender as MenuFlyoutItem;

            if (item != null)
            {
                Song   song   = item.DataContext as Song;
                Album  album  = item.DataContext as Album;
                Artist artist = item.DataContext as Artist;

                if (song != null)
                {
                    NowPlayingManager.AddToNowPlaying(song);
                }
                else if (album != null)
                {
                    NowPlayingManager.AddToNowPlaying(album);
                }
                else if (artist != null)
                {
                    NowPlayingManager.AddToNowPlaying(artist);
                }
                if (Settings.Instance.AddToNowPlayingSwitchesView)
                {
                    this.Frame.Navigate(typeof(NowPlaying), null);
                }
            }
        }
 private void previousButton_Click()
 {
     if (NowPlayingManager.SkipToPreviousSong(Dispatcher, NowPlayingInformation.CurrentPlaylist))
     {
         ResumeLayout();
     }
 }
 private void addToNowPlaying_Click(object sender, RoutedEventArgs e)
 {
     NowPlayingManager.AddToNowPlaying(_currentArtist);
     if (Settings.Instance.AddToNowPlayingSwitchesView)
     {
         SwitchToNowPlayingView(null);
     }
 }
示例#4
0
 private void positionSlider_PointerCaptureLost(object sender, PointerRoutedEventArgs e)
 {
     _userScanning = false;
     if (_beforeScanWasPlaying)
     {
         BackgroundMediaPlayer.Current.Play();
     }
     NowPlayingManager.Seek(positionSlider.Value);
 }
 public void EnsurePlayback()
 {
     if (!NowPlayingManager.IsAudioPlaying)
     {
         if (NowPlayingManager.PlayCurrentSong(Dispatcher))
         {
             ResumeLayout();
         }
     }
 }
        private void shuffleButton_Tapped(object sender, TappedRoutedEventArgs e)
        {
            NowPlayingInformation.ShuffleEnabled = !NowPlayingInformation.ShuffleEnabled;
            SolidColorBrush accentBrush = (SolidColorBrush)App.Current.Resources["PhoneAccentBrush"];

            shuffleButton.Foreground =
                NowPlayingInformation.ShuffleEnabled ? accentBrush : new SolidColorBrush(Colors.White);

            NowPlayingInformation.CurrentPlaylist = NowPlayingInformation.CurrentPlaylist;

            NowPlayingManager.ReplaySong(Dispatcher);

            NowPlayingInformation_OnCurrentPlaylistUpdated();
        }
 private void playButton_Click()
 {
     if (!NowPlayingManager.IsAudioPlaying)
     {
         if (NowPlayingManager.PlayCurrentSong(Dispatcher))
         {
             ResumeLayout();
         }
     }
     else
     {
         NowPlayingManager.PauseCurrentSong();
     }
 }
        private void albumArtList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (_programChangingScrollViewer.IsSet)
            {
                _programChangingScrollViewer.Reset();

                if (albumArtList.SelectedIndex != -1)
                {
                    if (NowPlayingManager.SkipToSong(albumArtList.SelectedIndex, Dispatcher))
                    {
                        ResumeLayout();
                    }
                }
            }
        }
        private void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
        {
            if (e.NavigationParameter == null)
            {
                //This signifies that we should play the current playlist
                if (!e.IsNavigatingBack)
                {
                    nowPlayingControl.NowPlayingInformation_OnCurrentPlaylistUpdated();
                }
                nowPlayingControl.EnsurePlayback();
                return;
            }

            Playlist playlist         = new Playlist();
            int      currentSongIndex = 0;

            if (e.NavigationParameter is Artist)
            {
                Artist artist = (Artist)e.NavigationParameter;
                playlist.Songs = new List <Song>(MusicLibrary.Instance.GetSongs(artist));
            }
            else if (e.NavigationParameter is Album)
            {
                Album album = (Album)e.NavigationParameter;
                playlist.Songs = new List <Song>(MusicLibrary.Instance.GetSongs(album));
            }
            else if (e.NavigationParameter is Song)
            {
                Song song = (Song)e.NavigationParameter;

                playlist.Songs.Add(song);
            }
            else if (e.NavigationParameter is KeyValuePair <Album, int> )
            {
                KeyValuePair <Album, int> kvp = ((KeyValuePair <Album, int>)e.NavigationParameter);
                playlist.Songs   = new List <Song>(MusicLibrary.Instance.GetSongs(kvp.Key));
                currentSongIndex = kvp.Value;
            }
            else if (e.NavigationParameter is KeyValuePair <Playlist, int> )
            {
                KeyValuePair <Playlist, int> kvp = ((KeyValuePair <Playlist, int>)e.NavigationParameter);
                playlist         = kvp.Key;
                currentSongIndex = kvp.Value;
            }

            NowPlayingManager.BeginPlaylist(Dispatcher, playlist, currentSongIndex);
            nowPlayingControl.NowPlayingInformation_OnCurrentPlaylistUpdated();
        }
示例#10
0
        public void Run(IBackgroundTaskInstance taskInstance)
        {
            nowPlayingManager = new NowPlayingManager();

            systemControls = SystemMediaTransportControls.GetForCurrentView();
            systemControls.ButtonPressed    += HandleButtonPressed;
            systemControls.PropertyChanged  += HandlePropertyChanged;
            systemControls.IsEnabled         = true;
            systemControls.IsPauseEnabled    = true;
            systemControls.IsPlayEnabled     = true;
            systemControls.IsPreviousEnabled = true;
            systemControls.IsNextEnabled     = true;

            taskInstance.Canceled       += new BackgroundTaskCanceledEventHandler(OnCanceled);
            taskInstance.Task.Completed += HandleTaskCompleted;

            var value = ApplicationSettingsHelper.ReadResetSettingsValue(AppConstants.AppState);

            if (value == null)
            {
                foregroundTaskStatus = ForegroundTaskStatus.Unknown;
            }
            else
            {
                foregroundTaskStatus = (ForegroundTaskStatus)Enum.Parse(typeof(ForegroundTaskStatus), value.ToString());
            }

            BackgroundMediaPlayer.Current.CurrentStateChanged   += BGCurrentStateChanged;
            BackgroundMediaPlayer.MessageReceivedFromForeground += MessageReceivedFromForeground;

            //taskInstance.Task.Progress += HandleTaskProgress;

            if (foregroundTaskStatus != ForegroundTaskStatus.Suspended)
            {
                ValueSet message = new ValueSet();
                message.Add(AppConstants.BackgroundTaskStarted, "");
                BackgroundMediaPlayer.SendMessageToForeground(message);
            }

            backgroundTaskStarted.Set();
            backgroundTaskStatus = true;
            ApplicationSettingsHelper.SaveSettingsValue(AppConstants.BackgroundTaskState, AppConstants.BackgroundTaskRunning);
            shutdown = false;
            deferral = taskInstance.GetDeferral();
        }
        private void addSongToNowPlaying_Click(object sender, RoutedEventArgs e)
        {
            MenuFlyoutItem item = sender as MenuFlyoutItem;

            if (item != null)
            {
                Song song = item.DataContext as Song;

                if (song != null)
                {
                    NowPlayingManager.AddToNowPlaying(song);
                    if (Settings.Instance.AddToNowPlayingSwitchesView)
                    {
                        SwitchToNowPlayingView(null);
                    }
                }
            }
        }
        private void addPlaylistToNowPlaying_Click(object sender, RoutedEventArgs e)
        {
            MenuFlyoutItem item = sender as MenuFlyoutItem;

            if (item != null)
            {
                Playlist playlist = item.DataContext as Playlist;

                if (playlist != null)
                {
                    NowPlayingManager.AddToNowPlaying(playlist);
                    if (Settings.Instance.AddToNowPlayingSwitchesView)
                    {
                        SwitchToNowPlayingView(new KeyValuePair <Playlist, int>(playlist, 0));
                    }
                }
            }
        }
示例#13
0
        private void OnCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
        {
            try
            {
                BackgroundMediaPlayer.Current.Pause();
                BackgroundMediaPlayer.MessageReceivedFromForeground -= MessageReceivedFromForeground;

                if (shutdown)
                {
                    ApplicationSettingsHelper.SaveSettingsValue(AppConstants.Position, TimeSpan.Zero.ToString());
                }
                else
                {
                    ApplicationSettingsHelper.SaveSettingsValue(AppConstants.Position, BackgroundMediaPlayer.Current.Position.ToString());
                }

                nowPlayingManager.RemoveHandlers();
                nowPlayingManager = null;

                ApplicationSettingsHelper.SaveSettingsValue(AppConstants.BackgroundTaskState, AppConstants.BackgroundTaskCancelled);
                ApplicationSettingsHelper.SaveSettingsValue(AppConstants.AppState, Enum.GetName(typeof(ForegroundTaskStatus), foregroundTaskStatus));
                backgroundTaskStatus = false;

                //unsubscribe event handlers
                systemControls.ButtonPressed   -= HandleButtonPressed;
                systemControls.PropertyChanged -= HandlePropertyChanged;
                if (!shutdown)
                {
                    BackgroundMediaPlayer.Shutdown(); // shutdown media pipeline
                }
            }
            catch (Exception ex)
            {
                NextPlayerDataLayer.Diagnostics.Logger.SaveBG("Audio Player OnCanceled " + "\n" + "Message: " + ex.Message + "\n" + "Link: " + ex.HelpLink);
                NextPlayerDataLayer.Diagnostics.Logger.SaveToFileBG();
            }
            deferral.Complete(); // signals task completion.
        }
 private void nextButton_Click()
 {
     NowPlayingManager.SkipToNextSong(Dispatcher, NowPlayingInformation.CurrentPlaylist);
     ResumeLayout();
 }