FileBrowserItem.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using UnityEngine.EventSystems;
  4. namespace SimpleFileBrowser
  5. {
  6. public class FileBrowserItem : ListItem, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler
  7. {
  8. #region Constants
  9. private const float DOUBLE_CLICK_TIME = 0.5f;
  10. #endregion
  11. #region Variables
  12. protected FileBrowser fileBrowser;
  13. #pragma warning disable 0649
  14. [SerializeField]
  15. private Image background;
  16. [SerializeField]
  17. private Image icon;
  18. [SerializeField]
  19. private Text nameText;
  20. #pragma warning restore 0649
  21. private float prevTouchTime = Mathf.NegativeInfinity;
  22. #endregion
  23. #region Properties
  24. private RectTransform m_transform;
  25. public RectTransform TransformComponent
  26. {
  27. get
  28. {
  29. if( m_transform == null )
  30. m_transform = (RectTransform) transform;
  31. return m_transform;
  32. }
  33. }
  34. public string Name { get { return nameText.text; } }
  35. public bool IsDirectory { get; private set; }
  36. #endregion
  37. #region Initialization Functions
  38. public void SetFileBrowser( FileBrowser fileBrowser )
  39. {
  40. this.fileBrowser = fileBrowser;
  41. }
  42. public void SetFile( Sprite icon, string name, bool isDirectory )
  43. {
  44. this.icon.sprite = icon;
  45. nameText.text = name;
  46. IsDirectory = isDirectory;
  47. }
  48. #endregion
  49. #region Pointer Events
  50. public void OnPointerClick( PointerEventData eventData )
  51. {
  52. if( FileBrowser.SingleClickMode )
  53. {
  54. fileBrowser.OnItemSelected( this );
  55. fileBrowser.OnItemOpened( this );
  56. }
  57. else
  58. {
  59. if( Time.realtimeSinceStartup - prevTouchTime < DOUBLE_CLICK_TIME )
  60. {
  61. if( fileBrowser.SelectedFilePosition == Position )
  62. fileBrowser.OnItemOpened( this );
  63. prevTouchTime = Mathf.NegativeInfinity;
  64. }
  65. else
  66. {
  67. fileBrowser.OnItemSelected( this );
  68. prevTouchTime = Time.realtimeSinceStartup;
  69. }
  70. }
  71. }
  72. public void OnPointerEnter( PointerEventData eventData )
  73. {
  74. #if UNITY_EDITOR || ( !UNITY_ANDROID && !UNITY_IOS )
  75. if( fileBrowser.SelectedFilePosition != Position )
  76. background.color = fileBrowser.hoveredFileColor;
  77. #endif
  78. }
  79. public void OnPointerExit( PointerEventData eventData )
  80. {
  81. #if UNITY_EDITOR || ( !UNITY_ANDROID && !UNITY_IOS )
  82. if( fileBrowser.SelectedFilePosition != Position )
  83. background.color = fileBrowser.normalFileColor;
  84. #endif
  85. }
  86. #endregion
  87. #region Other Events
  88. public void Select()
  89. {
  90. background.color = fileBrowser.selectedFileColor;
  91. }
  92. public void Deselect()
  93. {
  94. background.color = fileBrowser.normalFileColor;
  95. }
  96. public void SetHidden( bool isHidden )
  97. {
  98. Color c = icon.color;
  99. c.a = isHidden ? 0.5f : 1f;
  100. icon.color = c;
  101. c = nameText.color;
  102. c.a = isHidden ? 0.55f : 1f;
  103. nameText.color = c;
  104. }
  105. #endregion
  106. }
  107. }