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:
@ -93,5 +93,13 @@ namespace Aurora.Services.ClientService
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void StopEvents()
|
||||
{
|
||||
if (!_eventCancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
_eventCancellationTokenSource.Cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user