private void OnPlayerStateChange (PlayerEventStateChangeArgs args)
{
if (play_pause_action == null) {
play_pause_action = Actions["Playback.PlayPauseAction"];
}
switch (args.Current) {
case PlayerState.Loaded:
ShowStopAction ();
subtitle_actions.Sensitive = ServiceManager.PlayerEngine.CurrentTrack.HasAttribute (TrackMediaAttributes.VideoStream);
subtitle_actions.ReloadEmbeddedSubtitle ();
break;
case PlayerState.Contacting:
case PlayerState.Loading:
case PlayerState.Playing:
ShowStopAction ();
break;
case PlayerState.Paused:
ShowPlay ();
break;
case PlayerState.Idle:
subtitle_actions.Sensitive = false;
ShowPlay ();
break;
default:
break;
}
TrackInfo track = ServiceManager.PlayerEngine.CurrentTrack;
if (track != null) {
this["SeekToAction"].Sensitive = !track.IsLive;
this["RestartSongAction"].Sensitive = !track.IsLive;
this["RestartSongAction"].Label = track.RestartLabel;
this["JumpToPlayingTrackAction"].Label = track.JumpToLabel;
this["JumpToPlayingTrackAction"].Sensitive = true;
} else {
this["JumpToPlayingTrackAction"].Sensitive = false;
this["RestartSongAction"].Sensitive = false;
this["SeekToAction"].Sensitive = false;
}
// Disable all actions while NotReady
Sensitive = args.Current != PlayerState.NotReady;
}