/// <summary> /// Creates a report of the open coverage data. /// </summary> public void CreateCoverageReport() { var config = new ReportConfigurationModel(); // set some defaults. config.ProjectName = CoverageRows.FirstOrDefault()?.DisplayName; var configDlg = new ReportConfigurationDlg(config); configDlg.Owner = Owner; // note: nullable bools... if (configDlg.ShowDialog() == true) { var writer = new CoverageWriter(); writer.WriteReport(CoverageRows.Select(vm => vm.Model), config); if (config.OpenWhenDone) { Process.Start( new ProcessStartInfo { FileName = config.DestinationPath, UseShellExecute = true, } ); } } }
/// <summary> /// Saves a coverage file. /// </summary> /// <param name="path"> /// The path to save the file to. IF null or empty, the user is prompted to select the file path. /// </param> public void SaveFile(string path) { bool canceled = false; // if we were not given a path, let the user browse for one. if (string.IsNullOrEmpty(path)) { //TODO (testing): hide this behind a service interface var sfd = new SaveFileDialog { Filter = "Coverage XML File (*.coveragexml)|*.coveragexml", }; if (!string.IsNullOrEmpty(Settings.Default.CoverageXmlDirectory)) { sfd.InitialDirectory = Settings.Default.CoverageXmlDirectory; } if (sfd.ShowDialog(Owner) == true) { path = sfd.FileName; Settings.Default.CoverageXmlDirectory = Path.GetDirectoryName(path); Settings.Default.Save(); } else { // user canceled canceled = true; } } if (!canceled) { var writer = new CoverageWriter(); writer.WriteCoverageXml(CoverageRows.Select(vm => vm.Model), path); } }