Exemple #1
0
            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);
            }
Exemple #2
0
            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();
            }