Inheritance: System.Windows.Forms.Form
Ejemplo n.º 1
0
        /// <summary>
        /// Prompts and deletes selected mods in the list view.
        /// </summary>
        /// <param name="suppressDialogs">Whether or not to suppress dialogs and prompts.</param>
        public void deleteSelectedMods(bool suppressDialogs = false)
        {
            if (lsvMods.SelectedItems.Count > 0)
            {
                List<Mod> mods = new List<Mod>(Enumerable.Range(0, lsvMods.SelectedItems.Count)
                    .Select(index => (Mod)lsvMods.SelectedItems[index].Tag));

                DialogResult result = DialogResult.No;
                if (!suppressDialogs)
                    result = currentOwner.InvokeMessageBox("Are you sure you want to delete mod(s): " + Environment.NewLine + mods.Select(m => m.Name).Aggregate((i, j) => i + Environment.NewLine + j), "Delete mods?", MessageBoxButtons.YesNo);

                if (result == DialogResult.Yes || suppressDialogs)
                {
                    foreach (Mod m in mods)
                    {
                        if (m.Installed)
                            if (!suppressDialogs)
                                using (formDelete del = new formDelete(m.Name))
                                    result = del.ShowDialog();
                            else
                                result = DialogResult.Yes;

                            switch (result)
                            {
                                case DialogResult.OK: //delete only
                                    tryDelete(Paths.BACKUP + "\\" + m.Name.Replace(".zip", ".7z"));
                                    break;
                                case DialogResult.Yes: //uninstall + delete
                                    refreshModList(true, txtSearch.Text);
                                    lsvMods.Items[lsvMods.Items.IndexOfKey(m.Name)].Checked = false;
                                    inject(false, false, true);
                                    break;
                                case DialogResult.Cancel:
                                    return; //exit entire loop
                            }
                            
                        tryDelete(m.Filename);
                    }
                    refreshModList(true, txtSearch.Text);
                }
            }
        }