|
@@ -1,11 +1,7 @@
|
|
using SongBrowserPlugin.DataAccess;
|
|
using SongBrowserPlugin.DataAccess;
|
|
using System;
|
|
using System;
|
|
-using System.Collections.Generic;
|
|
|
|
-using System.Linq;
|
|
|
|
-using System.Text;
|
|
|
|
-using System.Threading.Tasks;
|
|
|
|
|
|
+using System.Reflection;
|
|
using UnityEngine;
|
|
using UnityEngine;
|
|
-using UnityEngine.UI;
|
|
|
|
using VRUI;
|
|
using VRUI;
|
|
|
|
|
|
namespace SongBrowserPlugin.UI
|
|
namespace SongBrowserPlugin.UI
|
|
@@ -15,14 +11,19 @@ namespace SongBrowserPlugin.UI
|
|
public const String Name = "PlaylistFlowCoordinator";
|
|
public const String Name = "PlaylistFlowCoordinator";
|
|
private Logger _log = new Logger(Name);
|
|
private Logger _log = new Logger(Name);
|
|
|
|
|
|
- private PlaylistSelectionMasterViewController _playlistNavigationController;
|
|
|
|
- private PlaylistSelectionListViewController _playlistViewController;
|
|
|
|
|
|
+ private PlaylistSelectionNavigationController _playlistNavigationController;
|
|
|
|
+ private PlaylistSelectionListViewController _playlistListViewController;
|
|
private PlaylistDetailViewController _playlistDetailViewController;
|
|
private PlaylistDetailViewController _playlistDetailViewController;
|
|
|
|
|
|
private bool _initialized;
|
|
private bool _initialized;
|
|
|
|
|
|
public Action<Playlist> didSelectPlaylist;
|
|
public Action<Playlist> didSelectPlaylist;
|
|
|
|
|
|
|
|
+ public virtual void OnDestroy()
|
|
|
|
+ {
|
|
|
|
+ _log.Trace("OnDestroy()");
|
|
|
|
+ }
|
|
|
|
+
|
|
/// <summary>
|
|
/// <summary>
|
|
///
|
|
///
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -31,30 +32,37 @@ namespace SongBrowserPlugin.UI
|
|
/// <param name="gameplayMode"></param>
|
|
/// <param name="gameplayMode"></param>
|
|
public virtual void Present(VRUIViewController parentViewController)
|
|
public virtual void Present(VRUIViewController parentViewController)
|
|
{
|
|
{
|
|
|
|
+ _log.Trace("Presenting Playlist Selector! - initialized: {0}", this._initialized);
|
|
if (!this._initialized)
|
|
if (!this._initialized)
|
|
{
|
|
{
|
|
- _playlistNavigationController = UIBuilder.CreateViewController<PlaylistSelectionMasterViewController>("PlaylistSelectionMasterViewController");
|
|
|
|
- _playlistViewController = UIBuilder.CreateViewController<PlaylistSelectionListViewController>("PlaylistSelectionListViewController");
|
|
|
|
|
|
+ _playlistNavigationController = UIBuilder.CreateViewController<PlaylistSelectionNavigationController>("PlaylistSelectionMasterViewController");
|
|
|
|
+ _playlistListViewController = UIBuilder.CreateViewController<PlaylistSelectionListViewController>("PlaylistSelectionListViewController");
|
|
_playlistDetailViewController = UIBuilder.CreateViewController<PlaylistDetailViewController>("PlaylistDetailViewController");
|
|
_playlistDetailViewController = UIBuilder.CreateViewController<PlaylistDetailViewController>("PlaylistDetailViewController");
|
|
|
|
|
|
- this._playlistViewController.didSelectPlaylistEvent += HandlePlaylistListDidSelectPlaylist;
|
|
|
|
|
|
+ // Set parent view controllers appropriately.
|
|
|
|
+ _playlistNavigationController.GetType().GetField("_parentViewController", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).SetValue(_playlistNavigationController, parentViewController);
|
|
|
|
+ _playlistListViewController.GetType().GetField("_parentViewController", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).SetValue(_playlistListViewController, _playlistNavigationController);
|
|
|
|
+ _playlistDetailViewController.GetType().GetField("_parentViewController", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).SetValue(_playlistDetailViewController, _playlistListViewController);
|
|
|
|
+
|
|
|
|
+ this._playlistListViewController.didSelectPlaylistRowEvent += HandlePlaylistListDidSelectPlaylist;
|
|
this._playlistDetailViewController.didPressPlayPlaylist += HandleDidPlayPlaylist;
|
|
this._playlistDetailViewController.didPressPlayPlaylist += HandleDidPlayPlaylist;
|
|
|
|
+ this._playlistNavigationController.didDismissEvent += HandleDidFinish;
|
|
|
|
|
|
- this._initialized = true;
|
|
|
|
- }
|
|
|
|
|
|
+ _playlistListViewController.rectTransform.anchorMin = new Vector2(0.3f, 0f);
|
|
|
|
+ _playlistListViewController.rectTransform.anchorMax = new Vector2(0.7f, 1f);
|
|
|
|
|
|
- _playlistViewController.rectTransform.anchorMin = new Vector2(0.3f, 0f);
|
|
|
|
- _playlistViewController.rectTransform.anchorMax = new Vector2(0.7f, 1f);
|
|
|
|
|
|
+ _playlistDetailViewController.rectTransform.anchorMin = new Vector2(0.3f, 0f);
|
|
|
|
+ _playlistDetailViewController.rectTransform.anchorMax = new Vector2(0.7f, 1f);
|
|
|
|
|
|
- _playlistDetailViewController.rectTransform.anchorMin = new Vector2(0.3f, 0f);
|
|
|
|
- _playlistDetailViewController.rectTransform.anchorMax = new Vector2(0.7f, 1f);
|
|
|
|
|
|
+ parentViewController.PresentModalViewController(this._playlistNavigationController, null, parentViewController.isRebuildingHierarchy);
|
|
|
|
+ this._playlistNavigationController.PushViewController(this._playlistListViewController, parentViewController.isRebuildingHierarchy);
|
|
|
|
|
|
- parentViewController.PresentModalViewController(this._playlistNavigationController, null, parentViewController.isRebuildingHierarchy);
|
|
|
|
- this._playlistNavigationController.PushViewController(this._playlistViewController, parentViewController.isRebuildingHierarchy);
|
|
|
|
|
|
+ this._initialized = true;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
- ///
|
|
|
|
|
|
+ /// Update the playlist detail view when a row is selected.
|
|
/// </summary>
|
|
/// </summary>
|
|
/// <param name="songListViewController"></param>
|
|
/// <param name="songListViewController"></param>
|
|
public virtual void HandlePlaylistListDidSelectPlaylist(PlaylistSelectionListViewController playlistListViewController)
|
|
public virtual void HandlePlaylistListDidSelectPlaylist(PlaylistSelectionListViewController playlistListViewController)
|
|
@@ -71,23 +79,52 @@ namespace SongBrowserPlugin.UI
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// Playlist was selected, dismiss view and inform song browser.
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="p"></param>
|
|
public void HandleDidPlayPlaylist(Playlist p)
|
|
public void HandleDidPlayPlaylist(Playlist p)
|
|
{
|
|
{
|
|
- this._playlistNavigationController.DismissModalViewController(delegate ()
|
|
|
|
|
|
+ try
|
|
|
|
+ {
|
|
|
|
+ _log.Debug("Playlist selector selected playlist...");
|
|
|
|
+ this._playlistNavigationController.DismissModalViewController(delegate ()
|
|
|
|
+ {
|
|
|
|
+ didSelectPlaylist.Invoke(p);
|
|
|
|
+ }, true);
|
|
|
|
+ }
|
|
|
|
+ catch (Exception e)
|
|
{
|
|
{
|
|
- didSelectPlaylist.Invoke(p);
|
|
|
|
- });
|
|
|
|
|
|
+ _log.Exception("", e);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// Playlist was dismissed, inform song browser (pass in null).
|
|
|
|
+ /// </summary>
|
|
|
|
+ public void HandleDidFinish()
|
|
|
|
+ {
|
|
|
|
+ try
|
|
|
|
+ {
|
|
|
|
+ _log.Debug("Playlist selector dismissed...");
|
|
|
|
+ this._playlistNavigationController.DismissModalViewController(delegate ()
|
|
|
|
+ {
|
|
|
|
+ didSelectPlaylist.Invoke(null);
|
|
|
|
+ }, true);
|
|
|
|
+ }
|
|
|
|
+ catch (Exception e)
|
|
|
|
+ {
|
|
|
|
+ _log.Exception("", e);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
public void LateUpdate()
|
|
public void LateUpdate()
|
|
{
|
|
{
|
|
// accept
|
|
// accept
|
|
if (Input.GetKeyDown(KeyCode.Return))
|
|
if (Input.GetKeyDown(KeyCode.Return))
|
|
{
|
|
{
|
|
- HandleDidPlayPlaylist(this._playlistViewController.SelectedPlaylist);
|
|
|
|
|
|
+ HandleDidPlayPlaylist(this._playlistListViewController.SelectedPlaylist);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
}
|
|
}
|