public void OnListPlaylistInfoResponseReceived(string name, IEnumerable <MPDSongResponseBlock> response) { IList <LibraryItem> contents = new List <LibraryItem>(); foreach (MPDSongResponseBlock block in response) { Playable playable = PlayableFactory.CreatePlayable(block, m_DataModel); // If this stream is a part of the collection, use the database version // instead of the constructed one so we can display the user-set label. if (playable is AudioStream) { AudioStream stream = m_DataModel.StreamsCollection.StreamByPath(playable.Path); if (stream != null) { playable = stream; } } contents.Add((LibraryItem)playable); } SavedPlaylist playlist = m_Playlists[name]; m_PlaylistContents[playlist] = contents; IEnumerable <LibraryItem> selection = Items.SelectedItems(); if (selection.Count() == 1 && ((AudioStream)selection.First()).Name == name) { NotifyPropertyChanged("ItemsOnSelectedPlaylist"); } }
public void GetLovedAndPersistPlaylist() { _totalPlaylistFiles = 0; var currentLovedPage = 1; var maxLovedPages = 0; List <LoveTrack> loveTracks = new List <LoveTrack>(); do { var lovePage = _loveProvider.GetPage(currentLovedPage); if (maxLovedPages == 0) { maxLovedPages = lovePage.AdditionalAttributes.TotalPages; } var lovePageTracks = lovePage.LoveTracks; loveTracks.AddRange(lovePageTracks); CollectedLove?.Invoke(this, new CollectLoveEventArgs(currentLovedPage++, maxLovedPages)); } while (currentLovedPage <= maxLovedPages); var playlistContents = _playlistHandler.SetPlaylistItems(_file, GetFilesForLoveTracks(loveTracks).ToArray()); _file.WriteAllText(PlaylistFile, playlistContents); SavedPlaylist?.Invoke(this, new SavePlaylistEventArgs(_totalPlaylistFiles, PlaylistFile)); }
public void OnSelectedSavedPlaylistChanged() { ItemsOnSelectedPlaylist.Clear(); SavedPlaylist selection = SelectedSavedPlaylist; if (selection != null && m_PlaylistContents.ContainsKey(selection)) { ItemsOnSelectedPlaylist.CreateFrom(m_PlaylistContents[selection]); } }
public void OnLsInfoResponseReceived(IEnumerable <MPDResponseLine> response) { Clear(); ISet <SavedPlaylist> playlists = new SortedSet <SavedPlaylist>(); foreach (MPDResponseLine line in response) { if (line.Key == MPDResponseLine.Keyword.Playlist) { SavedPlaylist playlist = new SavedPlaylist(line.Value); playlists.Add(playlist); m_Playlists[line.Value] = playlist; m_PlaylistContents[playlist] = new List <LibraryItem>(); m_DataModel.ServerSession.Send(MPDCommandFactory.ListPlaylistInfo(playlist.Title)); } } Items.CreateFrom(playlists); }