Add back press animation to search controllers

This commit is contained in:
Jays2Kings 2023-10-16 21:51:20 -07:00
parent 59e11ff486
commit 75a750d779
4 changed files with 13 additions and 12 deletions

View file

@ -260,19 +260,22 @@ open class MainActivity : BaseActivity<MainActivityBinding>() {
override fun handleOnBackStarted(backEvent: BackEventCompat) { override fun handleOnBackStarted(backEvent: BackEventCompat) {
controllerHandlesBackPress = false controllerHandlesBackPress = false
val controller by lazy { router.backstack.lastOrNull()?.controller }
if (!( if (!(
Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU &&
ViewCompat.getRootWindowInsets(window.decorView) ViewCompat.getRootWindowInsets(window.decorView)
?.isVisible(WindowInsetsCompat.Type.ime()) == true ?.isVisible(WindowInsetsCompat.Type.ime()) == true
) && ) &&
actionMode == null && actionMode == null &&
!(binding.searchToolbar.hasExpandedActionView() && binding.cardFrame.isVisible) !(
binding.searchToolbar.hasExpandedActionView() && binding.cardFrame.isVisible &&
controller !is SearchControllerInterface
)
) { ) {
controllerHandlesBackPress = true controllerHandlesBackPress = true
} }
if (controllerHandlesBackPress) { if (controllerHandlesBackPress) {
val controller = router.backstack.lastOrNull()?.controller as? BackHandlerControllerInterface (controller as? BackHandlerControllerInterface)?.handleOnBackStarted(backEvent)
controller?.handleOnBackStarted(backEvent)
} }
} }
@ -1514,6 +1517,8 @@ interface HingeSupportedController {
fun updateForHinge() fun updateForHinge()
} }
interface SearchControllerInterface : FloatingSearchInterface, SmallToolbarInterface
interface FloatingSearchInterface { interface FloatingSearchInterface {
fun searchTitle(title: String?): String? { fun searchTitle(title: String?): String? {
if (this is Controller) { if (this is Controller) {

View file

@ -10,9 +10,8 @@ import androidx.appcompat.widget.SearchView
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.databinding.SettingsSearchControllerBinding import eu.kanade.tachiyomi.databinding.SettingsSearchControllerBinding
import eu.kanade.tachiyomi.ui.base.SmallToolbarInterface
import eu.kanade.tachiyomi.ui.base.controller.BaseController import eu.kanade.tachiyomi.ui.base.controller.BaseController
import eu.kanade.tachiyomi.ui.main.FloatingSearchInterface import eu.kanade.tachiyomi.ui.main.SearchControllerInterface
import eu.kanade.tachiyomi.ui.setting.SettingsController import eu.kanade.tachiyomi.ui.setting.SettingsController
import eu.kanade.tachiyomi.util.view.activityBinding import eu.kanade.tachiyomi.util.view.activityBinding
import eu.kanade.tachiyomi.util.view.liftAppbarWith import eu.kanade.tachiyomi.util.view.liftAppbarWith
@ -25,8 +24,7 @@ import uy.kohesive.injekt.api.get
*/ */
class SettingsSearchController : class SettingsSearchController :
BaseController<SettingsSearchControllerBinding>(), BaseController<SettingsSearchControllerBinding>(),
FloatingSearchInterface, SearchControllerInterface,
SmallToolbarInterface,
SettingsSearchAdapter.OnTitleClickListener { SettingsSearchAdapter.OnTitleClickListener {
/** /**

View file

@ -16,11 +16,10 @@ import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.SourceGlobalSearchControllerBinding import eu.kanade.tachiyomi.databinding.SourceGlobalSearchControllerBinding
import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.ui.base.SmallToolbarInterface
import eu.kanade.tachiyomi.ui.base.controller.BaseCoroutineController import eu.kanade.tachiyomi.ui.base.controller.BaseCoroutineController
import eu.kanade.tachiyomi.ui.main.FloatingSearchInterface
import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.main.SearchActivity import eu.kanade.tachiyomi.ui.main.SearchActivity
import eu.kanade.tachiyomi.ui.main.SearchControllerInterface
import eu.kanade.tachiyomi.ui.manga.MangaDetailsController import eu.kanade.tachiyomi.ui.manga.MangaDetailsController
import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController
import eu.kanade.tachiyomi.util.addOrRemoveToFavorites import eu.kanade.tachiyomi.util.addOrRemoveToFavorites
@ -44,8 +43,7 @@ open class GlobalSearchController(
val extensionFilter: String? = null, val extensionFilter: String? = null,
bundle: Bundle? = null, bundle: Bundle? = null,
) : BaseCoroutineController<SourceGlobalSearchControllerBinding, GlobalSearchPresenter>(bundle), ) : BaseCoroutineController<SourceGlobalSearchControllerBinding, GlobalSearchPresenter>(bundle),
FloatingSearchInterface, SearchControllerInterface,
SmallToolbarInterface,
GlobalSearchAdapter.OnTitleClickListener, GlobalSearchAdapter.OnTitleClickListener,
GlobalSearchCardAdapter.OnMangaClickListener { GlobalSearchCardAdapter.OnMangaClickListener {

View file

@ -56,8 +56,8 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.MainActivityBinding import eu.kanade.tachiyomi.databinding.MainActivityBinding
import eu.kanade.tachiyomi.ui.base.SmallToolbarInterface import eu.kanade.tachiyomi.ui.base.SmallToolbarInterface
import eu.kanade.tachiyomi.ui.base.controller.BaseController import eu.kanade.tachiyomi.ui.base.controller.BaseController
import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.ui.base.controller.CrossFadeChangeHandler import eu.kanade.tachiyomi.ui.base.controller.CrossFadeChangeHandler
import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.ui.base.controller.OneWayFadeChangeHandler import eu.kanade.tachiyomi.ui.base.controller.OneWayFadeChangeHandler
import eu.kanade.tachiyomi.ui.main.FloatingSearchInterface import eu.kanade.tachiyomi.ui.main.FloatingSearchInterface
import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.ui.main.MainActivity