diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/DownloadedPlayerActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/DownloadedPlayerActivity.kt index 7a42cea93f7..53bfa9be45e 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/DownloadedPlayerActivity.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/DownloadedPlayerActivity.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.os.Bundle import android.util.Log import android.view.KeyEvent +import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import com.lagradost.cloudstream3.CommonActivity import com.lagradost.cloudstream3.R @@ -60,7 +61,28 @@ class DownloadedPlayerActivity : AppCompatActivity() { Log.i(TAG, "onCreate") handleIntent(intent) - attachBackPressedCallback("DownloadedPlayerActivity") { finish() } + attachBackPressedCallback("DownloadedPlayerActivity") { + if (exitDialog?.isShowing == true) { + exitDialog?.dismiss() + return@attachBackPressedCallback + } + showExitConfirmDialog() + } + } + + private var exitDialog: AlertDialog? = null + + private fun showExitConfirmDialog() { + if (isFinishing || isDestroyed) return + exitDialog = AlertDialog.Builder(this, R.style.AlertDialogCustom) + .setTitle(R.string.exit_player_confirm_title) + .setMessage(R.string.exit_player_confirm_message) + .setPositiveButton(R.string.yes) { _, _ -> + finish() + } + .setNegativeButton(R.string.no, null) + .setOnDismissListener { exitDialog = null } + .show() } private fun handleIntent(intent: Intent) { diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/FullScreenPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/FullScreenPlayer.kt index 26706699bcc..2c915b7ee16 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/FullScreenPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/FullScreenPlayer.kt @@ -442,6 +442,26 @@ open class FullScreenPlayer : AbstractPlayerFragment( } } + private var exitConfirmDialog: AlertDialog? = null + + private fun showExitConfirmDialog() { + val act = activity ?: return + if (exitConfirmDialog?.isShowing == true) return + if (act.isFinishing || act.isDestroyed) return + exitConfirmDialog = AlertDialog.Builder(act, R.style.AlertDialogCustom) + .setTitle(R.string.exit_player_confirm_title) + .setMessage(R.string.exit_player_confirm_message) + .setPositiveButton(R.string.yes) { _, _ -> + activity?.popCurrentPage("FullScreenPlayer") + } + .setNegativeButton(R.string.no, null) + .setOnDismissListener { + exitConfirmDialog = null + activity?.hideSystemUI() + } + .show() + } + private fun setupKeyEventListener() { keyEventListener = { (event, hasNavigated) -> when { @@ -473,7 +493,7 @@ open class FullScreenPlayer : AbstractPlayerFragment( // netflix capture back and hide ~monke onClickChange() } else { - activity?.popCurrentPage("FullScreenPlayer") + showExitConfirmDialog() } } playerHostView?.requestUpdateBrightnessOverlayOnNextLayout() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 31cf951cf5f..8767cc5bf42 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -439,8 +439,8 @@ The quick brown fox jumps over the lazy dog Recommended @@ -572,6 +572,8 @@ Mark as watched Remove from watched Are you sure you want to exit\? + Exit Player? + Your buffered stream will be lost. Are you sure you want to exit? Yes No OK