示例#1
0
        private IDacpList GetGroupedEpisodes(IEnumerable <TVShowEpisode> episodes)
        {
            ItemGroup <TVShowEpisode>             currentGroup = null;
            DacpList <ItemGroup <TVShowEpisode> > result       = new DacpList <ItemGroup <TVShowEpisode> >(true);

            foreach (var episode in episodes)
            {
                if (currentGroup == null || currentGroup.Key != episode.AlbumName)
                {
                    currentGroup = new ItemGroup <TVShowEpisode>(episode.AlbumName);
                    result.Add(currentGroup);
                }
                currentGroup.Add(episode);
            }

            if (result.Count == 0)
            {
                return(new DacpList <TVShowEpisode>(false));
            }

            if (result.Count == 1 && string.IsNullOrEmpty(result[0].Key))
            {
                return(result[0].ToDacpList());
            }

            return(result);
        }
示例#2
0
        public async Task <IDacpList> GetGroupedSongsAsync()
        {
            var songs = await GetSongsAsync().ConfigureAwait(false);

            if (songs == null || songs.Count == 0)
            {
                return(new DacpList <Song>(false));
            }

            ItemGroup <Song>             currentGroup = null;
            DacpList <ItemGroup <Song> > result       = new DacpList <ItemGroup <Song> >(true);

            MusicContainer musicContainer = Container as MusicContainer;

            foreach (var song in songs)
            {
                if (currentGroup == null || currentGroup.Key != song.AlbumName)
                {
                    currentGroup = new ItemGroup <Song>(song.AlbumName);
                    if (musicContainer != null && song.AlbumPersistentID != 0)
                    {
                        currentGroup.KeyObject = await musicContainer.GetAlbumByPersistentIDAsync(song.AlbumPersistentID).ConfigureAwait(false);
                    }
                    result.Add(currentGroup);
                }
                currentGroup.Add(song);
            }

            if (result.Count == 0)
            {
                return(new DacpList <Song>(false));
            }

            if (result.Count == 1 && string.IsNullOrEmpty(result[0].Key))
            {
                return(result[0].ToDacpList());
            }

            return(result);
        }