public void Start(ObservableCollection<Model_DuplicateChecker> files, int operation = 0, BackgroundWorker bgWorker = null) // 0 = delete, 1 = move
{
List<Model_DuplicateChecker> errors = new List<Model_DuplicateChecker>();
List<Model_DuplicateChecker> done = new List<Model_DuplicateChecker>();
this.DupChecker.ProgressMax = (from a in files where a.Selected select a).ToList().Count;
this.DupChecker.ProgressIndex = 0;
this.DupChecker.Cancel = false;
foreach (Model_DuplicateChecker dc in files)
{
if (this.DupChecker.Cancel)
{
DupChecker.ProgressText="Operation Canceled.";
DupChecker.ProgressIndex = this.DupChecker.ProgressMax;
break;
}
if (dc.Selected)
{
FileInfo fi = new FileInfo(dc.FileDetails.Fullfilepath);
if (bgWorker != null)
{
string text = string.Format("{0} {1} {2}", operation == 0 ? "Delete" : "Move", Win32API.FormatByteSize(fi.Length), dc.FileDetails.Fullfilepath);
bgWorker.ReportProgress(-1, text);
}
Worker.I.TotalSpecialOperations++;
if (fi.Exists)
{
try
{
#region process
if (operation == 0)
{
DupChecker.ProgressText = "Deleting file: " + fi.FullName;
FileOperations.Delete(fi.FullName);
Worker.I.TotalFileDelete++;
Worker.I.TotalFileSize += fi.Length;
}
else if (operation == 1)
{
DupChecker.ProgressText = "Moving file: " + fi.FullName + " to " + Settings.Default.DupChecker_DuplicateFolderPath; string moveDir = Settings.Default.DupChecker_DuplicateFolderPath;
moveDir = Path.Combine(moveDir, fi.Name);
FileInfo fiMoveDir = new FileInfo(moveDir);
if (fiMoveDir.Exists)
{
fi.Delete();
}
fi.MoveTo(moveDir);
}
done.Add(dc);
#endregion
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
errors.Add(dc);
}
}
this.DupChecker.ProgressIndex++;
}
DupChecker.ProgressText = "Done.";
}
}
#endregion