diff --git a/RedBookPlayer/Player.cs b/RedBookPlayer/Player.cs index 8eabec7..f884beb 100644 --- a/RedBookPlayer/Player.cs +++ b/RedBookPlayer/Player.cs @@ -43,6 +43,7 @@ namespace RedBookPlayer byte[] flagsData = Image.ReadSectorTag(Image.Tracks[CurrentTrack].TrackSequence, SectorTagType.CdTrackFlags); HasPreEmphasis = ((CdFlags)flagsData[0]).HasFlag(CdFlags.PreEmphasis); + TotalIndexes = Image.Tracks[CurrentTrack].Indexes.Count; CurrentIndex = Image.Tracks[CurrentTrack].Indexes.Keys.GetEnumerator().Current; } } @@ -91,6 +92,8 @@ namespace RedBookPlayer } } public bool HasPreEmphasis { get; private set; } = false; + public int TotalTracks { get; private set; } = 0; + public int TotalIndexes { get; private set; } = 0; public AaruFormat Image { get; private set; } FullTOC.CDFullTOC toc; PlayerSource source; @@ -151,6 +154,7 @@ namespace RedBookPlayer LoadTrack(CurrentTrack); + TotalTracks = image.Tracks.Count; Initialized = true; source.Start(); diff --git a/RedBookPlayer/PlayerView.xaml b/RedBookPlayer/PlayerView.xaml index 541581c..e54f191 100644 --- a/RedBookPlayer/PlayerView.xaml +++ b/RedBookPlayer/PlayerView.xaml @@ -4,7 +4,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="RedBookPlayer.PlayerView" - Width="900" Height="300"> + Width="900" Height="400"> @@ -49,6 +49,22 @@ + + + TRACKS + + + + + + + INDEXES + + + + + + diff --git a/RedBookPlayer/PlayerView.xaml.cs b/RedBookPlayer/PlayerView.xaml.cs index b1328ec..86b2dc0 100644 --- a/RedBookPlayer/PlayerView.xaml.cs +++ b/RedBookPlayer/PlayerView.xaml.cs @@ -137,18 +137,27 @@ namespace RedBookPlayer { if (player.Initialized) { - string track = (player.CurrentTrack + 1).ToString().PadLeft(2, '0'); - string index = (player.CurrentIndex).ToString().PadLeft(2, '0'); - string frames = (player.CurrentSector % 75).ToString().PadLeft(2, '0'); - string seconds = ((player.CurrentSector / 75) % 60).ToString().PadLeft(2, '0'); - string minutes = ((player.CurrentSector / (75 * 60)) % 60).ToString().PadLeft(2, '0'); + int[] numbers = new int[]{ + player.CurrentTrack + 1, + player.CurrentIndex, + (int)((player.CurrentSector / (75 * 60)) % 60), + (int)((player.CurrentSector / 75) % 60), + (int)(player.CurrentSector % 75), + player.TotalTracks, + player.TotalIndexes + }; + + string digitString = String.Join("", numbers.Select(i => i.ToString().PadLeft(2, '0').Substring(0, 2))); Dispatcher.UIThread.InvokeAsync(() => { - int i = 0; - foreach (char digit in track + index + minutes + seconds + frames) + for (int i = 0; i < digits.Length; i++) + { if (digits[i] != null) - digits[i++].Source = GetBitmap(digit); + { + digits[i].Source = GetBitmap(digitString[i]); + } + } ((PlayerViewModel)DataContext).PreEmphasis = player.HasPreEmphasis; }); @@ -160,7 +169,9 @@ namespace RedBookPlayer foreach (Image digit in digits) { if (digit != null) + { digit.Source = GetBitmap('-'); + } } }); } @@ -187,7 +198,7 @@ namespace RedBookPlayer public void Initialize() { - digits = new Image[10]; + digits = new Image[14]; digits[0] = this.FindControl("TrackDigit1"); digits[1] = this.FindControl("TrackDigit2"); @@ -202,6 +213,12 @@ namespace RedBookPlayer digits[8] = this.FindControl("TimeDigit5"); digits[9] = this.FindControl("TimeDigit6"); + digits[10] = this.FindControl("TotalTracksDigit1"); + digits[11] = this.FindControl("TotalTracksDigit2"); + + digits[12] = this.FindControl("TotalIndexesDigit1"); + digits[13] = this.FindControl("TotalIndexesDigit2"); + currentTrack = this.FindControl("CurrentTrack"); }