Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ public final class VideoDetailFragment
int lastStableBottomSheetState = BottomSheetBehavior.STATE_EXPANDED;
@State
protected boolean autoPlayEnabled = true;
private boolean forceFullscreen = false;

@Nullable
private StreamInfo currentInfo = null;
Expand Down Expand Up @@ -877,7 +878,7 @@ private void runWorker(final boolean forceLoad, final boolean addToBackStack) {
}
}

if (isAutoplayEnabled()) {
if (isAutoplayEnabled() || forceFullscreen) {
openVideoPlayerAutoFullscreen();
}
}
Expand Down Expand Up @@ -1134,15 +1135,29 @@ public void openVideoPlayer(final boolean directlyFullscreenIfApplicable) {
}

/**
* If the option to start directly fullscreen is enabled, calls
* {@link #openVideoPlayer(boolean)} with {@code directlyFullscreenIfApplicable = true}, so that
* if the user is not already in landscape and he has screen orientation locked the activity
* rotates and fullscreen starts. Otherwise, if the option to start directly fullscreen is
* disabled, calls {@link #openVideoPlayer(boolean)} with {@code directlyFullscreenIfApplicable
* = false}, hence preventing it from going directly fullscreen.
* If the option to start directly fullscreen is enabled, or if {@code forceFullscreen} is
* {@code true} (e.g. when switching from popup player to main player with a different video),
* calls {@link #openVideoPlayer(boolean)} with {@code directlyFullscreenIfApplicable = true},
* so that if the user is not already in landscape and he has screen orientation locked the
* activity rotates and fullscreen starts. Otherwise, if the option to start directly fullscreen
* is disabled and {@code forceFullscreen} is {@code false}, calls
* {@link #openVideoPlayer(boolean)} with {@code directlyFullscreenIfApplicable = false},
* hence preventing it from going directly fullscreen.
* {@code forceFullscreen} is reset to {@code false} after this call.
*/
public void openVideoPlayerAutoFullscreen() {
Comment thread
TobiGr marked this conversation as resolved.
openVideoPlayer(PlayerHelper.isStartMainPlayerFullscreenEnabled(requireContext()));
openVideoPlayer(forceFullscreen
|| PlayerHelper.isStartMainPlayerFullscreenEnabled(requireContext()));
forceFullscreen = false;
}

public void setForceFullscreen(final boolean force) {
this.forceFullscreen = force;
}

@Nullable
public String getUrl() {
return url;
}

private void openNormalBackgroundPlayer(final boolean append) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.schabi.newpipe.util;

import static android.text.TextUtils.isEmpty;
import android.text.TextUtils;
import static org.schabi.newpipe.util.ListHelper.getUrlAndNonTorrentStreams;

import android.annotation.SuppressLint;
Expand Down Expand Up @@ -430,13 +431,16 @@ public static void openVideoDetailFragment(@NonNull final Context context,
final RunnableWithVideoDetailFragment onVideoDetailFragmentReady = detailFragment -> {
expandMainPlayer(detailFragment.requireActivity());
detailFragment.setAutoPlay(autoPlay);
if (switchingPlayers) {
if (switchingPlayers && TextUtils.equals(detailFragment.getUrl(), url)) {
// Situation when user switches from players to main player. All needed data is
// here, we can start watching (assuming newQueue equals playQueue).
// Starting directly in fullscreen if the previous player type was popup.
detailFragment.openVideoPlayer(playerType == PlayerType.POPUP
|| PlayerHelper.isStartMainPlayerFullscreenEnabled(context));
} else {
if (switchingPlayers && playerType == PlayerType.POPUP) {
detailFragment.setForceFullscreen(true);
}
detailFragment.selectAndLoadVideo(serviceId, url, title, playQueue);
}
detailFragment.scrollToTop();
Expand Down
Loading