PlaylistSelectionListViewController.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using SongBrowserPlugin.DataAccess;
  2. using System;
  3. using System.IO;
  4. using UnityEngine;
  5. using VRUI;
  6. namespace SongBrowserPlugin.UI
  7. {
  8. public class PlaylistSelectionListViewController : VRUI.VRUIViewController
  9. {
  10. public const String Name = "PlaylistSelectionListViewController";
  11. private Logger _log = new Logger(Name);
  12. private PlaylistTableView _playlistTableView;
  13. private PlaylistsReader _playlistsReader;
  14. public Action<PlaylistSelectionListViewController> didSelectPlaylistRowEvent;
  15. public Playlist SelectedPlaylist { get; private set; }
  16. /// <summary>
  17. /// Instantiate the playlist table view.
  18. /// </summary>
  19. /// <param name="firstActivation"></param>
  20. /// <param name="activationType"></param>
  21. protected override void DidActivate(bool firstActivation, VRUIViewController.ActivationType activationType)
  22. {
  23. _log.Debug("DidActivate()");
  24. if (_playlistsReader == null)
  25. {
  26. String playlistPath = Path.Combine(Environment.CurrentDirectory, "Playlists");
  27. _playlistsReader = new PlaylistsReader(playlistPath);
  28. _playlistsReader.UpdatePlaylists();
  29. _log.Debug("Reader found {0} playlists!", _playlistsReader.Playlists.Count);
  30. }
  31. base.DidActivate(firstActivation, activationType);
  32. if (_playlistTableView == null)
  33. {
  34. _playlistTableView = new GameObject(name).AddComponent<PlaylistTableView>();
  35. _playlistTableView.Init(rectTransform, _playlistsReader);
  36. _playlistTableView.didSelectPlaylistEvent += HandlePlaylistListTableViewDidSelectRow;
  37. }
  38. }
  39. /// <summary>
  40. /// Deactivate - Destroy!
  41. /// </summary>
  42. /// <param name="deactivationType"></param>
  43. protected override void DidDeactivate(VRUIViewController.DeactivationType deactivationType)
  44. {
  45. _log.Debug("DidDeactivate()");
  46. this._playlistTableView.gameObject.SetActive(false);
  47. Destroy(this._playlistTableView);
  48. base.DidDeactivate(deactivationType);
  49. }
  50. /// <summary>
  51. /// Did select a playlist row.
  52. /// </summary>
  53. /// <param name="tableView"></param>
  54. /// <param name="row"></param>
  55. public virtual void HandlePlaylistListTableViewDidSelectRow(PlaylistTableView tableView, int row)
  56. {
  57. this.SelectedPlaylist = _playlistsReader.Playlists[row];
  58. if (this.didSelectPlaylistRowEvent != null)
  59. {
  60. this.didSelectPlaylistRowEvent(this);
  61. }
  62. }
  63. }
  64. }