// ========================================================================
  //
  // Overriding 'YTPlayer.PlayerStateListener'
  //
  // ========================================================================
  @Override
  public void onStateChanged(YTPlayer.MPState from, int fromFlag, YTPlayer.MPState to, int toFlag) {
    switch (to) {
      case IDLE:
        mVQuality = Utils.getPrefQuality();
        showLoadingSpinProgress();
        break;

      case PREPARED:
        fitVideoSurfaceToScreen(Orientation.SYSTEM);
        // missing break is intentional.
      case STARTED:
      case PAUSED:
      case STOPPED:
      case ERROR:
        if (mMp.isPlayerSeeking(toFlag) || mMp.isPlayerBuffering(toFlag)) showLoadingSpinProgress();
        else hideLoadingSpinProgress();
        break;

      default:; // ignore it.
    }
  }