Browse Source

PreviewVideoFullscreenDialog: use listeners to control transfer, and pause the video while transfer is happening

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
Álvaro Brey 2 years ago
parent
commit
bdc0fc71e5

+ 28 - 14
app/src/main/java/com/owncloud/android/ui/preview/PreviewVideoFullscreenDialog.kt

@@ -61,18 +61,23 @@ class PreviewVideoFullscreenDialog(
     }
 
     override fun show() {
-        goFullScreen()
-        super.show()
-        binding.videoPlayer.showController()
-    }
-
-    private fun goFullScreen() {
-        setListeners(exoPlayer)
-        StyledPlayerView.switchTargetView(exoPlayer, sourceView, binding.videoPlayer)
+        val isPlaying = exoPlayer.isPlaying
+        if (isPlaying) {
+            exoPlayer.pause()
+        }
         enableImmersiveMode()
+        setOnShowListener {
+            StyledPlayerView.switchTargetView(exoPlayer, sourceView, binding.videoPlayer)
+            setListeners()
+            if (isPlaying) {
+                exoPlayer.play()
+            }
+            binding.videoPlayer.showController()
+        }
+        super.show()
     }
 
-    private fun setListeners(exoPlayer: ExoPlayer) {
+    private fun setListeners() {
         binding.root.findViewById<View>(R.id.exo_exit_fs).setOnClickListener { onBackPressed() }
         val pauseButton: View = binding.root.findViewById(R.id.exo_pause)
         pauseButton.setOnClickListener { exoPlayer.pause() }
@@ -96,13 +101,22 @@ class PreviewVideoFullscreenDialog(
     }
 
     override fun onBackPressed() {
-        playingStateListener?.let {
-            exoPlayer.removeListener(it)
+        val isPlaying = exoPlayer.isPlaying
+        if (isPlaying) {
+            exoPlayer.pause()
         }
-        StyledPlayerView.switchTargetView(exoPlayer, binding.videoPlayer, sourceView)
         disableImmersiveMode()
-        super.onBackPressed()
-        sourceView.showController()
+        setOnDismissListener {
+            playingStateListener?.let {
+                exoPlayer.removeListener(it)
+            }
+            StyledPlayerView.switchTargetView(exoPlayer, binding.videoPlayer, sourceView)
+            if (isPlaying) {
+                exoPlayer.play()
+            }
+            sourceView.showController()
+        }
+        dismiss()
     }
 
     private fun enableImmersiveMode() {