// ---- Player Event Handlers ---- private void OnPlayerEngineStateChanged(object o, Banshee.MediaEngine.PlayerEngineStateArgs args) { switch (args.State) { case PlayerEngineState.Loaded: seek_slider.Duration = PlayerEngineCore.CurrentTrack.Duration.TotalSeconds; UpdateMetaDisplay(); break; case PlayerEngineState.Idle: seek_slider.SetIdle(); InfoBox.Visible = false; UpdateMetaDisplay(); break; } }
private void OnPlayerEvent(PlayerEventArgs args) { switch (args.Event) { case PlayerEvent.Iterate: OnPlayerEngineTick(); break; case PlayerEvent.StartOfStream: stream_position_label.StreamState = StreamLabelState.Playing; seek_slider.CanSeek = ServiceManager.PlayerEngine.CanSeek; break; case PlayerEvent.Buffering: PlayerEventBufferingArgs buffering = (PlayerEventBufferingArgs)args; if (buffering.Progress >= 1.0) { stream_position_label.StreamState = StreamLabelState.Playing; break; } stream_position_label.StreamState = StreamLabelState.Buffering; stream_position_label.BufferingProgress = buffering.Progress; seek_slider.Sensitive = false; break; case PlayerEvent.StateChange: switch (((PlayerEventStateChangeArgs)args).Current) { case PlayerState.Contacting: transitioning = false; stream_position_label.StreamState = StreamLabelState.Contacting; seek_slider.SetIdle(); break; case PlayerState.Loading: transitioning = false; if (((PlayerEventStateChangeArgs)args).Previous == PlayerState.Contacting) { stream_position_label.StreamState = StreamLabelState.Loading; seek_slider.SetIdle(); } break; case PlayerState.Idle: seek_slider.CanSeek = false; if (!transitioning) { stream_position_label.StreamState = StreamLabelState.Idle; seek_slider.Duration = 0; seek_slider.SeekValue = 0; seek_slider.SetIdle(); } break; default: transitioning = false; break; } break; } }