using System; using System.Linq; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace VRSample.UI.Components { /// /// Generic UI component for option selection. /// /// public sealed class OptionViewComponent : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler { public RawImage Image { get; private set; } public TMP_Text TitleText { get; private set; } public TMP_Text DescriptionText { get; private set; } public TMP_Text SelectButtonText { get; private set; } public Button SelectButton { get; private set; } private GameObject hoverGroup; public void Initialise(string title, string description, Action onClickHandler, string selectButtonText = "Select") { TitleText.text = title; DescriptionText.text = description; SelectButtonText.text = selectButtonText; SelectButton.onClick.AddListener(onClickHandler.Invoke); } // public void Initialise(Stream streamDetails, Texture previewImage, Action onClickHandler) // { // Image.texture = previewImage; // TitleText.text = streamDetails.name; // var UpdatedAt = FormatTime(DateTime.Parse(streamDetails.updatedAt)); // DescriptionText.text = $"Updated {UpdatedAt} ago"; // // List branchOptions = new(streamDetails.branches.items.Count); // foreach (Branch b in streamDetails.branches.items) // { // branchOptions.Add(new TMP_Dropdown.OptionData(b.name)); // } // // // SelectButton.onClick.AddListener(() => // { // Debug.Log("button pressed"); // // Branch selectedBranch = streamDetails.branches.items.FirstOrDefault(b => b.name == selectedBranchName); // Commit selectedCommit = selectedBranch?.commits.items.FirstOrDefault(); // if (selectedCommit == null) return; // // onClickHandler(streamDetails.id, selectedCommit); // }); // } // protected static string FormatTime(DateTime updatedAt) // { // TimeSpan dt = DateTime.Now - updatedAt; // // if (dt.Days == 1) return $"{dt.Days} day"; // if (dt.Days >= 1) return $"{dt.Days} days"; // if (dt.Hours == 1) return $"{dt.Hours} hour"; // if (dt.Hours >= 1) return $"{dt.Hours} hours"; // if(dt.Minutes == 1) return $"{dt.Minutes} minute"; // if(dt.Minutes >= 1) return $"{dt.Minutes} minutes"; // return $"{dt.Seconds} seconds"; // } void Awake() { //TODO: update SelectButton = GetComponentsInChildren