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");
}