I think i've got simultaneous playback working but it is hard to test

This commit is contained in:
watsonb8
2019-11-09 14:55:09 -05:00
parent 426a368385
commit bbf8f3ae57
6 changed files with 234 additions and 139 deletions

View File

@ -17,17 +17,25 @@ namespace Aurora.Design.Views.Main
/// <param name="media"></param>
public delegate void SetPlayerMetadataDelegate(BaseMedia media);
public delegate void SetPlayerVisibleDelegate(Boolean visible);
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MainView : MasterDetailPage, IDisposable
{
private Dictionary<int, BaseViewModel> _viewModels;
private BaseViewModel _lastViewModel;
private Player _player;
private ContentPresenter _viewContent;
public MainView()
{
InitializeComponent();
BindingContext = new MainViewModel();
_viewModels = new Dictionary<int, BaseViewModel>();
_player = (Player)ContentPage.FindByName("Player");
_viewContent = (ContentPresenter)ContentPage.Content.FindByName("ViewContent");
MasterPage.ListView.ItemSelected += OnNavItemSelected;
Appearing += OnAppearing;
@ -84,8 +92,7 @@ namespace Aurora.Design.Views.Main
//Assign player controls to viewmodel
AssignPlayerControls(vm);
ContentPresenter viewContent = (ContentPresenter)ContentPage.Content.FindByName("ViewContent");
viewContent.Content = view;
_viewContent.Content = view;
MasterPage.ListView.SelectedItem = null;
}
@ -121,9 +128,7 @@ namespace Aurora.Design.Views.Main
AssignPlayerControls(vm);
vm.OnActive();
ContentPresenter viewContent = (ContentPresenter)ContentPage.Content.FindByName("ViewContent");
viewContent.Content = view;
_viewContent.Content = view;
MasterPage.ListView.SelectedItem = screenList.FirstOrDefault();
}
@ -135,6 +140,7 @@ namespace Aurora.Design.Views.Main
private void UnassignPlayerControls(BaseViewModel vm)
{
vm.SetPlayerMetadata = null;
vm.SetPlayerVisible = null;
}
/// <summary>
@ -143,25 +149,37 @@ namespace Aurora.Design.Views.Main
/// <param name="vm">BaseViewModel to assign controls to</param>
private void AssignPlayerControls(BaseViewModel vm)
{
Player player = (Player)ContentPage.FindByName("Player");
player.PlayButtonCommand = new Command(vm.OnPlayExecute, vm.CanPlayExecute);
player.NextButtonCommand = new Command(vm.OnNextExecute, vm.CanNextExecute);
player.PreviousButtonCommand = new Command(vm.OnPreviousExecute, vm.CanPreviousExecute);
_player.PlayButtonCommand = new Command(vm.OnPlayButtonExecute, vm.CanPlayButtonExecute);
_player.NextButtonCommand = new Command(vm.OnNextButtonExecute, vm.CanNextButtonExecute);
_player.PreviousButtonCommand = new Command(vm.OnPreviousButtonExecute, vm.CanPreviousButtonExecute);
//Assign SetPlayer delegate
vm.SetPlayerMetadata = SetPlayerDelegate;
vm.SetPlayerMetadata = SetPlayer;
vm.SetPlayerVisible = SetPlayerVisible;
}
private void SetPlayerDelegate(BaseMedia media)
/// <summary>
/// SetPlayerDelegate implementation
/// </summary>
/// <param name="media"></param>
private void SetPlayer(BaseMedia media)
{
Player player = (Player)ContentPage.FindByName("Player");
if (media.Metadata is AudioMetadata)
{
AudioMetadata meta = (AudioMetadata)media.Metadata;
player.ArtistName = meta.Artist;
player.SongTitle = meta.Title;
_player.ArtistName = meta.Artist;
_player.SongTitle = meta.Title;
}
}
/// <summary>
/// SetPlayerVisibleDelegate implementation
/// </summary>
/// <param name="visible"></param>
private void SetPlayerVisible(Boolean visible)
{
_player.IsVisible = visible;
}
}
}