mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-27 23:40:33 +05:30
Merge pull request #2814 from Isira-Seneviratne/addCallback
Use OnBackPressedDispatcher.addCallback() extension.
This commit is contained in:
commit
f119e39a1e
@ -11,7 +11,7 @@ import android.view.MenuItem
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ScrollView
|
import android.widget.ScrollView
|
||||||
import androidx.activity.OnBackPressedCallback
|
import androidx.activity.addCallback
|
||||||
import androidx.appcompat.widget.SearchView
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import androidx.core.view.children
|
import androidx.core.view.children
|
||||||
@ -144,38 +144,36 @@ class MainActivity : BaseActivity() {
|
|||||||
val playerViewModel = ViewModelProvider(this)[PlayerViewModel::class.java]
|
val playerViewModel = ViewModelProvider(this)[PlayerViewModel::class.java]
|
||||||
|
|
||||||
// new way of handling back presses
|
// new way of handling back presses
|
||||||
onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
|
onBackPressedDispatcher.addCallback {
|
||||||
override fun handleOnBackPressed() {
|
if (playerViewModel.isFullscreen.value == true) {
|
||||||
if (playerViewModel.isFullscreen.value == true) {
|
supportFragmentManager.fragments.filterIsInstance<PlayerFragment>()
|
||||||
for (fragment in supportFragmentManager.fragments) {
|
.firstOrNull()
|
||||||
if (fragment is PlayerFragment) {
|
?.let {
|
||||||
fragment.unsetFullscreen()
|
it.unsetFullscreen()
|
||||||
return
|
return@addCallback
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (binding.mainMotionLayout.progress == 0F) {
|
if (binding.mainMotionLayout.progress == 0F) {
|
||||||
runCatching {
|
runCatching {
|
||||||
minimizePlayer()
|
minimizePlayer()
|
||||||
return
|
return@addCallback
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
when (navController.currentDestination?.id) {
|
|
||||||
startFragmentId -> {
|
|
||||||
moveTaskToBack(true)
|
|
||||||
}
|
|
||||||
R.id.searchResultFragment -> {
|
|
||||||
navController.popBackStack(R.id.searchFragment, true) ||
|
|
||||||
navController.popBackStack()
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
navController.popBackStack()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
when (navController.currentDestination?.id) {
|
||||||
|
startFragmentId -> {
|
||||||
|
moveTaskToBack(true)
|
||||||
|
}
|
||||||
|
R.id.searchResultFragment -> {
|
||||||
|
navController.popBackStack(R.id.searchFragment, true) ||
|
||||||
|
navController.popBackStack()
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
navController.popBackStack()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
loadIntentData()
|
loadIntentData()
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,8 @@ package com.github.libretube.ui.activities
|
|||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.activity.OnBackPressedCallback
|
import androidx.activity.addCallback
|
||||||
|
import androidx.fragment.app.commit
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.databinding.ActivityNointernetBinding
|
import com.github.libretube.databinding.ActivityNointernetBinding
|
||||||
import com.github.libretube.ui.base.BaseActivity
|
import com.github.libretube.ui.base.BaseActivity
|
||||||
@ -40,21 +41,15 @@ class NoInternetActivity : BaseActivity() {
|
|||||||
|
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
onBackPressedDispatcher.addCallback(
|
onBackPressedDispatcher.addCallback(this) {
|
||||||
this,
|
supportFragmentManager.fragments.filterIsInstance<DownloadsFragment>()
|
||||||
object : OnBackPressedCallback(true) {
|
.firstOrNull()
|
||||||
override fun handleOnBackPressed() {
|
?.let {
|
||||||
supportFragmentManager.fragments.forEach {
|
supportFragmentManager.commit {
|
||||||
if (it is DownloadsFragment) {
|
remove(it)
|
||||||
supportFragmentManager.beginTransaction()
|
|
||||||
.remove(it)
|
|
||||||
.commit()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
finishAffinity()
|
|
||||||
}
|
}
|
||||||
}
|
?: finishAffinity()
|
||||||
)
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package com.github.libretube.ui.activities
|
package com.github.libretube.ui.activities
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.activity.OnBackPressedCallback
|
import androidx.activity.addCallback
|
||||||
|
import androidx.fragment.app.commit
|
||||||
|
import androidx.fragment.app.replace
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.databinding.ActivitySettingsBinding
|
import com.github.libretube.databinding.ActivitySettingsBinding
|
||||||
import com.github.libretube.ui.base.BaseActivity
|
import com.github.libretube.ui.base.BaseActivity
|
||||||
@ -29,25 +31,16 @@ class SettingsActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// new way of dealing with back presses instead of onBackPressed()
|
// new way of dealing with back presses instead of onBackPressed()
|
||||||
onBackPressedDispatcher.addCallback(
|
onBackPressedDispatcher.addCallback(this) {
|
||||||
this, // lifecycle owner
|
if (supportFragmentManager.findFragmentById(R.id.settings) is MainSettings) {
|
||||||
object : OnBackPressedCallback(true) {
|
finishAndRemoveTask()
|
||||||
override fun handleOnBackPressed() {
|
} else {
|
||||||
when (supportFragmentManager.findFragmentById(R.id.settings)) {
|
supportFragmentManager.commit {
|
||||||
is MainSettings -> {
|
replace<MainSettings>(R.id.settings)
|
||||||
finishAndRemoveTask()
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
supportFragmentManager
|
|
||||||
.beginTransaction()
|
|
||||||
.replace(R.id.settings, MainSettings())
|
|
||||||
.commit()
|
|
||||||
changeTopBarText(getString(R.string.settings))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
changeTopBarText(getString(R.string.settings))
|
||||||
}
|
}
|
||||||
)
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun changeTopBarText(text: String) {
|
fun changeTopBarText(text: String) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user