@@ -192,15 +192,24 @@ class CustomExoPlayerView(
192192 playerView = this ,
193193 videoFrameView = backgroundBinding.exoContentFrame,
194194 onSwipeUpCompleted = {
195- if (! isFullscreen()) togglePlayerFullscreen( true )
195+ if (! isFullscreen()) playerCallback?.toggleFullscreen( )
196196 },
197- onSwipeDownCompleted = ::minimizeOrExitPlayer
197+ onSwipeDownCompleted = {
198+ if (isFullscreen()) playerCallback?.toggleFullscreen()
199+ }
198200 )
199201 }
200202
201- fun initialize (chaptersViewModel : ChaptersViewModel , playerViewModel : PlayerViewModel , viewLifecycleOwner : LifecycleOwner , playerCallback : CustomPlayerCallback ) {
203+ fun initialize (
204+ chaptersViewModel : ChaptersViewModel ,
205+ commonPlayerViewModel : CommonPlayerViewModel ,
206+ playerViewModel : PlayerViewModel ,
207+ viewLifecycleOwner : LifecycleOwner ,
208+ playerCallback : CustomPlayerCallback
209+ ) {
202210 this .chaptersViewModel = chaptersViewModel
203211 this .playerViewModel = playerViewModel
212+ this .commonPlayerViewModel = commonPlayerViewModel
204213 this .viewLifecycleOwner = viewLifecycleOwner
205214 this .playerCallback = playerCallback
206215
@@ -217,6 +226,7 @@ class CustomExoPlayerView(
217226 // don't let the player view show its controls automatically
218227 controllerAutoShow = false
219228
229+ binding.fullscreen.setOnClickListener { playerCallback.toggleFullscreen() }
220230 // locking the player
221231 binding.lockPlayer.setOnClickListener {
222232 // change the locked/unlocked icon
@@ -372,6 +382,7 @@ class CustomExoPlayerView(
372382 updateMarginsByFullscreenMode()
373383
374384 commonPlayerViewModel?.isFullscreen?.observe(viewLifecycleOwner) { isFullscreen ->
385+ Log .e(" is full" , isFullscreen.toString())
375386 updateTopBarMargin()
376387
377388 binding.fullscreen.isInvisible = PlayerHelper .autoFullscreenEnabled
@@ -977,14 +988,15 @@ class CustomExoPlayerView(
977988 // put normal tracks before auto-generated tracks
978989 .sortedBy { it.roleFlags == PlayerHelper .ROLE_FLAG_AUTO_GEN_SUBTITLE }
979990 .associateWith {
980- val displayName = Locale .forLanguageTag(it.language.orEmpty()).getDisplayLanguage(Locale .getDefault())
991+ val displayName = Locale .forLanguageTag(it.language.orEmpty())
992+ .getDisplayLanguage(Locale .getDefault())
981993
982- if (it.roleFlags == PlayerHelper .ROLE_FLAG_AUTO_GEN_SUBTITLE ) {
983- " $displayName (${context.getString(R .string.auto_generated)} )"
984- } else {
985- displayName
994+ if (it.roleFlags == PlayerHelper .ROLE_FLAG_AUTO_GEN_SUBTITLE ) {
995+ " $displayName (${context.getString(R .string.auto_generated)} )"
996+ } else {
997+ displayName
998+ }
986999 }
987- }
9881000
9891001 val currentSubtitle = PlayerHelper .getCurrentPlayedCaptionFormat(player)
9901002 BaseBottomSheet ()
@@ -994,10 +1006,11 @@ class CustomExoPlayerView(
9941006 track == currentSubtitle
9951007 }?.value ? : context.getString(R .string.none)
9961008 ) { index ->
997- val captionsFormat = captions.keys.toList().getOrNull(index - 1 ) ? : return @setSimpleItems
1009+ val captionsFormat =
1010+ captions.keys.toList().getOrNull(index - 1 ) ? : return @setSimpleItems
9981011
999- updateCurrentSubtitle(captionsFormat.id)
1000- playerViewModel?.currentCaptionId = captionsFormat.id
1012+ updateCurrentSubtitle(captionsFormat.id)
1013+ playerViewModel?.currentCaptionId = captionsFormat.id
10011014 }
10021015 .show(supportFragmentManager)
10031016 }
@@ -1070,11 +1083,12 @@ class CustomExoPlayerView(
10701083 fun setPlayerResolution (resolution : Int , isSelectedByUser : Boolean = false) {
10711084 val player = player as ? MediaController ? : return
10721085
1073- val transformedResolution = if (! isSelectedByUser && playerCallback?.isVideoShort() ? : false ) {
1074- ceil(resolution * 16.0 / 9.0 ).toInt()
1075- } else {
1076- resolution
1077- }
1086+ val transformedResolution =
1087+ if (! isSelectedByUser && playerCallback?.isVideoShort() ? : false ) {
1088+ ceil(resolution * 16.0 / 9.0 ).toInt()
1089+ } else {
1090+ resolution
1091+ }
10781092
10791093 player.sendCustomCommand(
10801094 AbstractPlayerService .runPlayerActionCommand, bundleOf(
@@ -1138,14 +1152,11 @@ class CustomExoPlayerView(
11381152 baseBottomSheet.show(supportFragmentManager)
11391153 }
11401154
1141- override fun exitFullscreen () {
1142- playerCallback?.exitFullscreen()
1143- }
1144-
11451155 override fun onStatsClicked () {
11461156 val player = player ? : return
11471157
1148- val videoStats = PlayerHelper .getVideoStats(player.currentTracks, playerCallback?.getVideoId().orEmpty())
1158+ val videoStats =
1159+ PlayerHelper .getVideoStats(player.currentTracks, playerCallback?.getVideoId().orEmpty())
11491160 StatsSheet ()
11501161 .apply { arguments = bundleOf(IntentData .videoStats to videoStats) }
11511162 .show(supportFragmentManager)
@@ -1414,7 +1425,7 @@ class CustomExoPlayerView(
14141425 }
14151426
14161427 KeyEvent .KEYCODE_F -> {
1417- togglePlayerFullscreen ()
1428+ playerCallback?.toggleFullscreen ()
14181429 }
14191430
14201431 else -> return false
@@ -1423,14 +1434,6 @@ class CustomExoPlayerView(
14231434 return true
14241435 }
14251436
1426- fun togglePlayerFullscreen (isFullscreen : Boolean = !isFullscreen()) {
1427- try {
1428- findFragment<PlayerFragment >().toggleFullscreen(isFullscreen)
1429- } catch (error: IllegalStateException ) {
1430- Log .e(this ::class .simpleName, error.message.toString())
1431- }
1432- }
1433-
14341437 override fun getViewMeasures (): Pair <Int , Int > {
14351438 return width to height
14361439 }
@@ -1458,10 +1461,6 @@ class CustomExoPlayerView(
14581461 updateDisplayedDuration()
14591462 }
14601463
1461- fun minimizeOrExitPlayer () {
1462- exitFullscreen()
1463- }
1464-
14651464 fun getWindow (): Window = currentWindow ? : activity.window
14661465
14671466 companion object {
0 commit comments