IsResolved.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Codice.Client.BaseCommands.Merge;
  2. using PlasticGui.WorkspaceWindow.Merge;
  3. namespace Unity.PlasticSCM.Editor.Views.IncomingChanges.Developer
  4. {
  5. internal static class IsSolved
  6. {
  7. internal static bool Conflict(
  8. MergeChangeInfo changeInfo,
  9. MergeChangeInfo metaChangeInfo,
  10. MergeSolvedFileConflicts solvedFileConflicts)
  11. {
  12. if (IsDirectoryConflict(changeInfo))
  13. {
  14. if (metaChangeInfo == null)
  15. return IsDirectoryConflictResolved(changeInfo);
  16. return IsDirectoryConflictResolved(changeInfo) &&
  17. IsDirectoryConflictResolved(metaChangeInfo);
  18. }
  19. if (metaChangeInfo == null)
  20. {
  21. return IsFileConflictResolved(
  22. changeInfo, solvedFileConflicts);
  23. }
  24. return IsFileConflictResolved(changeInfo, solvedFileConflicts) &&
  25. IsFileConflictResolved(metaChangeInfo, solvedFileConflicts);
  26. }
  27. static bool IsFileConflictResolved(
  28. MergeChangeInfo changeInfo,
  29. MergeSolvedFileConflicts solvedFileConflicts)
  30. {
  31. if (solvedFileConflicts == null)
  32. return false;
  33. return solvedFileConflicts.IsResolved(
  34. changeInfo.GetMount().Id,
  35. changeInfo.GetRevision().ItemId);
  36. }
  37. static bool IsDirectoryConflictResolved(MergeChangeInfo changeInfo)
  38. {
  39. return changeInfo.DirectoryConflict.IsResolved();
  40. }
  41. static bool IsDirectoryConflict(MergeChangeInfo changeInfo)
  42. {
  43. return (changeInfo.DirectoryConflict != null);
  44. }
  45. }
  46. }