private IEnumerable <PlaylistTreeItemViewModel> MakePlaylistTree(Playlist[] playlists) { for (int i = 0; i < playlists.Length; i++) { if (playlists[i].Type == PlaylistType.Playlist) { yield return(PlaylistTreeItemViewModel.FromSPPlaylist(playlists[i])); } else if (playlists[i].Type == PlaylistType.FolderStart) { Playlist p = playlists[i]; int depth = 1; IList <Playlist> intermedium = new List <Playlist>(); for (i++; i < playlists.Length; i++) { if (playlists[i].Type == PlaylistType.Playlist) { intermedium.Add(playlists[i]); } else if (playlists[i].Type == PlaylistType.FolderStart) { intermedium.Add(playlists[i]); depth++; } else if (playlists[i].Type == PlaylistType.FolderEnd) { if (--depth == 0) { yield return(PlaylistTreeItemViewModel.FromSPPlaylist(p, MakePlaylistTree(intermedium.ToArray()).ToArray())); break; } else { intermedium.Add(playlists[i]); } } } } } yield break; }
public PlaylistTreeItemViewModel(ServiceReference.Playlist pl) : base(pl) { parent = null; }