diff --git a/.idea/.idea.DiscImageChef/.idea/contentModel.xml b/.idea/.idea.DiscImageChef/.idea/contentModel.xml
index 73748faa5..3ac368934 100644
--- a/.idea/.idea.DiscImageChef/.idea/contentModel.xml
+++ b/.idea/.idea.DiscImageChef/.idea/contentModel.xml
@@ -5,6 +5,7 @@
+
diff --git a/DiscImageChef.Core/Devices/Dumping/ATA.cs b/DiscImageChef.Core/Devices/Dumping/ATA.cs
index 910af896c..c7c4a124b 100644
--- a/DiscImageChef.Core/Devices/Dumping/ATA.cs
+++ b/DiscImageChef.Core/Devices/Dumping/ATA.cs
@@ -41,7 +41,6 @@ using DiscImageChef.CommonTypes.Enums;
using DiscImageChef.CommonTypes.Extents;
using DiscImageChef.CommonTypes.Interfaces;
using DiscImageChef.CommonTypes.Metadata;
-using DiscImageChef.Console;
using DiscImageChef.Core.Logging;
using DiscImageChef.Decoders.ATA;
using DiscImageChef.Decoders.PCMCIA;
@@ -257,6 +256,7 @@ namespace DiscImageChef.Core.Devices.Dumping
start = DateTime.UtcNow;
DateTime timeSpeedStart = DateTime.UtcNow;
ulong sectorSpeedStart = 0;
+ InitProgress?.Invoke();
for(ulong i = resume.NextBlock; i < blocks; i += blocksToRead)
{
if(aborted)
@@ -317,7 +317,7 @@ namespace DiscImageChef.Core.Devices.Dumping
}
end = DateTime.Now;
- DicConsole.WriteLine();
+ EndProgress?.Invoke();
mhddLog.Close();
ibgLog.Close(dev, blocks, blockSize, (end - start).TotalSeconds, currentSpeed * 1024,
blockSize * (double)(blocks + 1) / 1024 /
@@ -342,6 +342,7 @@ namespace DiscImageChef.Core.Devices.Dumping
dumpLog.WriteLine("Trimming bad sectors");
ulong[] tmpArray = resume.BadBlocks.ToArray();
+ InitProgress?.Invoke();
foreach(ulong badSector in tmpArray)
{
if(aborted)
@@ -365,7 +366,7 @@ namespace DiscImageChef.Core.Devices.Dumping
outputPlugin.WriteSector(cmdBuf, badSector);
}
- DicConsole.WriteLine();
+ EndProgress?.Invoke();
end = DateTime.UtcNow;
UpdateStatus?.Invoke($"Trimmming finished in {(end - start).TotalSeconds} seconds.");
dumpLog.WriteLine("Trimmming finished in {0} seconds.", (end - start).TotalSeconds);
@@ -380,6 +381,7 @@ namespace DiscImageChef.Core.Devices.Dumping
repeatRetryLba:
ulong[] tmpArray = resume.BadBlocks.ToArray();
+ InitProgress?.Invoke();
foreach(ulong badSector in tmpArray)
{
if(aborted)
@@ -417,7 +419,7 @@ namespace DiscImageChef.Core.Devices.Dumping
goto repeatRetryLba;
}
- DicConsole.WriteLine();
+ EndProgress?.Invoke();
}
#endregion Error handling LBA
@@ -433,6 +435,7 @@ namespace DiscImageChef.Core.Devices.Dumping
start = DateTime.UtcNow;
DateTime timeSpeedStart = DateTime.UtcNow;
ulong sectorSpeedStart = 0;
+ InitProgress?.Invoke();
for(ushort cy = 0; cy < cylinders; cy++)
{
for(byte hd = 0; hd < heads; hd++)
@@ -497,7 +500,7 @@ namespace DiscImageChef.Core.Devices.Dumping
}
end = DateTime.Now;
- DicConsole.WriteLine();
+ EndProgress?.Invoke();
mhddLog.Close();
ibgLog.Close(dev, blocks, blockSize, (end - start).TotalSeconds, currentSpeed * 1024,
blockSize * (double)(blocks + 1) / 1024 /
@@ -665,7 +668,6 @@ namespace DiscImageChef.Core.Devices.Dumping
filesystem.start);
}
- DicConsole.WriteLine();
string xmlDskTyp, xmlDskSubTyp;
if(dev.IsCompactFlash)
CommonTypes.Metadata.MediaType.MediaTypeToString(MediaType.CompactFlash, out xmlDskTyp,
diff --git a/DiscImageChef.Core/Devices/Dumping/Dump.cs b/DiscImageChef.Core/Devices/Dumping/Dump.cs
index 5ed0bafe6..27ad04c35 100644
--- a/DiscImageChef.Core/Devices/Dumping/Dump.cs
+++ b/DiscImageChef.Core/Devices/Dumping/Dump.cs
@@ -2,6 +2,8 @@ namespace DiscImageChef.Core.Devices.Dumping
{
public partial class Dump
{
+ public event EndProgressHandler EndProgress;
+ public event InitProgressHandler InitProgress;
public event UpdateStatusHandler UpdateStatus;
public event ErrorMessageHandler ErrorMessage;
public event ErrorMessageHandler StoppingErrorMessage;
diff --git a/DiscImageChef/Commands/DumpMedia.cs b/DiscImageChef/Commands/DumpMedia.cs
index 969eb5e3d..c26ff8a0c 100644
--- a/DiscImageChef/Commands/DumpMedia.cs
+++ b/DiscImageChef/Commands/DumpMedia.cs
@@ -301,6 +301,8 @@ namespace DiscImageChef.Commands
dumper.StoppingErrorMessage += Progress.ErrorMessage;
dumper.UpdateProgress += Progress.UpdateProgress;
dumper.PulseProgress += Progress.PulseProgress;
+ dumper.InitProgress += Progress.InitProgress;
+ dumper.EndProgress += Progress.EndProgress;
if(dev.IsUsb && dev.UsbVendorId == 0x054C &&
(dev.UsbProductId == 0x01C8 || dev.UsbProductId == 0x01C9 || dev.UsbProductId == 0x02D2))