package app.fedilab.fedilabtube.helper; /* Copyright 2020 Thomas Schneider * * This file is a part of TubeLab * * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License as published by the Free Software Foundation; either version 3 of the * License, or (at your option) any later version. * * TubeLab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details. * * You should have received a copy of the GNU General Public License along with TubeLab; if not, * see . */ import android.content.Context; import android.content.res.Resources; import android.graphics.Color; import android.view.Gravity; import android.view.View; import android.widget.Button; import android.widget.ImageButton; import android.widget.MediaController; import androidx.core.content.res.ResourcesCompat; import app.fedilab.fedilabtube.PeertubeActivity; import app.fedilab.fedilabtube.R; import app.fedilab.fedilabtube.client.data.VideoData.Video; /** * Created by Thomas * FullScreenMediaController. Inspired from the work at http://www.zoftino.com/android-videoview-playing-videos-full-screen */ public class FullScreenMediaController extends MediaController { private ImageButton fullScreen; private Button resolution; private final Context context; private Video peertube; private String resolutionVal; public FullScreenMediaController(Context context) { super(context); this.context = context; } @SuppressWarnings({"unused", "RedundantSuppression"}) public FullScreenMediaController(Context context, Video peertube) { super(context); this.peertube = peertube; this.context = context; } @Override public void setAnchorView(View view) { super.setAnchorView(view); //image button for full screen to be added to media controller fullScreen = new ImageButton(context); LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.gravity = Gravity.END; params.rightMargin = 80; params.topMargin = 22; addView(fullScreen, params); if (resolutionVal == null) resolutionVal = peertube.getFiles().get(0).getResolutions().getLabel() + "p"; resolution = new Button(context); resolution.setAllCaps(false); resolution.setBackgroundColor(Color.TRANSPARENT); resolution.setText(resolutionVal); resolution.setPadding(0, 0, 0, 0); LayoutParams paramsButton = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); paramsButton.gravity = Gravity.START; paramsButton.rightMargin = 80; paramsButton.topMargin = 22; resolution.setOnClickListener(v -> ((PeertubeActivity) getContext()).displayResolution()); addView(resolution, paramsButton); if (((PeertubeActivity) getContext()).getFullscreen() == fullscreen.ON) { Resources resources = getResources(); fullScreen.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_baseline_fullscreen_exit_24, null)); } else { Resources resources = getResources(); fullScreen.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_baseline_fullscreen_24, null)); } //add listener to image button to handle full screen and exit full screen events fullScreen.setOnClickListener(v -> { if (((PeertubeActivity) getContext()).getFullscreen() == fullscreen.ON) { ((PeertubeActivity) getContext()).setFullscreen(fullscreen.OFF); } else { ((PeertubeActivity) getContext()).setFullscreen(fullscreen.ON); } ((PeertubeActivity) getContext()).change(); changeIcon(); }); } @SuppressWarnings({"unused", "RedundantSuppression"}) public void setResolutionVal(String resolutionVal) { this.resolutionVal = resolutionVal; if (resolution != null) resolution.setText(String.format("%sp", resolutionVal)); } public void changeIcon() { //fullscreen indicator from intent if (((PeertubeActivity) getContext()).getFullscreen() == fullscreen.ON) { Resources resources = getResources(); fullScreen.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_baseline_fullscreen_exit_24, null)); } else { Resources resources = getResources(); fullScreen.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_baseline_fullscreen_24, null)); } } public enum fullscreen { OFF, ON } }