Ejemplo n.º 1
0
        private void PaintBrowseDataRow(DataRow row)
        {
            GameObject itemGO = null;

            //create different row items and fill them based on row type
            if (row is HeaderDataRow)
            {
                itemGO = Instantiate <GameObject>(BrowseItemHeaderPrefab, BrowsePanelContent);
                itemGO.GetComponentInChildren <Text>().text = row.Title;
            }
            else if (row is SongDataRow songRow)
            {
                //TODO discriminate between showing album songs and showing playlist songs

                itemGO = Instantiate <GameObject>(BrowseItemSongPrefab, BrowsePanelContent);
                itemGO.transform.Find("Track").GetComponent <Text>().text  = songRow.Track.ToString();
                itemGO.transform.Find("Title").GetComponent <Text>().text  = songRow.Title;
                itemGO.transform.Find("Length").GetComponent <Text>().text = TimeSpan.FromSeconds(songRow.Length).ToString(@"m\:ss");
                itemGO.transform.Find("Artist").GetComponent <Text>().text = (songRow.Artists != null && songRow.Artists.Count > 0) ? songRow.Artists[0] : "MISSING";
                itemGO.transform.Find("Extra").GetComponent <Text>().text  = songRow.Album;

                //add select handling
                var button = itemGO.GetComponent <Button>();
                button.onClick.AddListener(delegate() { HandleItemSelected((RectTransform)itemGO.transform); });
            }
            else if (row is AlbumDataRow || row is ArtistDataRow || row is PlaylistDataRow || row is FolderDataRow)
            {
                //all these use a fairly generic handler
                itemGO = Instantiate <GameObject>(BrowseItemPrefab, BrowsePanelContent);
                itemGO.GetComponentInChildren <Text>().text = row.Title;
            }
            else
            {
                throw new NotImplementedException();
            }

            BackingFieldReference itemBFR = itemGO.GetComponent <BackingFieldReference>();

            itemBFR.Id    = row.Id;
            itemBFR.Value = row;

            //attach navigation handler
            if (row.TargetBrowsePath != null && row.TargetBrowsePath.Count > 0)
            {
                var button = itemGO.GetComponent <Button>();
                button.onClick.AddListener(() => Navigate(row.TargetBrowsePath));
            }

            //attach select/deselect handlers
            //var itemTrigger = itemGO.GetComponent<EventTrigger>();
            //var itemTransform = (RectTransform)itemGO.transform;
            //itemTrigger.AddListener(EventTriggerType.Select, d => HandleItemSelected(itemTransform)); //doesn't work, something something buttons
            //itemTrigger.AddListener(EventTriggerType.Deselect, d => HandleItemDeselected(itemTransform));
        }
Ejemplo n.º 2
0
        private void PaintQueueDataRow(DataRow row, int index)
        {
            var        songRow = row as SongDataRow;
            GameObject itemGO  = Instantiate(QueueItemPrefab, QueuePanelContent);

            BackingFieldReference itemBFR = itemGO.GetComponent <BackingFieldReference>();

            itemBFR.Id    = row.Id;
            itemBFR.Value = row;
            itemBFR.Index = index;

            itemGO.transform.Find("Title").GetComponent <Text>().text  = songRow.Title;
            itemGO.transform.Find("Length").GetComponent <Text>().text = TimeSpan.FromSeconds(songRow.Length).ToString(@"m\:ss");

            var button = itemGO.GetComponent <Button>();

            button.onClick.AddListener(delegate() { HandleItemSelected((RectTransform)itemGO.transform); HandleQueueItemSelected(index); });

            //preselect
            if (XSMPState.CurrentQueueIndex >= 0 && index == XSMPState.CurrentQueueIndex)
            {
                HandleItemSelected((RectTransform)itemGO.transform);
            }
        }