private void changeVideoQuality(View anchor) {
    String ytvid = mMp.getActiveVideoYtId();
    if (null == ytvid) return;

    YTHacker hack = RTState.get().getCachedYtHacker(ytvid);
    final ArrayList<Integer> opts = new ArrayList<Integer>();
    int i = 0;
    for (Utils.PrefQuality q : Utils.PrefQuality.values()) {
      if (mVQuality != q
          && null != hack
          && null != hack.getVideo(YTPlayer.mapPrefToQScore(q), true)) opts.add(q.getText());
    }

    final CharSequence[] items = new CharSequence[opts.size()];
    for (i = 0; i < items.length; i++) items[i] = getResources().getText(opts.get(i));

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(R.string.set_video_quality);
    builder.setItems(
        items,
        new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int item) {
            doChangeVideoQuality(Utils.PrefQuality.getMatchingQuality(opts.get(item)));
          }
        });
    builder.create().show();
  }