mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
[GUI] Add speed graph to media scan.
This commit is contained in:
@@ -85,6 +85,10 @@ public sealed partial class MediaScanViewModel : ViewModelBase
|
|||||||
string _f;
|
string _f;
|
||||||
ScanResults _localResults;
|
ScanResults _localResults;
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
|
double _maxGraphSpeed;
|
||||||
|
[ObservableProperty]
|
||||||
|
ulong _maxSector;
|
||||||
|
[ObservableProperty]
|
||||||
string _maxSpeed;
|
string _maxSpeed;
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
double _maxX;
|
double _maxX;
|
||||||
@@ -114,6 +118,10 @@ public sealed partial class MediaScanViewModel : ViewModelBase
|
|||||||
uint _scanBlockSize;
|
uint _scanBlockSize;
|
||||||
MediaScan _scanner;
|
MediaScan _scanner;
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
|
ObservableCollection<(ulong sector, double speedKbps)> _speedData;
|
||||||
|
[ObservableProperty]
|
||||||
|
int _speedMultiplier;
|
||||||
|
[ObservableProperty]
|
||||||
bool _startVisible;
|
bool _startVisible;
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
double _stepsX;
|
double _stepsX;
|
||||||
@@ -213,7 +221,7 @@ public sealed partial class MediaScanViewModel : ViewModelBase
|
|||||||
F = string.Format(Localization.Core._0_sectors_took_more_than_500_ms, results.F);
|
F = string.Format(Localization.Core._0_sectors_took_more_than_500_ms, results.F);
|
||||||
|
|
||||||
UnreadableSectors = string.Format(Localization.Core._0_sectors_could_not_be_read,
|
UnreadableSectors = string.Format(Localization.Core._0_sectors_could_not_be_read,
|
||||||
results.UnreadableSectors.Count);
|
results.UnreadableSectors?.Count ?? 0);
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: Show list of unreadable sectors
|
// TODO: Show list of unreadable sectors
|
||||||
@@ -240,12 +248,7 @@ public sealed partial class MediaScanViewModel : ViewModelBase
|
|||||||
[SuppressMessage("ReSharper", "AsyncVoidMethod")]
|
[SuppressMessage("ReSharper", "AsyncVoidMethod")]
|
||||||
async void ScanSpeed(ulong sector, double currentSpeed) => await Dispatcher.UIThread.InvokeAsync(() =>
|
async void ScanSpeed(ulong sector, double currentSpeed) => await Dispatcher.UIThread.InvokeAsync(() =>
|
||||||
{
|
{
|
||||||
/* TODO: Abandoned project need to find replacement
|
SpeedData.Add((sector, currentSpeed));
|
||||||
if(ChartPoints.Count == 0)
|
|
||||||
ChartPoints.Add(new DataPoint(0, currentSpeed));
|
|
||||||
|
|
||||||
ChartPoints.Add(new DataPoint(sector, currentSpeed));
|
|
||||||
*/
|
|
||||||
|
|
||||||
if(currentSpeed > MaxY) MaxY = currentSpeed + currentSpeed / 10d;
|
if(currentSpeed > MaxY) MaxY = currentSpeed + currentSpeed / 10d;
|
||||||
});
|
});
|
||||||
@@ -256,12 +259,9 @@ public sealed partial class MediaScanViewModel : ViewModelBase
|
|||||||
{
|
{
|
||||||
ScanBlockSize = (uint)blocksToRead;
|
ScanBlockSize = (uint)blocksToRead;
|
||||||
BlockMapSectorData = [];
|
BlockMapSectorData = [];
|
||||||
|
MaxSector = blocks;
|
||||||
Blocks = blocks / blocksToRead;
|
SpeedData = [];
|
||||||
_blocksToRead = blocksToRead;
|
_blocksToRead = blocksToRead;
|
||||||
|
|
||||||
MinX = 0;
|
|
||||||
MinY = 0;
|
|
||||||
|
|
||||||
switch(currentProfile)
|
switch(currentProfile)
|
||||||
{
|
{
|
||||||
@@ -272,17 +272,8 @@ public sealed partial class MediaScanViewModel : ViewModelBase
|
|||||||
case 0x0020:
|
case 0x0020:
|
||||||
case 0x0021:
|
case 0x0021:
|
||||||
case 0x0022:
|
case 0x0022:
|
||||||
MaxX = blocks switch
|
SpeedMultiplier = 150;
|
||||||
{
|
MaxGraphSpeed = 11250;
|
||||||
<= 360000 => 360000,
|
|
||||||
<= 405000 => 405000,
|
|
||||||
<= 445500 => 445500,
|
|
||||||
_ => blocks
|
|
||||||
};
|
|
||||||
|
|
||||||
StepsX = MaxX / 10;
|
|
||||||
StepsY = 150 * 4;
|
|
||||||
MaxY = StepsY * 12.5;
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 0x0010: // DVD SL
|
case 0x0010: // DVD SL
|
||||||
@@ -293,39 +284,21 @@ public sealed partial class MediaScanViewModel : ViewModelBase
|
|||||||
case 0x0018:
|
case 0x0018:
|
||||||
case 0x001A:
|
case 0x001A:
|
||||||
case 0x001B:
|
case 0x001B:
|
||||||
MaxX = 2298496;
|
|
||||||
StepsX = MaxX / 10;
|
|
||||||
StepsY = 1352.5;
|
|
||||||
MaxY = StepsY * 18;
|
|
||||||
|
|
||||||
break;
|
|
||||||
case 0x0015: // DVD DL
|
case 0x0015: // DVD DL
|
||||||
case 0x0016:
|
case 0x0016:
|
||||||
case 0x0017:
|
case 0x0017:
|
||||||
case 0x002A:
|
case 0x002A:
|
||||||
case 0x002B:
|
case 0x002B:
|
||||||
MaxX = 4173824;
|
SpeedMultiplier = 1353;
|
||||||
StepsX = MaxX / 10;
|
MaxGraphSpeed = 32472; // 24x DVD-ROM cap for graph scaling
|
||||||
StepsY = 1352.5;
|
|
||||||
MaxY = StepsY * 18;
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 0x0041:
|
case 0x0041:
|
||||||
case 0x0042:
|
case 0x0042:
|
||||||
case 0x0043:
|
case 0x0043:
|
||||||
case 0x0040: // BD
|
case 0x0040: // BD
|
||||||
MaxX = blocks switch
|
SpeedMultiplier = 4500;
|
||||||
{
|
MaxGraphSpeed = 108000; // 24x BD-ROM cap for graph scaling
|
||||||
<= 12219392 => 12219392,
|
|
||||||
<= 24438784 => 24438784,
|
|
||||||
<= 48878592 => 48878592,
|
|
||||||
<= 62500864 => 62500864,
|
|
||||||
_ => blocks
|
|
||||||
};
|
|
||||||
|
|
||||||
StepsX = MaxX / 10;
|
|
||||||
StepsY = 4394.5;
|
|
||||||
MaxY = StepsY * 18;
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 0x0050: // HD DVD
|
case 0x0050: // HD DVD
|
||||||
@@ -334,23 +307,13 @@ public sealed partial class MediaScanViewModel : ViewModelBase
|
|||||||
case 0x0053:
|
case 0x0053:
|
||||||
case 0x0058:
|
case 0x0058:
|
||||||
case 0x005A:
|
case 0x005A:
|
||||||
MaxX = blocks switch
|
SpeedMultiplier = 4500;
|
||||||
{
|
MaxGraphSpeed = 36550; // 8x HD-DVD cap for graph scaling
|
||||||
<= 7361599 => 7361599,
|
|
||||||
<= 16305407 => 16305407,
|
|
||||||
_ => blocks
|
|
||||||
};
|
|
||||||
|
|
||||||
StepsX = MaxX / 10;
|
|
||||||
StepsY = 4394.5;
|
|
||||||
MaxY = StepsY * 8;
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MaxX = blocks;
|
SpeedMultiplier = 1353;
|
||||||
StepsX = MaxX / 10;
|
MaxGraphSpeed = 1500000; // 1500 MB/s cap for graph scaling
|
||||||
StepsY = 625;
|
|
||||||
MaxY = StepsY;
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,23 +100,10 @@
|
|||||||
<TabItem.Header>
|
<TabItem.Header>
|
||||||
<TextBlock Text="{x:Static localization:UI.Title_Chart}" />
|
<TextBlock Text="{x:Static localization:UI.Title_Chart}" />
|
||||||
</TabItem.Header>
|
</TabItem.Header>
|
||||||
<!-- TODO: Abandoned project need to find replacement
|
<controls:DiscSpeedGraph SpeedData="{Binding SpeedData, Mode=OneWay}"
|
||||||
<avalonia:Plot Height="300" PlotMargins="50 0 0 0" PlotAreaBorderColor="#999999"
|
MaxSector="{Binding MaxSector, Mode=OneWay}"
|
||||||
PlotAreaBackground="#2974c1">
|
MaxSpeed="{Binding MaxGraphSpeed, Mode=OneWay}"
|
||||||
<avalonia:Plot.Series>
|
Multiplier="{Binding SpeedMultiplier, Mode=OneWay}" />
|
||||||
<avalonia:LineSeries DataFieldX="Index" DataFieldY="Value" ItemsSource="{Binding Path=ChartPoints}"
|
|
||||||
Color="{Binding LineColor}" />
|
|
||||||
</avalonia:Plot.Series>
|
|
||||||
<avalonia:Plot.Axes>
|
|
||||||
<avalonia:LinearAxis Position="Left" Maximum="{Binding MaxY}" Minimum="{Binding MinY}"
|
|
||||||
MajorStep="{Binding StepsY}" Title="{Binding SpeedLabel}"
|
|
||||||
Unit="{Binding KbsLabel}" AxislineColor="{Binding AxesColor}" />
|
|
||||||
<avalonia:LinearAxis Position="Bottom" Maximum="{Binding MaxX}" Minimum="{Binding MinX}"
|
|
||||||
MajorStep="{Binding StepsX}" Title="{Binding BlockLabel}"
|
|
||||||
AxislineColor="{Binding AxesColor}" />
|
|
||||||
</avalonia:Plot.Axes>
|
|
||||||
</avalonia:Plot>
|
|
||||||
-->
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</TabControl>
|
</TabControl>
|
||||||
<StackPanel Grid.Row="1"
|
<StackPanel Grid.Row="1"
|
||||||
|
|||||||
Reference in New Issue
Block a user