public void ClearQueue() { if (trackQueue != null) { trackQueue.Clear(); trackQueue = null; ClearPlayerCache(); } }
public TrackInfo GetTrack(Guid listGUID, int selIdx, PlaybackMode mode) { if (trackQueue == null) { Playlist pl = PlaylistCollection.GetDatabase().TrackLists.Find(x => x.GUID == listGUID); if (pl == null || pl.TrackAmount == 0) { throw new InvalidPlaylistException(string.Format("Given playlist \"{0}\" is invalid.", listGUID)); } trackQueue = new TrackQueue(pl, selIdx, mode); Properties.Settings.Default.TaskPlaylistGUID = listGUID; Properties.Settings.Default.Save(); } TrackInfo nextTrack; int nextTrackIdx = trackQueue.Next(out nextTrack); return(nextTrack); }
public void UpdateQueue(UpdatePlaylistEventArgs e) { if (this.PlayerStatus == PlaybackState.Stopped) { return; } // If given playlist to be updated is not played currently, there is no need to update. if (this.CurrentPlaylistGUID != e.UpdatedPlaylist.GUID) { return; } trackQueue = new TrackQueue(e.UpdatedPlaylist, e.IndexOfPlayingTrack, (PlaybackMode)Properties.Settings.Default.TaskPlaybackMode); if (trackQueue.Count != 0) { TrackInfo nextTrack; trackQueue.Next(out nextTrack); } }
// Called by PagePlaylist. Because it needs to know the index of playing track to set playing sign. public PlayTrackEventArgs GetNextTrack(Guid listGUID, int selectedIdx, PlaybackMode mode, out int trackIdx) { if (trackQueue == null) { Playlist pl = PlaylistCollection.GetDatabase().TrackLists.Find(x => x.GUID == listGUID); if (pl == null || pl.TrackAmount == 0) { throw new InvalidPlaylistException(string.Format("Given playlist \"{0}\" is invalid.", listGUID)); } trackQueue = new TrackQueue(pl, selectedIdx, mode); } TrackInfo currentTrack; int currentTrackIdx = trackQueue.Current(out currentTrack); TrackInfo nextTrack; trackIdx = trackQueue.Next(out nextTrack); PlayTrackEventArgs e = new PlayTrackEventArgs(trackQueue.ListGUID, currentTrackIdx, currentTrack, trackQueue.Mode, this.CurrentTrackStatus); e.SetNextTrack(nextTrack, trackIdx); return(e); }