public bool ProcessFileManagement(XciItem xci) { bool success = false; if (!Helpers.Settings.CheckForSdCard() && (xci.fileAction.action == FileAction.Copy || xci.fileAction.action == FileAction.Delete || xci.fileAction.action == FileAction.Move)) { return(false); } switch (xci.fileAction.action) { case FileAction.None: break; case FileAction.Copy: case FileAction.Move: FileHelper.TransferXci(xci); break; case FileAction.Delete: try { if (File.Exists(xci.xciFilePath)) { File.Delete(xci.xciFilePath); } if (!File.Exists(xci.xciFilePath)) { success = true; } xci.fileAction.actionCompleted = true; xci.fileAction.actionSuccess = success; XciHelper.UpdateXci(xci); return(success); } catch { } return(false); case FileAction.CompletelyDelete: List <XciItem> deleteItems = GetAllItemsByIdentifer(xci.uniqueId); for (int i = deleteItems.Count - 1; i >= 0; i--) { if (File.Exists(deleteItems[i].xciFilePath)) { File.Delete(deleteItems[i].xciFilePath); } if (!File.Exists(deleteItems[i].xciFilePath)) { success = true; } deleteItems[i].fileAction = Clone(xci.fileAction); deleteItems[i].fileAction.actionCompleted = true; deleteItems[i].fileAction.actionSuccess = success; UpdateXci(deleteItems[i]); } return(success); case FileAction.Trim: bool trim; if (xci.gameSize != xci.gameUsedSize) { trim = XciHelper.TrimXci(xci); if (trim) { UpdateToolStripLabel($"Successfully trimmed {xci.gameName}!"); } else { UpdateToolStripLabel($"Failed to trim {xci.gameName}!"); } xci.fileAction.actionCompleted = true; xci.fileAction.actionSuccess = true; //re-process the XCI //RefreshXciInBackground(xci); return(trim); } else { UpdateToolStripLabel($"{xci.gameName} is already trimmed!"); return(true); } case FileAction.ShowCert: XciHelper.ShowXciCert(xci); return(true); case FileAction.ShowXciInfo: if (!string.IsNullOrWhiteSpace(xci.xciFilePath)) { ShowXciExplorer(xci.xciFilePath); } break; case FileAction.ShowInExplorer: if (!File.Exists(xci.xciFilePath)) { UpdateToolStripLabel($"{xci.xciFilePath} could not be found!"); return(false); } Process.Start("explorer.exe", "/select, \"" + xci.xciFilePath + "\""); return(true); default: break; } return(true); }
private void ToolStripManagement(object sender, EventArgs e) { //use ProcessFileManagement //delete all copies //trim //show cert //show xciexplorer //show in explorer string message = string.Empty, action = string.Empty, source = string.Empty, destination = string.Empty; FileStruct fileAction = new FileStruct(); ToolStripItem clicked = sender as ToolStripItem; int toolIndex = olvList.ContextMenuStrip.Items.IndexOf(clicked); if (toolIndex < 0) { toolIndex = gameManagementToolStripMenuItem.DropDownItems.IndexOf(clicked); } if (toolIndex == 1) { fileAction.action = FileAction.CompletelyDelete; } if (toolIndex == 2) { fileAction.action = FileAction.Trim; } if (toolIndex == 3) { fileAction.action = FileAction.ShowRenameWindow; } if (toolIndex == 4) { fileAction.action = FileAction.ShowCert; } if (toolIndex == 5) { fileAction.action = FileAction.ShowXciInfo; } if (toolIndex == 6) { fileAction.action = FileAction.ShowInExplorer; } if (toolIndex == 7) { fileAction.action = FileAction.OpenOnTinfoilWeb; } if (Helpers.Settings.config.defaultView == XciLocation.PC) { fileAction.destination = XciLocation.SD; fileAction.source = XciLocation.PC; } else { fileAction.destination = XciLocation.PC; fileAction.source = XciLocation.SD; } switch (fileAction.action) { case FileAction.ShowRenameWindow: formRenamer renamer = new formRenamer(); List <XciItem> renameList = olvList.SelectedObjects.Cast <XciItem>().ToList(); renamer.PopulateList(renameList); renamer.Show(); return; case FileAction.ShowInExplorer: case FileAction.ShowCert: case FileAction.ShowXciInfo: List <XciItem> showInfo = olvList.SelectedObjects.Cast <XciItem>().ToList(); foreach (XciItem item in showInfo) { item.fileAction = Clone(fileAction); ProcessFileManagement(item); } return; case FileAction.OpenOnTinfoilWeb: List <XciItem> openWeb = olvList.SelectedObjects.Cast <XciItem>().ToList(); foreach (XciItem item in openWeb) { if (item.titleId != null || item.titleId.Length > 0) { System.Diagnostics.Process.Start("https://tinfoil.io/Title/" + item.titleId); } } return; default: break; } XciItem xci; int success = 0, failure = 0; action = Enum.GetName(typeof(FileAction), fileAction.action); if (fileAction.action == FileAction.CompletelyDelete) { action = "completely delete (from all locations)"; } if (olvList.SelectedIndices.Count > 1) { if (MessageBox.Show($"Are you sure you want to {action} {olvList.SelectedObjects.Count} games?", $"Confirm {action.ToUpperInvariant()}", MessageBoxButtons.YesNoCancel) != DialogResult.Yes) { return; } List <XciItem> actionList = olvList.SelectedObjects.Cast <XciItem>().ToList(); foreach (XciItem obj in actionList) { xci = Clone(obj); xci.fileAction = Clone(fileAction); if (ProcessFileManagement(xci)) { success++; } else { failure++; } UpdateToolStripLabel($"{action.ToUpperInvariant()} results: Success: {success} Failed: {failure}"); if (fileAction.action == FileAction.Trim) { XciHelper.UpdateXci(xci); } } } else { xci = Clone((XciItem)olvList.GetItem(olvList.SelectedIndex).RowObject); xci.fileAction = fileAction; if (MessageBox.Show($"Are you sure you want to {action} {xci.gameName}?", $"Confirm {action.ToUpperInvariant()}", MessageBoxButtons.YesNoCancel) != DialogResult.Yes) { return; } ProcessFileManagement(xci); if (fileAction.action == FileAction.Trim) { XciHelper.UpdateXci(xci); } } if (fileAction.action == FileAction.CompletelyDelete) { XciHelper.RefreshList(); } }