Player controls now get dynamically assigned to view model base classes.

This gives view models more freedom in how play events from the player are handled
This commit is contained in:
watsonb8
2019-11-06 22:32:43 -05:00
parent 759c05e53b
commit 794b4739b1
12 changed files with 549 additions and 187 deletions

View File

@ -93,5 +93,13 @@ namespace Aurora.Services.ClientService
}
}
}
public void StopEvents()
{
if (!_eventCancellationTokenSource.IsCancellationRequested)
{
_eventCancellationTokenSource.Cancel();
}
}
}
}

View File

@ -34,6 +34,19 @@ namespace Aurora.Services.PlayerService
get { return _state; }
}
public bool IsLoaded
{
get
{
return this._currentMedia == null;
}
}
public bool IsMediaLoaded(BaseMedia media)
{
return _currentMedia == media;
}
/// <summary>
/// Load media into the media player.
/// </summary>
@ -51,7 +64,11 @@ namespace Aurora.Services.PlayerService
_mediaPlayer.Stopped += OnStopped;
md.Dispose();
MediaChanged.Invoke(this, new MediaChangedEventArgs(_currentMedia.Metadata));
if (MediaChanged != null)
{
MediaChanged.Invoke(this, new MediaChangedEventArgs(_currentMedia.Metadata));
}
}
/// <summary>
@ -62,7 +79,11 @@ namespace Aurora.Services.PlayerService
PlaybackState oldState = _state;
_state = PlaybackState.Playing;
_mediaPlayer.Play();
PlaybackStateChanged.Invoke(this, new PlaybackStateChangedEventArgs(oldState, _state));
if (PlaybackStateChanged != null)
{
PlaybackStateChanged.Invoke(this, new PlaybackStateChangedEventArgs(oldState, _state));
}
}
/// <summary>
@ -73,7 +94,11 @@ namespace Aurora.Services.PlayerService
PlaybackState oldState = _state;
_state = PlaybackState.Buffering;
_mediaPlayer.Pause();
PlaybackStateChanged.Invoke(this, new PlaybackStateChangedEventArgs(oldState, _state));
if (PlaybackStateChanged != null)
{
PlaybackStateChanged.Invoke(this, new PlaybackStateChangedEventArgs(oldState, _state));
}
}
/// <summary>
@ -84,7 +109,12 @@ namespace Aurora.Services.PlayerService
PlaybackState oldState = _state;
_state = PlaybackState.Stopped;
_mediaPlayer.Stop();
PlaybackStateChanged.Invoke(this, new PlaybackStateChangedEventArgs(oldState, _state));
if (PlaybackStateChanged != null)
{
PlaybackStateChanged.Invoke(this, new PlaybackStateChangedEventArgs(oldState, _state));
}
}
public void Enqueue(BaseMedia song)
@ -103,6 +133,7 @@ namespace Aurora.Services.PlayerService
private void Unload()
{
_currentMedia.Unload();
_currentMedia = null;
_mediaPlayer.Media = null;
_mediaPlayer = null;
}