Bottom action menu in library

This commit is contained in:
arkon
2020-03-08 15:50:07 -04:00
parent 316211372c
commit af2ef36d68
4 changed files with 46 additions and 35 deletions
@@ -32,6 +32,7 @@ import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.getOrDefault
import eu.kanade.tachiyomi.ui.base.controller.BottomActionMenuController
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
import eu.kanade.tachiyomi.ui.base.controller.RootController
import eu.kanade.tachiyomi.ui.base.controller.SecondaryDrawerController
@@ -41,6 +42,7 @@ import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.manga.MangaController
import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.view.inflate
import eu.kanade.tachiyomi.widget.BottomActionMenu
import java.io.IOException
import kotlinx.android.synthetic.main.library_controller.empty_view
import kotlinx.android.synthetic.main.library_controller.library_pager
@@ -58,6 +60,7 @@ class LibraryController(
RootController,
TabbedController,
SecondaryDrawerController,
BottomActionMenuController,
ActionMode.Callback,
ChangeMangaCategoriesDialog.Listener,
DeleteLibraryMangasDialog.Listener {
@@ -72,6 +75,7 @@ class LibraryController(
* Action mode for selections.
*/
private var actionMode: ActionMode? = null
private var bottomActionMenu: BottomActionMenu? = null
/**
* Library search query.
@@ -179,9 +183,9 @@ class LibraryController(
}
override fun onDestroyView(view: View) {
destroyActionModeIfNeeded()
adapter?.onDestroy()
adapter = null
actionMode = null
tabsVisibilitySubscription?.unsubscribe()
tabsVisibilitySubscription = null
super.onDestroyView(view)
@@ -320,7 +324,7 @@ class LibraryController(
/**
* Destroys the action mode.
*/
fun destroyActionModeIfNeeded() {
private fun destroyActionModeIfNeeded() {
actionMode?.finish()
}
@@ -414,7 +418,7 @@ class LibraryController(
}
override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
mode.menuInflater.inflate(R.menu.library_selection, menu)
mode.menuInflater.inflate(R.menu.generic_selection, menu)
return true
}
@@ -425,7 +429,9 @@ class LibraryController(
destroyActionModeIfNeeded()
} else {
mode.title = count.toString()
menu.findItem(R.id.action_edit_cover)?.isVisible = count == 1
bottomActionMenu?.show(mode.menuInflater)
bottomActionMenu?.findItem(R.id.action_edit_cover)?.isVisible = count == 1
}
return false
}
@@ -445,12 +451,20 @@ class LibraryController(
}
override fun onDestroyActionMode(mode: ActionMode?) {
bottomActionMenu?.hide()
// Clear all the manga selections and notify child views.
selectedMangas.clear()
selectionRelay.call(LibrarySelectionEvent.Cleared())
actionMode = null
}
override fun configureBottomActionMenu(bottomActionMenu: BottomActionMenu) {
this.bottomActionMenu = bottomActionMenu
bottomActionMenu.configure(
R.menu.library_selection
) { onActionItemClicked(actionMode!!, it!!) }
}
fun openManga(manga: Manga) {
// Notify the presenter a manga is being opened.
presenter.onOpenManga()