From 8d80deb3d876cd1aac091c55cb5cb11cfb86f3cb Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sat, 14 Jan 2023 15:20:25 +0530 Subject: [PATCH 01/16] Update desugar_jdk_libs. --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ce6611926..799a499bf 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,7 +12,7 @@ workRuntime = "2.7.1" exoplayer = "2.18.2" retrofit = "2.9.0" jacksonAnnotations = "2.13.4" -desugaring = "1.2.2" +desugaring = "2.0.0" cronetEmbedded = "108.5359.79" cronetOkHttp = "0.1.0" coil = "2.2.2" From 9c333878b47176f2a9bb44c7e89cf06313a3fa05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Wed, 18 Jan 2023 17:40:38 +0000 Subject: [PATCH 02/16] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 84.0% (378 of 450 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/nb_NO/ --- app/src/main/res/values-nb-rNO/strings.xml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index c706c0feb..391877bec 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -429,4 +429,25 @@ Spilleliste-nettadresse Pause ved avslutning Stokk om + Spol tilbake + Pause + Alternative BiB-kontroller + Vis kun lyd og hopp over kontroller i PiP istedenfor spoling tilbake og forover + Lydspiller + Modus for kun lyd + Ingen undertekst + Nedlasting pauset + Nedlasting fullført + Maks. samtidige nedlastinger + Utfører maks. antall samtidige nedlastinger + Ukjent + Fortsett + Spol forover + Gjør LibreTube til en musikkspiller. + Søvntidsur + Hopp over stillhet + Hjelp + O-S-S + Bokmerk + Fjern bokmerke \ No newline at end of file From fe6f9c7bcdb71ab9c54bc4a1ca37e7e06be3a54e Mon Sep 17 00:00:00 2001 From: Andrey Date: Thu, 19 Jan 2023 18:39:42 +0000 Subject: [PATCH 03/16] Translated using Weblate (Russian) Currently translated at 100.0% (450 of 450 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/ru/ --- app/src/main/res/values-ru/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 2820776f4..610d80c7d 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -446,4 +446,8 @@ Продолжить Режим только аудио Превратите LibreTube в музыкальный проигрыватель. + Таймер сна + Пропускать тишину + Помощь + FAQ \ No newline at end of file From db61d750782c3beee1e421cafa05bc897f6ee262 Mon Sep 17 00:00:00 2001 From: Linerly Date: Wed, 18 Jan 2023 13:43:23 +0000 Subject: [PATCH 04/16] Translated using Weblate (Indonesian) Currently translated at 100.0% (450 of 450 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/id/ --- app/src/main/res/values-in/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 58508c9c9..875acfd73 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -446,4 +446,8 @@ Lanjutkan Unduhan selesai Unduhan berlangsungan maksimal + Pewaktu tidur + Lewati keheningan + Bantuan + SSD \ No newline at end of file From 9752b39ae19d4518dad1ff0ad93ac4ab43257f35 Mon Sep 17 00:00:00 2001 From: Fjuro Date: Wed, 18 Jan 2023 17:19:08 +0000 Subject: [PATCH 05/16] Translated using Weblate (Czech) Currently translated at 100.0% (450 of 450 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/cs/ --- app/src/main/res/values-cs/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 044ef381c..460d249ca 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -448,4 +448,6 @@ Proměňte LibreTube v hudební přehrávač. Časovač spánku Přeskočit ticho + Nápověda + Často kladené dotazy \ No newline at end of file From 8f89cd1452984197086883cb962b82c80e3b109f Mon Sep 17 00:00:00 2001 From: Daviteusz Date: Wed, 18 Jan 2023 08:33:16 +0000 Subject: [PATCH 06/16] Translated using Weblate (Polish) Currently translated at 100.0% (450 of 450 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/pl/ --- app/src/main/res/values-pl/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 9812e2c15..3bc4ba29c 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -448,4 +448,6 @@ Tryb „tylko dźwięk” Wyłącz po czasie Pomiń cisze + Pomoc + Często zadawane pytania \ No newline at end of file From 30a5ffae6aa5a98e819c6039da78f08d12ef4ea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Metehan=20=C3=96zy=C3=BCrek?= Date: Thu, 19 Jan 2023 13:14:10 +0000 Subject: [PATCH 07/16] Translated using Weblate (Turkish) Currently translated at 94.0% (423 of 450 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/tr/ --- app/src/main/res/values-tr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index db9d842bc..745d5d64f 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -386,7 +386,7 @@ Bildirimden kuyruğu aç Trendler Öne Çıkanlar - Şu anda trend olan şey + Şu anda popüler Yer imleri Yer imi Yer imlerini temizle From 5e0a83abad8417fb69b07c3116228b5947cae6e4 Mon Sep 17 00:00:00 2001 From: MkQtS Date: Wed, 18 Jan 2023 04:02:09 +0000 Subject: [PATCH 08/16] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (450 of 450 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 7b53dd164..4c052226e 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -446,4 +446,8 @@ 未知 恢复 仅音频模式 + 睡眠定时器 + 跳过静音 + 帮助 + 常见问题 \ No newline at end of file From c67020eff5591a94f25e3a53d42efc1301795fc7 Mon Sep 17 00:00:00 2001 From: Skrripy Date: Wed, 18 Jan 2023 12:58:50 +0000 Subject: [PATCH 09/16] Translated using Weblate (Ukrainian) Currently translated at 100.0% (450 of 450 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/uk/ --- app/src/main/res/values-uk/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 2f34a1c68..e176e1148 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -447,7 +447,7 @@ Завантаження завершено Продовжити Довідка - ЧаП + ЧаПи Таймер сну Пропускати тишу \ No newline at end of file From 65996357568fe66581e4a2f4d8c484afe22a2dc6 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 20 Jan 2023 17:56:49 +0100 Subject: [PATCH 10/16] Only auto enter PiP when enabled --- .../java/com/github/libretube/ui/fragments/PlayerFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index 8bb59b4f3..bf73e6a75 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -1503,7 +1503,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { fun getPipParams(): PictureInPictureParams = PictureInPictureParams.Builder() .setActions(PlayerHelper.getPiPModeActions(requireActivity(), exoPlayer.isPlaying)) .apply { - if (SDK_INT >= Build.VERSION_CODES.S) { + if (SDK_INT >= Build.VERSION_CODES.S && PlayerHelper.pipEnabled) { setAutoEnterEnabled(true) } if (exoPlayer.isPlaying) { From 8431716a14ec949c72f431029ed56d60ba106fc0 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 20 Jan 2023 18:34:11 +0100 Subject: [PATCH 11/16] Use custom animation handlers for player controls --- .../libretube/ui/fragments/PlayerFragment.kt | 7 +--- .../libretube/ui/views/CustomExoPlayerView.kt | 34 +++++++++++++------ .../layout/exo_styled_player_control_view.xml | 6 ++-- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index bf73e6a75..f37de433b 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -273,7 +273,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { */ private fun showBottomBar() { if (this::playerBinding.isInitialized && !binding.player.isPlayerLocked) { - playerBinding.exoBottomBar.visibility = View.VISIBLE + playerBinding.bottomBar.visibility = View.VISIBLE } handler.postDelayed(this::showBottomBar, 100) } @@ -818,11 +818,6 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { private fun prepareExoPlayerView() { exoPlayerView.apply { - setShowSubtitleButton(false) - setShowNextButton(false) - setShowPreviousButton(false) - // controllerShowTimeoutMs = 1500 - controllerHideOnTouch = true useController = false player = exoPlayer } diff --git a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt index 4f2fe027e..36e1aad9c 100644 --- a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt +++ b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt @@ -89,6 +89,10 @@ internal class CustomExoPlayerView( // saved to only load the playback speed once (for the first video) private var playbackPrefSet = false + private val hideControllerRunnable = Runnable { + hideController() + } + fun initialize( playerViewInterface: OnlinePlayerOptions?, doubleTapOverlayBinding: DoubleTapOverlayBinding, @@ -111,6 +115,9 @@ internal class CustomExoPlayerView( applyCaptionsStyle() initializeAdvancedOptions(context) + // don't let the player view hide its controls automatically + controllerShowTimeoutMs = -1 + if (!playbackPrefSet) { player?.playbackParameters = PlaybackParameters( PlayerHelper.playbackSpeed.toFloat(), @@ -196,12 +203,22 @@ internal class CustomExoPlayerView( override fun hideController() { if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { - // hide all the navigation bars that potentially could have been reopened manually ba the user + // hide all the navigation bars that potentially could have been reopened manually by the user (context as? MainActivity)?.windowHelper?.setFullscreen() } + // remove the callback to hide the controller + handler.removeCallbacks(hideControllerRunnable) super.hideController() } + override fun showController() { + // remove the previous callback from the queue to prevent a flashing behavior + handler.removeCallbacks(hideControllerRunnable) + // automatically hide the controller after 2 seconds + handler.postDelayed(hideControllerRunnable, 2000) + super.showController() + } + override fun onTouchEvent(event: MotionEvent): Boolean { return false } @@ -327,7 +344,7 @@ internal class CustomExoPlayerView( binding.exoTopBarRight.visibility = visibility binding.exoCenterControls.visibility = visibility - binding.exoBottomBar.visibility = visibility + binding.bottomBar.visibility = visibility binding.closeImageButton.visibility = visibility binding.exoTitle.visibility = visibility binding.playPauseBTN.visibility = visibility @@ -555,15 +572,12 @@ internal class CustomExoPlayerView( } // add a margin to the top and the bottom bar in landscape mode for notches - val newMargin = if ( - newConfig?.orientation == Configuration.ORIENTATION_LANDSCAPE - ) { - LANDSCAPE_MARGIN_HORIZONTAL - } else { - 0 + val newMargin = when (newConfig?.orientation) { + Configuration.ORIENTATION_LANDSCAPE -> LANDSCAPE_MARGIN_HORIZONTAL + else -> 0 } - listOf(binding.exoTopBar, binding.exoBottomBar).forEach { + listOf(binding.topBar, binding.bottomBar).forEach { val params = it.layoutParams as MarginLayoutParams params.marginStart = newMargin params.marginEnd = newMargin @@ -574,7 +588,7 @@ internal class CustomExoPlayerView( /** * Load the captions style according to the users preferences */ - fun applyCaptionsStyle() { + private fun applyCaptionsStyle() { val captionStyle = PlayerHelper.getCaptionStyle(context) subtitleView?.apply { setApplyEmbeddedFontSizes(false) diff --git a/app/src/main/res/layout/exo_styled_player_control_view.xml b/app/src/main/res/layout/exo_styled_player_control_view.xml index 97d6bffed..a4fb1cced 100644 --- a/app/src/main/res/layout/exo_styled_player_control_view.xml +++ b/app/src/main/res/layout/exo_styled_player_control_view.xml @@ -10,7 +10,7 @@ android:background="@color/exo_black_opacity_60" /> Date: Fri, 20 Jan 2023 18:48:29 +0100 Subject: [PATCH 12/16] Keep space for the status bar in player --- .../libretube/ui/views/CustomExoPlayerView.kt | 14 +++++--------- .../res/layout/exo_styled_player_control_view.xml | 2 +- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt index 36e1aad9c..2717298b7 100644 --- a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt +++ b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt @@ -202,10 +202,6 @@ internal class CustomExoPlayerView( } override fun hideController() { - if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { - // hide all the navigation bars that potentially could have been reopened manually by the user - (context as? MainActivity)?.windowHelper?.setFullscreen() - } // remove the callback to hide the controller handler.removeCallbacks(hideControllerRunnable) super.hideController() @@ -578,10 +574,10 @@ internal class CustomExoPlayerView( } listOf(binding.topBar, binding.bottomBar).forEach { - val params = it.layoutParams as MarginLayoutParams - params.marginStart = newMargin - params.marginEnd = newMargin - it.layoutParams = params + it.layoutParams = (it.layoutParams as MarginLayoutParams).apply { + marginStart = newMargin + marginEnd = newMargin + } } } @@ -676,6 +672,6 @@ internal class CustomExoPlayerView( companion object { private const val SUBTITLE_BOTTOM_PADDING_FRACTION = 0.158f private const val ANIMATION_DURATION = 100L - private val LANDSCAPE_MARGIN_HORIZONTAL = (30).toPixel().toInt() + private val LANDSCAPE_MARGIN_HORIZONTAL = (20).toPixel().toInt() } } diff --git a/app/src/main/res/layout/exo_styled_player_control_view.xml b/app/src/main/res/layout/exo_styled_player_control_view.xml index a4fb1cced..71671e086 100644 --- a/app/src/main/res/layout/exo_styled_player_control_view.xml +++ b/app/src/main/res/layout/exo_styled_player_control_view.xml @@ -17,7 +17,7 @@ android:animateLayoutChanges="true" android:orientation="vertical" android:paddingHorizontal="5dp" - android:paddingTop="5dp" > + android:paddingTop="25dp" > Date: Fri, 20 Jan 2023 18:49:53 +0100 Subject: [PATCH 13/16] Hide the status bar when hiding the controllers --- .../com/github/libretube/ui/views/CustomExoPlayerView.kt | 1 + .../main/java/com/github/libretube/util/WindowHelper.kt | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt index 2717298b7..b592b9574 100644 --- a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt +++ b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt @@ -205,6 +205,7 @@ internal class CustomExoPlayerView( // remove the callback to hide the controller handler.removeCallbacks(hideControllerRunnable) super.hideController() + (context as? MainActivity)?.windowHelper?.hideStatusBar() } override fun showController() { diff --git a/app/src/main/java/com/github/libretube/util/WindowHelper.kt b/app/src/main/java/com/github/libretube/util/WindowHelper.kt index e75c6855d..7f669d25f 100644 --- a/app/src/main/java/com/github/libretube/util/WindowHelper.kt +++ b/app/src/main/java/com/github/libretube/util/WindowHelper.kt @@ -46,4 +46,12 @@ class WindowHelper(private val activity: BaseActivity) { window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS) } + + fun hideStatusBar() = activity.apply { + WindowInsetsControllerCompat(window, window.decorView).hide(WindowInsetsCompat.Type.statusBars()) + } + + fun showStatusBar() = activity.apply { + WindowInsetsControllerCompat(window, window.decorView).show(WindowInsetsCompat.Type.statusBars()) + } } From c1c0e5f6f110f9f97711b6121b99d988253451f4 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 20 Jan 2023 19:00:49 +0100 Subject: [PATCH 14/16] Only show extra padding when there's a notch --- .../com/github/libretube/ui/views/CustomExoPlayerView.kt | 3 +++ .../main/java/com/github/libretube/util/WindowHelper.kt | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt index b592b9574..027f537a5 100644 --- a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt +++ b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt @@ -568,6 +568,9 @@ internal class CustomExoPlayerView( it.layoutParams = params } + // don't add extra padding if there's no cutout + if ((context as? MainActivity)?.windowHelper?.hasCutout() == false) return + // add a margin to the top and the bottom bar in landscape mode for notches val newMargin = when (newConfig?.orientation) { Configuration.ORIENTATION_LANDSCAPE -> LANDSCAPE_MARGIN_HORIZONTAL diff --git a/app/src/main/java/com/github/libretube/util/WindowHelper.kt b/app/src/main/java/com/github/libretube/util/WindowHelper.kt index 7f669d25f..3c6e501f1 100644 --- a/app/src/main/java/com/github/libretube/util/WindowHelper.kt +++ b/app/src/main/java/com/github/libretube/util/WindowHelper.kt @@ -54,4 +54,12 @@ class WindowHelper(private val activity: BaseActivity) { fun showStatusBar() = activity.apply { WindowInsetsControllerCompat(window, window.decorView).show(WindowInsetsCompat.Type.statusBars()) } + + fun hasCutout(): Boolean { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + activity.window.decorView.rootWindowInsets.displayCutout != null + } else { + return false + } + } } From 3cef897e89843ab6c0c87cbc9f0a4493fe3c8a08 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 20 Jan 2023 19:31:18 +0100 Subject: [PATCH 15/16] Hide system bars on shorts --- .../libretube/ui/fragments/PlayerFragment.kt | 4 ++- .../libretube/ui/views/CustomExoPlayerView.kt | 27 +++++++++++++++++-- .../com/github/libretube/util/WindowHelper.kt | 8 ------ 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index f37de433b..17a16914e 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -847,7 +847,9 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { this, doubleTapOverlayBinding, playerGestureControlsViewBinding, - trackSelector + trackSelector, + viewModel, + viewLifecycleOwner ) binding.apply { diff --git a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt index 027f537a5..bb3dd7393 100644 --- a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt +++ b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt @@ -14,6 +14,7 @@ import android.widget.FrameLayout import android.widget.ImageView import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.lifecycle.LifecycleOwner import com.github.libretube.R import com.github.libretube.constants.PreferenceKeys import com.github.libretube.databinding.DoubleTapOverlayBinding @@ -27,6 +28,7 @@ import com.github.libretube.ui.base.BaseActivity import com.github.libretube.ui.interfaces.OnlinePlayerOptions import com.github.libretube.ui.interfaces.PlayerGestureOptions import com.github.libretube.ui.interfaces.PlayerOptions +import com.github.libretube.ui.models.PlayerViewModel import com.github.libretube.ui.sheets.BaseBottomSheet import com.github.libretube.ui.sheets.PlaybackSpeedSheet import com.github.libretube.util.AudioHelper @@ -61,6 +63,7 @@ internal class CustomExoPlayerView( private lateinit var brightnessHelper: BrightnessHelper private lateinit var audioHelper: AudioHelper private var doubleTapOverlayBinding: DoubleTapOverlayBinding? = null + private var playerViewModel: PlayerViewModel? = null /** * Objects from the parent fragment @@ -79,6 +82,9 @@ internal class CustomExoPlayerView( private var resizeModePref = PlayerHelper.resizeModePref + private val windowHelper + get() = (context as? MainActivity)?.windowHelper + private val supportFragmentManager get() = (context as BaseActivity).supportFragmentManager @@ -97,12 +103,15 @@ internal class CustomExoPlayerView( playerViewInterface: OnlinePlayerOptions?, doubleTapOverlayBinding: DoubleTapOverlayBinding, playerGestureControlsViewBinding: PlayerGestureControlsViewBinding, - trackSelector: TrackSelector? + trackSelector: TrackSelector?, + playerViewModel: PlayerViewModel? = null, + viewLifecycleOwner: LifecycleOwner? = null ) { this.playerOptionsInterface = playerViewInterface this.doubleTapOverlayBinding = doubleTapOverlayBinding this.trackSelector = trackSelector this.gestureViewBinding = playerGestureControlsViewBinding + this.playerViewModel = playerViewModel this.playerGestureController = PlayerGestureController(context as BaseActivity, this) this.brightnessHelper = BrightnessHelper(context as Activity) this.audioHelper = AudioHelper(context) @@ -186,6 +195,14 @@ internal class CustomExoPlayerView( } } }) + + playerViewModel?.isFullscreen?.observe(viewLifecycleOwner!!) { isFullscreen -> + if (isFullscreen) { + windowHelper?.setFullscreen() + } else { + windowHelper?.unsetFullscreen() + } + } } private fun updatePlayPauseButton() { @@ -205,7 +222,13 @@ internal class CustomExoPlayerView( // remove the callback to hide the controller handler.removeCallbacks(hideControllerRunnable) super.hideController() - (context as? MainActivity)?.windowHelper?.hideStatusBar() + + // hide system bars if in fullscreen + playerViewModel?.let { + if (it.isFullscreen.value == true) { + windowHelper?.setFullscreen() + } + } } override fun showController() { diff --git a/app/src/main/java/com/github/libretube/util/WindowHelper.kt b/app/src/main/java/com/github/libretube/util/WindowHelper.kt index 3c6e501f1..cb8259c80 100644 --- a/app/src/main/java/com/github/libretube/util/WindowHelper.kt +++ b/app/src/main/java/com/github/libretube/util/WindowHelper.kt @@ -47,14 +47,6 @@ class WindowHelper(private val activity: BaseActivity) { window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS) } - fun hideStatusBar() = activity.apply { - WindowInsetsControllerCompat(window, window.decorView).hide(WindowInsetsCompat.Type.statusBars()) - } - - fun showStatusBar() = activity.apply { - WindowInsetsControllerCompat(window, window.decorView).show(WindowInsetsCompat.Type.statusBars()) - } - fun hasCutout(): Boolean { return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { activity.window.decorView.rootWindowInsets.displayCutout != null From e4cbb2b90cc05dc78166f1322b15817ddadaed5b Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 20 Jan 2023 19:39:51 +0100 Subject: [PATCH 16/16] Fix the extra padding for the vertical plaeyr --- .../github/libretube/ui/views/CustomExoPlayerView.kt | 10 ++++++++++ .../main/res/layout/exo_styled_player_control_view.xml | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt index bb3dd7393..9f35f5c5e 100644 --- a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt +++ b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt @@ -591,6 +591,16 @@ internal class CustomExoPlayerView( it.layoutParams = params } + // add padding to the top bar to not overlap the status bar + binding.topBar.let { + setPadding( + it.paddingLeft, + (if (newConfig?.orientation == Configuration.ORIENTATION_LANDSCAPE) 25 else 5).toPixel().toInt(), + it.paddingRight, + it.paddingBottom + ) + } + // don't add extra padding if there's no cutout if ((context as? MainActivity)?.windowHelper?.hasCutout() == false) return diff --git a/app/src/main/res/layout/exo_styled_player_control_view.xml b/app/src/main/res/layout/exo_styled_player_control_view.xml index 71671e086..a4fb1cced 100644 --- a/app/src/main/res/layout/exo_styled_player_control_view.xml +++ b/app/src/main/res/layout/exo_styled_player_control_view.xml @@ -17,7 +17,7 @@ android:animateLayoutChanges="true" android:orientation="vertical" android:paddingHorizontal="5dp" - android:paddingTop="25dp" > + android:paddingTop="5dp" >