AssetStatus.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System;
  2. namespace Unity.PlasticSCM.Editor.AssetsOverlays
  3. {
  4. [Flags]
  5. internal enum AssetStatus
  6. {
  7. None = 0,
  8. Private = 1 << 0,
  9. Ignored = 1 << 2,
  10. Added = 1 << 3,
  11. Checkout = 1 << 4,
  12. Controlled = 1 << 5,
  13. UpToDate = 1 << 6,
  14. OutOfDate = 1 << 7,
  15. Conflicted = 1 << 8,
  16. DeletedOnServer = 1 << 9,
  17. Locked = 1 << 10,
  18. LockedRemote = 1 << 11,
  19. }
  20. internal class LockStatusData
  21. {
  22. internal readonly AssetStatus Status;
  23. internal readonly string LockedBy;
  24. internal readonly string WorkspaceName;
  25. internal LockStatusData(
  26. AssetStatus status,
  27. string lockedBy,
  28. string workspaceName)
  29. {
  30. Status = status;
  31. LockedBy = lockedBy;
  32. WorkspaceName = workspaceName;
  33. }
  34. }
  35. internal class ClassifyAssetStatus
  36. {
  37. internal static bool IsControlled(AssetStatus status)
  38. {
  39. return ContainsAny(status, AssetStatus.Controlled);
  40. }
  41. internal static bool IsLockedRemote(AssetStatus status)
  42. {
  43. return ContainsAny(status, AssetStatus.LockedRemote);
  44. }
  45. internal static bool IsConflicted(AssetStatus status)
  46. {
  47. return ContainsAny(status, AssetStatus.Conflicted);
  48. }
  49. internal static bool IsAdded(AssetStatus status)
  50. {
  51. return ContainsAny(status, AssetStatus.Added);
  52. }
  53. internal static bool IsCheckedOut(AssetStatus status)
  54. {
  55. return ContainsAny(status, AssetStatus.Checkout);
  56. }
  57. static bool ContainsAny(AssetStatus status, AssetStatus matchTo)
  58. {
  59. return (status & matchTo) != AssetStatus.None;
  60. }
  61. }
  62. }