Fix chapter search clearing in manga details

This commit is contained in:
Jays2Kings 2022-05-07 04:36:25 -04:00
parent a432366172
commit 2a0924cea5

View file

@ -53,7 +53,6 @@ import eu.kanade.tachiyomi.data.image.coil.getBestColor
import eu.kanade.tachiyomi.data.notification.NotificationReceiver import eu.kanade.tachiyomi.data.notification.NotificationReceiver
import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.databinding.MangaDetailsControllerBinding import eu.kanade.tachiyomi.databinding.MangaDetailsControllerBinding
import eu.kanade.tachiyomi.source.LocalSource
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.HttpSource
@ -101,6 +100,7 @@ import eu.kanade.tachiyomi.util.system.setCustomTitleAndMessage
import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.view.activityBinding import eu.kanade.tachiyomi.util.view.activityBinding
import eu.kanade.tachiyomi.util.view.getText import eu.kanade.tachiyomi.util.view.getText
import eu.kanade.tachiyomi.util.view.isControllerVisible
import eu.kanade.tachiyomi.util.view.requestFilePermissionsSafe import eu.kanade.tachiyomi.util.view.requestFilePermissionsSafe
import eu.kanade.tachiyomi.util.view.scrollViewWith import eu.kanade.tachiyomi.util.view.scrollViewWith
import eu.kanade.tachiyomi.util.view.setOnQueryTextChangeListener import eu.kanade.tachiyomi.util.view.setOnQueryTextChangeListener
@ -570,10 +570,13 @@ class MangaDetailsController :
// fetch cover again in case the user set a new cover while reading // fetch cover again in case the user set a new cover while reading
setPaletteColor() setPaletteColor()
} }
val isCurrentController = router?.backstack?.lastOrNull()?.controller == if (isControllerVisible) {
this
if (isCurrentController) {
setStatusBarAndToolbar() setStatusBarAndToolbar()
val searchView =
activityBinding?.toolbar?.menu?.findItem(R.id.action_search)?.actionView as? SearchView
searchView?.post {
setSearchViewListener(searchView)
}
} }
} }
@ -717,7 +720,7 @@ class MangaDetailsController :
adapter?.setChapters(presenter.chapters) adapter?.setChapters(presenter.chapters)
tabletAdapter?.notifyItemChanged(0) tabletAdapter?.notifyItemChanged(0)
addMangaHeader() addMangaHeader()
activity?.invalidateOptionsMenu() updateMenuVisibility(activityBinding?.toolbar?.menu)
} }
fun updateChapters(chapters: List<ChapterItem>) { fun updateChapters(chapters: List<ChapterItem>) {
@ -731,7 +734,7 @@ class MangaDetailsController :
adapter?.setChapters(chapters) adapter?.setChapters(chapters)
addMangaHeader() addMangaHeader()
colorToolbar(binding.recycler.canScrollVertically(-1)) colorToolbar(binding.recycler.canScrollVertically(-1))
activity?.invalidateOptionsMenu() updateMenuVisibility(activityBinding?.toolbar?.menu)
} }
private fun addMangaHeader() { private fun addMangaHeader() {
@ -971,21 +974,7 @@ class MangaDetailsController :
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.manga_details, menu) inflater.inflate(R.menu.manga_details, menu)
colorToolbar(binding.recycler.canScrollVertically(-1)) colorToolbar(binding.recycler.canScrollVertically(-1))
val editItem = menu.findItem(R.id.action_edit) updateMenuVisibility(menu)
editItem.isVisible = presenter.manga.favorite && !presenter.isLockedFromSearch
menu.findItem(R.id.action_download).isVisible = !presenter.isLockedFromSearch &&
!presenter.manga.isLocal()
menu.findItem(R.id.action_mark_all_as_read).isVisible =
presenter.getNextUnreadChapter() != null && !presenter.isLockedFromSearch
menu.findItem(R.id.action_mark_all_as_unread).isVisible =
presenter.anyRead() && !presenter.isLockedFromSearch
menu.findItem(R.id.action_remove_downloads).isVisible =
presenter.hasDownloads() && !presenter.isLockedFromSearch &&
!presenter.manga.isLocal()
menu.findItem(R.id.remove_non_bookmarked).isVisible =
presenter.hasBookmark() && !presenter.isLockedFromSearch
menu.findItem(R.id.action_migrate).isVisible = !presenter.isLockedFromSearch &&
manga?.source != LocalSource.ID && presenter.manga.favorite
menu.findItem(R.id.action_migrate).title = view?.context?.getString( menu.findItem(R.id.action_migrate).title = view?.context?.getString(
R.string.migrate_, R.string.migrate_,
presenter.manga.seriesType(view!!.context), presenter.manga.seriesType(view!!.context),
@ -998,13 +987,19 @@ class MangaDetailsController :
val searchItem = menu.findItem(R.id.action_search) val searchItem = menu.findItem(R.id.action_search)
val searchView = searchItem.actionView as SearchView val searchView = searchItem.actionView as SearchView
searchView.queryHint = resources?.getString(R.string.search_chapters) searchView.queryHint = resources?.getString(R.string.search_chapters)
searchItem.collapseActionView() if (query.isNotEmpty() && (!searchItem.isActionViewExpanded || searchView.query != query)) {
if (query.isNotEmpty()) {
searchItem.expandActionView() searchItem.expandActionView()
setSearchViewListener(searchView)
searchView.setQuery(query, true) searchView.setQuery(query, true)
searchView.clearFocus() searchView.clearFocus()
} else {
setSearchViewListener(searchView)
} }
searchItem.fixExpand(onExpand = { invalidateMenuOnExpand() })
}
private fun setSearchViewListener(searchView: SearchView?) {
setOnQueryTextChangeListener(searchView) { setOnQueryTextChangeListener(searchView) {
query = it ?: "" query = it ?: ""
if (!isTablet) { if (!isTablet) {
@ -1016,7 +1011,25 @@ class MangaDetailsController :
adapter?.performFilter() adapter?.performFilter()
true true
} }
searchItem.fixExpand(onExpand = { invalidateMenuOnExpand() }) }
private fun updateMenuVisibility(menu: Menu?) {
menu ?: return
val editItem = menu.findItem(R.id.action_edit)
editItem?.isVisible = presenter.manga.favorite && !presenter.isLockedFromSearch
menu.findItem(R.id.action_download)?.isVisible = !presenter.isLockedFromSearch &&
!presenter.manga.isLocal()
menu.findItem(R.id.action_mark_all_as_read)?.isVisible =
presenter.getNextUnreadChapter() != null && !presenter.isLockedFromSearch
menu.findItem(R.id.action_mark_all_as_unread)?.isVisible =
presenter.anyRead() && !presenter.isLockedFromSearch
menu.findItem(R.id.action_remove_downloads)?.isVisible =
presenter.hasDownloads() && !presenter.isLockedFromSearch &&
!presenter.manga.isLocal()
menu.findItem(R.id.remove_non_bookmarked)?.isVisible =
presenter.hasBookmark() && !presenter.isLockedFromSearch
menu.findItem(R.id.action_migrate)?.isVisible = !presenter.isLockedFromSearch &&
!presenter.manga.isLocal() && presenter.manga.favorite
} }
override fun onOptionsItemSelected(item: MenuItem): Boolean { override fun onOptionsItemSelected(item: MenuItem): Boolean {