private void ApplyPatchesButton_Click(object sender, EventArgs e) { if (!CheckedPatches.Any()) { return; } var candidates = CheckedPatches.Where(x => !x.IsApplied).ToList(); PatchListView.CheckedItems.ForEach(x => x.Checked = false); PatchListView.Focus(); if (!candidates.Any()) { InfoBox.Show("Selected patches were already installed."); return; } var result = m_patchManager.BulkOperation(candidates, p => m_patchManager.ApplyPatch(p, m_firmware)); //UpdatePatchStatuses(); if (result.ProceededPatches.Count > 0) { m_host.ReloadFirmware(this); } var sb = new StringBuilder(); if (result.ProceededPatches.Count > 0) { sb.AppendLine("Patching is completed."); sb.AppendLine(); sb.AppendLine("List of installed patches:"); foreach (var patch in result.ProceededPatches) { sb.AppendLine(" - " + patch.Name); } IsDirty = true; } if (result.ConflictedPatches.Count > 0) { if (result.ConflictedPatches.Count == 0) { sb.AppendLine("Patching is not completed."); } sb.AppendLine(); sb.AppendLine("Patches that have not been installed because of conflicts:"); foreach (var patch in result.ConflictedPatches) { sb.AppendLine(" - " + patch.Name); } } InfoBox.Show(sb.ToString()); }