public void SelectPlayList()
{
if (BDROM == null)
{
System.Console.WriteLine("Cannot select playlist, BDROM Error");
return;
}
bool hasHiddenTracks = false;
List<List<TSPlaylistFile>> groups = new List<List<TSPlaylistFile>>();
TSPlaylistFile[] sortedPlaylistFiles = new TSPlaylistFile[BDROM.PlaylistFiles.Count];
BDROM.PlaylistFiles.Values.CopyTo(sortedPlaylistFiles, 0);
Array.Sort(sortedPlaylistFiles, ComparePlaylistFiles);
foreach (TSPlaylistFile playlist1 in sortedPlaylistFiles)
{
if (!playlist1.IsValid) continue;
int matchingGroupIndex = 0;
for (int groupIndex = 0; groupIndex < groups.Count; groupIndex++)
{
List<TSPlaylistFile> group = groups[groupIndex];
foreach (TSPlaylistFile playlist2 in group)
{
if (!playlist2.IsValid) continue;
foreach (TSStreamClip clip1 in playlist1.StreamClips)
{
foreach (TSStreamClip clip2 in playlist2.StreamClips)
{
if (clip1.Name == clip2.Name)
{
matchingGroupIndex = groupIndex + 1;
break;
}
}
if (matchingGroupIndex > 0) break;
}
if (matchingGroupIndex > 0) break;
}
if (matchingGroupIndex > 0) break;
}
if (matchingGroupIndex > 0)
{
groups[matchingGroupIndex - 1].Add(playlist1);
}
else
{
groups.Add(new List<TSPlaylistFile> { playlist1 });
}
}
System.Console.WriteLine(String.Format("{0,-4}{1,-7}{2,-15}{3,-10}{4,-16}{5,-16}\n", "#", "Group", "Playlist File", "Length", "Estimated Bytes", "Measured Bytes"));
int index = 1;
Dictionary<int,TSPlaylistFile> plsDict = new Dictionary<int,TSPlaylistFile>();
for (int groupIndex = 0; groupIndex < groups.Count; groupIndex++)
{
List<TSPlaylistFile> group = groups[groupIndex];
group.Sort(ComparePlaylistFiles);
foreach (TSPlaylistFile playlist in group)
{
if (!playlist.IsValid) continue;
plsDict[index] = playlist;
if (playlist.HasHiddenTracks)
{
hasHiddenTracks = true;
}
String groupString = (groupIndex + 1).ToString();
TimeSpan playlistLengthSpan = new TimeSpan((long)(playlist.TotalLength * 10000000));
String length = string.Format(
"{0:D2}:{1:D2}:{2:D2}",
playlistLengthSpan.Hours,
playlistLengthSpan.Minutes,
playlistLengthSpan.Seconds);
String fileSize;
if (BDInfoSettings.EnableSSIF &&
playlist.InterleavedFileSize > 0)
{
fileSize = playlist.InterleavedFileSize.ToString("N0");
}
else if (playlist.FileSize > 0)
{
fileSize = playlist.FileSize.ToString("N0");
}
else
{
fileSize = "-";
}
String fileSize2;
if (playlist.TotalAngleSize > 0)
{
fileSize2 = (playlist.TotalAngleSize).ToString("N0");
}
else
{
fileSize2 = "-";
}
System.Console.WriteLine(String.Format("{0,-4:G}{1,-7}{2,-15}{3,-10}{4,-16}{5,-16}", index.ToString(), groupString, playlist.Name, length, fileSize, fileSize2));
index++;
}
}
if (hasHiddenTracks)
{
System.Console.WriteLine("(*) Some playlists on this disc have hidden tracks. These tracks are marked with an asterisk.");
}
selectedPlayLists.Add(plsDict[getIntIndex(1, index-1)]);
}