From c6316abbcec79704a7f13c60b679cc2a2e874255 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 28 Mar 2021 12:03:33 +0200 Subject: [PATCH] Fix opening directly fullscreen on tablets --- .../fragments/detail/VideoDetailFragment.java | 2 +- .../java/org/schabi/newpipe/player/Player.java | 17 +++++++++++++++++ .../schabi/newpipe/util/NavigationHelper.java | 10 +--------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index 950430463..759ec3546 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -1109,7 +1109,7 @@ public final class VideoDetailFragment && PlayerHelper.isStartMainPlayerFullscreenEnabled(requireContext()) && !DeviceUtils.isLandscape(requireContext()) && PlayerHelper.globalScreenOrientationLocked(requireContext())) { - // open directly in fullscreen TODO does it work for large-land layouts? + // toggle landscape in order to open directly in fullscreen onScreenRotationButtonClicked(); } diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index 10532c5eb..832c40cd3 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -621,6 +621,9 @@ public final class Player implements return; } + // needed for tablets, check the function for a better explanation + directlyOpenFullscreenIfNeeded(); + final PlaybackParameters savedParameters = retrievePlaybackParametersFromPrefs(this); final float playbackSpeed = savedParameters.speed; final float playbackPitch = savedParameters.pitch; @@ -743,6 +746,20 @@ public final class Player implements NavigationHelper.sendPlayerStartedEvent(context); } + private void directlyOpenFullscreenIfNeeded() { + if (fragmentListener != null + && PlayerHelper.isStartMainPlayerFullscreenEnabled(service) + && DeviceUtils.isTablet(service) + && videoPlayerSelected() + && PlayerHelper.globalScreenOrientationLocked(service)) { + // Open fullscreen on tablets where the option to have the main player start + // automatically in fullscreen mode is on. Rotating the device to landscape is already + // done in VideoDetailFragment when the thumbnail is clicked, and that's enough for + // phones, but not for tablets since the mini player can be also shown in landscape. + fragmentListener.onScreenRotationButtonClicked(); + } + } + private void initPlayback(@NonNull final PlayQueue queue, @RepeatMode final int repeatMode, final float playbackSpeed, diff --git a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java index 563a67af4..67043d808 100644 --- a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java @@ -366,15 +366,7 @@ public final class NavigationHelper { if (switchingPlayers) { // 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. - if (playerType == MainPlayer.PlayerType.POPUP - && !DeviceUtils.isLandscape(context) - && PlayerHelper.globalScreenOrientationLocked(context)) { - detailFragment.onScreenRotationButtonClicked(); - } - // pass false to directlyFullscreenIfApplicable since that's handled just above here - detailFragment.openVideoPlayer(false); + detailFragment.openVideoPlayer(true); } else { detailFragment.selectAndLoadVideo(serviceId, url, title, playQueue); }