WindowCache.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using System;
  2. using System.Collections.Generic;
  3. using Unity.Cloud.Collaborate.Common;
  4. using UnityEngine;
  5. using UnityEngine.Serialization;
  6. namespace Unity.Cloud.Collaborate.UserInterface
  7. {
  8. internal interface IWindowCache
  9. {
  10. void Clear();
  11. SelectedItemsDictionary SimpleSelectedItems { get; set; }
  12. string RevisionSummary { get; set; }
  13. string ChangesSearchValue { get; set; }
  14. string SelectedHistoryRevision { get; set; }
  15. int HistoryPageNumber { get; set; }
  16. int TabIndex { get; set; }
  17. }
  18. [Location("Cache/Window.yml", LocationAttribute.Location.LibraryFolder)]
  19. internal class WindowCache : ScriptableObjectSingleton<WindowCache>, IWindowCache
  20. {
  21. public event Action<IWindowCache> BeforeSerialize;
  22. public void Serialize()
  23. {
  24. BeforeSerialize?.Invoke(this);
  25. Save();
  26. }
  27. public void Clear()
  28. {
  29. SimpleSelectedItems = default;
  30. RevisionSummary = default;
  31. ChangesSearchValue = default;
  32. SelectedHistoryRevision = default;
  33. HistoryPageNumber = default;
  34. TabIndex = default;
  35. }
  36. SelectedItemsDictionary IWindowCache.SimpleSelectedItems
  37. {
  38. get => SimpleSelectedItems;
  39. set => SimpleSelectedItems = value;
  40. }
  41. string IWindowCache.RevisionSummary
  42. {
  43. get => RevisionSummary;
  44. set => RevisionSummary = value;
  45. }
  46. string IWindowCache.ChangesSearchValue
  47. {
  48. get => ChangesSearchValue;
  49. set => ChangesSearchValue = value;
  50. }
  51. string IWindowCache.SelectedHistoryRevision
  52. {
  53. get => SelectedHistoryRevision;
  54. set => SelectedHistoryRevision = value;
  55. }
  56. int IWindowCache.HistoryPageNumber
  57. {
  58. get => HistoryPageNumber;
  59. set => HistoryPageNumber = value;
  60. }
  61. int IWindowCache.TabIndex
  62. {
  63. get => TabIndex;
  64. set => TabIndex = value;
  65. }
  66. [SerializeField]
  67. public SelectedItemsDictionary SimpleSelectedItems = new SelectedItemsDictionary();
  68. [FormerlySerializedAs("CommitMessage")]
  69. [SerializeField]
  70. public string RevisionSummary;
  71. [SerializeField]
  72. public string ChangesSearchValue;
  73. [SerializeField]
  74. public string SelectedHistoryRevision;
  75. [SerializeField]
  76. public int HistoryPageNumber;
  77. [SerializeField]
  78. public int TabIndex;
  79. }
  80. [Serializable]
  81. internal class SelectedItemsDictionary : SerializableDictionary<string, bool>
  82. {
  83. public SelectedItemsDictionary() { }
  84. public SelectedItemsDictionary(IDictionary<string, bool> dictionary) : base(dictionary) { }
  85. }
  86. }