Пример #1
0
        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");
            }
        }
Пример #2
0
        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));
        }
Пример #3
0
        public void OnSelectedSavedPlaylistChanged()
        {
            ItemsOnSelectedPlaylist.Clear();
            SavedPlaylist selection = SelectedSavedPlaylist;

            if (selection != null && m_PlaylistContents.ContainsKey(selection))
            {
                ItemsOnSelectedPlaylist.CreateFrom(m_PlaylistContents[selection]);
            }
        }
Пример #4
0
        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);
        }