private bool RepairFile(FormatBase.Model formatModel) { bool result = false; if (Data.Response == Interaction.PromptToRepair) { for (int ix = 0; ix < formatModel.Data.Issues.Items.Count; ++ix) { Issue issue = formatModel.Data.Issues.Items[ix]; if (issue.IsRepairable) { for (;;) { Data.OnMessageSend(String.Empty, Severity.NoIssue); bool?isYes = Data.QuestionAsk(issue.RepairPrompt + "? "); if (isYes != true) { break; } string errorMessage = formatModel.IssueModel.Repair(ix); if (errorMessage == null) { Data.OnMessageSend("Repair successful!", Severity.Advisory); if (formatModel.IssueModel.RepairerEquals(ix, formatModel.RepairWrongExtension)) { result = true; } break; } Data.OnMessageSend("Repair attempt failed: " + errorMessage, Severity.Warning); } } if (issue.IsFinalRepairer) { break; } } Data.OnMessageSend(String.Empty, Severity.NoIssue); formatModel.CloseFile(); } return(result); }
private void TryRepairs(FormatBase.Model fmtModel, FileFormat trueFormat) { if (!fmtModel.IssueModel.Data.HasError) { int startRepairableCount = fmtModel.IssueModel.Data.RepairableCount; if (startRepairableCount != 0) { if (Data.Response == Interaction.PromptToRepair) { ++Data.TotalRepairable; bool didRename = RepairFile(fmtModel); if (didRename) { System.Diagnostics.Debug.Assert(trueFormat != null); if (trueFormat != null) { --trueFormat.TotalMisnamed; } } if (fmtModel.IssueModel.Data.RepairableCount == 0) { --Data.TotalRepairable; } Data.TotalRepairs += startRepairableCount - fmtModel.IssueModel.Data.RepairableCount; } else if (Data.Response == Interaction.RepairLater) { // Keep file open. return; } } } fmtModel.CloseFile(); }