Revert "Make controllers responsible for showing/hiding FAB"

This reverts commit 8ef548032f.
This commit is contained in:
arkon 2020-07-18 16:37:36 -04:00
parent a443dc3040
commit 0cef05dd89
5 changed files with 46 additions and 38 deletions

View file

@ -47,7 +47,6 @@ import eu.kanade.tachiyomi.util.view.snack
import eu.kanade.tachiyomi.util.view.visible
import eu.kanade.tachiyomi.widget.AutofitRecyclerView
import eu.kanade.tachiyomi.widget.EmptyView
import kotlinx.android.synthetic.main.main_activity.root_fab
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.drop
import kotlinx.coroutines.flow.filter
@ -87,6 +86,7 @@ open class BrowseSourceController(bundle: Bundle) :
*/
private var adapter: FlexibleAdapter<IFlexible<*>>? = null
private var actionFab: ExtendedFloatingActionButton? = null
private var actionFabScrollListener: RecyclerView.OnScrollListener? = null
/**
@ -167,21 +167,27 @@ open class BrowseSourceController(bundle: Bundle) :
filterSheet?.setFilters(presenter.filterItems)
// TODO: [ExtendedFloatingActionButton] hide/show methods don't work properly
filterSheet?.setOnShowListener { activity!!.root_fab.gone() }
filterSheet?.setOnDismissListener { activity!!.root_fab.visible() }
filterSheet?.setOnShowListener { actionFab?.gone() }
filterSheet?.setOnDismissListener { actionFab?.visible() }
activity!!.root_fab.setOnClickListener { filterSheet?.show() }
actionFab?.setOnClickListener { filterSheet?.show() }
activity!!.root_fab.visible()
actionFab?.visible()
}
override fun configureFab(fab: ExtendedFloatingActionButton) {
actionFab = fab
// Controlled by initFilterSheet()
fab.gone()
fab.setText(R.string.action_filter)
fab.setIconResource(R.drawable.ic_filter_list_24dp)
}
override fun cleanupFab(fab: ExtendedFloatingActionButton) {
actionFabScrollListener?.let { recycler?.removeOnScrollListener(it) }
actionFab = null
}
override fun onDestroyView(view: View) {
@ -190,7 +196,6 @@ open class BrowseSourceController(bundle: Bundle) :
adapter = null
snack = null
recycler = null
activity!!.root_fab.gone()
super.onDestroyView(view)
}
@ -242,7 +247,7 @@ open class BrowseSourceController(bundle: Bundle) :
)
recycler.clipToPadding = false
activity!!.root_fab.shrinkOnScroll(recycler)
actionFab?.shrinkOnScroll(recycler)
}
recycler.setHasFixedSize(true)

View file

@ -20,11 +20,8 @@ import eu.kanade.tachiyomi.databinding.CategoriesControllerBinding
import eu.kanade.tachiyomi.ui.base.controller.FabController
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.view.gone
import eu.kanade.tachiyomi.util.view.shrinkOnScroll
import eu.kanade.tachiyomi.util.view.visible
import kotlinx.android.synthetic.main.main_activity.root_coordinator
import kotlinx.android.synthetic.main.main_activity.root_fab
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import reactivecircus.flowbinding.android.view.clicks
@ -53,6 +50,7 @@ class CategoryController :
*/
private var adapter: CategoryAdapter? = null
private var actionFab: ExtendedFloatingActionButton? = null
private var actionFabScrollListener: RecyclerView.OnScrollListener? = null
/**
@ -98,11 +96,11 @@ class CategoryController :
adapter?.isHandleDragEnabled = true
adapter?.isPermanentDelete = false
activity!!.root_fab.visible()
actionFabScrollListener = activity!!.root_fab.shrinkOnScroll(binding.recycler)
actionFabScrollListener = actionFab?.shrinkOnScroll(binding.recycler)
}
override fun configureFab(fab: ExtendedFloatingActionButton) {
actionFab = fab
fab.setText(R.string.action_add)
fab.setIconResource(R.drawable.ic_add_24dp)
fab.clicks()
@ -114,6 +112,7 @@ class CategoryController :
override fun cleanupFab(fab: ExtendedFloatingActionButton) {
actionFabScrollListener?.let { binding.recycler.removeOnScrollListener(it) }
actionFab = null
}
/**
@ -127,7 +126,6 @@ class CategoryController :
undoHelper = null
actionMode = null
adapter = null
activity!!.root_fab.gone()
super.onDestroyView(view)
}

View file

@ -20,7 +20,6 @@ import eu.kanade.tachiyomi.util.view.gone
import eu.kanade.tachiyomi.util.view.shrinkOnScroll
import eu.kanade.tachiyomi.util.view.visible
import java.util.concurrent.TimeUnit
import kotlinx.android.synthetic.main.main_activity.root_fab
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import reactivecircus.flowbinding.android.view.clicks
@ -42,6 +41,7 @@ class DownloadController :
*/
private var adapter: DownloadAdapter? = null
private var actionFab: ExtendedFloatingActionButton? = null
private var actionFabScrollListener: RecyclerView.OnScrollListener? = null
/**
@ -87,8 +87,7 @@ class DownloadController :
binding.recycler.layoutManager = LinearLayoutManager(view.context)
binding.recycler.setHasFixedSize(true)
activity!!.root_fab.visible()
actionFabScrollListener = activity!!.root_fab.shrinkOnScroll(binding.recycler)
actionFabScrollListener = actionFab?.shrinkOnScroll(binding.recycler)
// Subscribe to changes
DownloadService.runningRelay
@ -105,6 +104,7 @@ class DownloadController :
}
override fun configureFab(fab: ExtendedFloatingActionButton) {
actionFab = fab
fab.clicks()
.onEach {
val context = applicationContext ?: return@onEach
@ -123,6 +123,7 @@ class DownloadController :
override fun cleanupFab(fab: ExtendedFloatingActionButton) {
actionFabScrollListener?.let { binding.recycler.removeOnScrollListener(it) }
actionFab = null
}
override fun onDestroyView(view: View) {
@ -130,7 +131,6 @@ class DownloadController :
subscription.unsubscribe()
}
progressSubscriptions.clear()
activity!!.root_fab.gone()
adapter = null
super.onDestroyView(view)
}
@ -284,10 +284,10 @@ class DownloadController :
private fun setInformationView() {
if (presenter.downloadQueue.isEmpty()) {
binding.emptyView.show(R.string.information_no_downloads)
activity!!.root_fab.gone()
actionFab?.gone()
} else {
binding.emptyView.hide()
activity!!.root_fab.apply {
actionFab?.apply {
visible()
setText(

View file

@ -43,6 +43,7 @@ import eu.kanade.tachiyomi.ui.recent.updates.UpdatesController
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.launchUI
import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.view.gone
import eu.kanade.tachiyomi.util.view.snack
import eu.kanade.tachiyomi.util.view.visible
import java.util.Date
@ -348,9 +349,11 @@ class MainActivity : BaseActivity<MainActivityBinding>() {
}
if (from is FabController) {
binding.rootFab.gone()
from.cleanupFab(binding.rootFab)
}
if (to is FabController) {
binding.rootFab.visible()
to.configureFab(binding.rootFab)
}

View file

@ -68,7 +68,6 @@ import eu.kanade.tachiyomi.util.view.shrinkOnScroll
import eu.kanade.tachiyomi.util.view.snack
import eu.kanade.tachiyomi.util.view.visible
import kotlinx.android.synthetic.main.main_activity.root_coordinator
import kotlinx.android.synthetic.main.main_activity.root_fab
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import reactivecircus.flowbinding.android.view.clicks
@ -128,6 +127,7 @@ class MangaController :
*/
private var settingsSheet: ChaptersSettingsSheet? = null
private var actionFab: ExtendedFloatingActionButton? = null
private var actionFabScrollListener: RecyclerView.OnScrollListener? = null
/**
@ -191,8 +191,7 @@ class MangaController :
binding.recycler.setHasFixedSize(true)
chaptersAdapter?.fastScroller = binding.fastScroller
activity!!.root_fab.visible()
actionFabScrollListener = activity!!.root_fab.shrinkOnScroll(binding.recycler)
actionFabScrollListener = actionFab?.shrinkOnScroll(binding.recycler)
// Skips directly to chapters list if navigated to from the library
binding.recycler.post {
@ -225,6 +224,7 @@ class MangaController :
}
override fun configureFab(fab: ExtendedFloatingActionButton) {
actionFab = fab
fab.setText(R.string.action_start)
fab.setIconResource(R.drawable.ic_play_arrow_24dp)
fab.clicks()
@ -239,14 +239,15 @@ class MangaController :
}
// Get coordinates and start animation
val coordinates = fab.getCoordinates()
if (!binding.revealView.showRevealEffect(
coordinates.x,
coordinates.y,
revealAnimationListener
)
) {
openChapter(item.chapter)
actionFab?.getCoordinates()?.let { coordinates ->
if (!binding.revealView.showRevealEffect(
coordinates.x,
coordinates.y,
revealAnimationListener
)
) {
openChapter(item.chapter)
}
}
} else {
view?.context?.toast(R.string.no_next_chapter)
@ -257,12 +258,12 @@ class MangaController :
override fun cleanupFab(fab: ExtendedFloatingActionButton) {
actionFabScrollListener?.let { binding.recycler.removeOnScrollListener(it) }
actionFab = null
}
override fun onDestroyView(view: View) {
destroyActionModeIfNeeded()
binding.actionToolbar.destroy()
activity!!.root_fab.gone()
mangaInfoAdapter = null
chaptersHeaderAdapter = null
chaptersAdapter = null
@ -276,8 +277,9 @@ class MangaController :
// Check if animation view is visible
if (binding.revealView.visibility == View.VISIBLE) {
// Show the unreveal effect
val coordinates = activity.root_fab.getCoordinates()
binding.revealView.hideRevealEffect(coordinates.x, coordinates.y, 1920)
actionFab?.getCoordinates()?.let { coordinates ->
binding.revealView.hideRevealEffect(coordinates.x, coordinates.y, 1920)
}
}
super.onActivityResumed(activity)
@ -619,7 +621,7 @@ class MangaController :
val context = view?.context
if (context != null && chapters.any { it.read }) {
activity!!.root_fab.text = context.getString(R.string.action_resume)
actionFab?.text = context.getString(R.string.action_resume)
}
}
@ -759,8 +761,8 @@ class MangaController :
binding.actionToolbar.findItem(R.id.action_mark_as_unread)?.isVisible = chapters.all { it.chapter.read }
// Hide FAB to avoid interfering with the bottom action toolbar
// activity!!.root_fab.hide()
activity!!.root_fab.gone()
// actionFab?.hide()
actionFab?.gone()
}
return false
}
@ -794,8 +796,8 @@ class MangaController :
// TODO: there seems to be a bug in MaterialComponents where the [ExtendedFloatingActionButton]
// fails to show up properly
// activity!!.root_fab.show()
activity!!.root_fab.visible()
// actionFab?.show()
actionFab?.visible()
}
override fun onDetach(view: View) {