/// <summary> /// Invokes the BeforeCheckedChange event. /// </summary> /// <param name="invokingModNode">The invoking ModNode that will be passed as sender.</param> /// <param name="newCheckedState">The new checked state that should be applied.</param> /// <returns>True if continue with the change.</returns> internal static BeforeCheckedChangeEventArgs InvokeBeforeCheckedChange(ConflictInfoNode invokingModNode, bool newCheckedState) { var args = new BeforeCheckedChangeEventArgs(invokingModNode, newCheckedState); if (BeforeCheckedChange != null) BeforeCheckedChange(invokingModNode, args); return args; }
/// <summary> /// Invokes the BeforeCheckedChange event. /// </summary> /// <param name="invokingModNode">The invoking ModNode that will be passed as sender.</param> /// <param name="newCheckedState">The new checked state that should be applied.</param> /// <returns>True if continue with the change.</returns> internal static BeforeCheckedChangeEventArgs InvokeBeforeCheckedChange(ConflictInfoNode invokingModNode, bool newCheckedState) { var args = new BeforeCheckedChangeEventArgs(invokingModNode, newCheckedState); if (BeforeCheckedChange != null) { BeforeCheckedChange(invokingModNode, args); } return(args); }
private void SolveConflicts(ConflictInfoNode conflictingFile) { bool install = false; ModNode selectedNode = null; foreach (var fileNode in conflictingFile.Nodes.Cast<ConflictInfoNode>()) { // remember selected node for later use. if (fileNode.Checked) { selectedNode = fileNode.ConflictingNode; continue; } // uninstall not selected files if installed. if (fileNode.ConflictingNode.IsInstalled) { Messenger.AddInfo(string.Format(Messages.MSG_CONFLICT_SOLVER_REMOVE_CONFLICT_FILE_0, fileNode.ConflictingNode.Name)); fileNode.ConflictingNode._Checked = false; ModNodeHandler.ProcessMod(fileNode.ConflictingNode, true); UninstallParentIfNecessary(fileNode.ConflictingNode); install = true; } // reset destination of not selected files. Messenger.AddInfo(string.Format(Messages.MSG_CONFLICT_SOLVER_RESET_DESTINATION_CONFLICT_FILE_0, fileNode.ConflictingNode.Name)); fileNode.ConflictingNode._Checked = false; ModNodeHandler.SetDestinationPaths(fileNode.ConflictingNode, string.Empty); ResetPatentDestinationIfNecessary(fileNode.ConflictingNode); } // install selected file if one of the not selected was installed. if (install && selectedNode != null) { Messenger.AddInfo(string.Format(Messages.MSG_CONFLICT_SOLVER_INSTALL_SELECTED_FILE_0, selectedNode.Name)); selectedNode._Checked = true; ModNodeHandler.ProcessMod(selectedNode, true); InstallParentIfNecessary(selectedNode); } }