mirror of
https://github.com/tachiyomiorg/tachiyomi.git
synced 2024-12-22 23:41:50 +01:00
Move catalogue filters to bottom sheet
This commit is contained in:
parent
e5e14e1f9e
commit
8cfd80ba84
@ -1,11 +0,0 @@
|
|||||||
package eu.kanade.tachiyomi.ui.base.controller
|
|
||||||
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import androidx.drawerlayout.widget.DrawerLayout
|
|
||||||
|
|
||||||
interface SecondaryDrawerController {
|
|
||||||
|
|
||||||
fun createSecondaryDrawer(drawer: DrawerLayout): ViewGroup?
|
|
||||||
|
|
||||||
fun cleanupSecondaryDrawer(drawer: DrawerLayout)
|
|
||||||
}
|
|
@ -9,8 +9,6 @@ import android.view.MenuItem
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.appcompat.widget.SearchView
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.core.view.GravityCompat
|
|
||||||
import androidx.drawerlayout.widget.DrawerLayout
|
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
@ -30,7 +28,6 @@ import eu.kanade.tachiyomi.source.CatalogueSource
|
|||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.SecondaryDrawerController
|
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
||||||
import eu.kanade.tachiyomi.ui.library.ChangeMangaCategoriesDialog
|
import eu.kanade.tachiyomi.ui.library.ChangeMangaCategoriesDialog
|
||||||
import eu.kanade.tachiyomi.ui.manga.MangaController
|
import eu.kanade.tachiyomi.ui.manga.MangaController
|
||||||
@ -44,7 +41,6 @@ import eu.kanade.tachiyomi.util.view.visible
|
|||||||
import eu.kanade.tachiyomi.widget.AutofitRecyclerView
|
import eu.kanade.tachiyomi.widget.AutofitRecyclerView
|
||||||
import eu.kanade.tachiyomi.widget.EmptyView
|
import eu.kanade.tachiyomi.widget.EmptyView
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import kotlinx.android.synthetic.main.main_activity.drawer
|
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
import rx.Subscription
|
import rx.Subscription
|
||||||
import rx.android.schedulers.AndroidSchedulers
|
import rx.android.schedulers.AndroidSchedulers
|
||||||
@ -56,7 +52,6 @@ import uy.kohesive.injekt.injectLazy
|
|||||||
*/
|
*/
|
||||||
open class BrowseCatalogueController(bundle: Bundle) :
|
open class BrowseCatalogueController(bundle: Bundle) :
|
||||||
NucleusController<BrowseCataloguePresenter>(bundle),
|
NucleusController<BrowseCataloguePresenter>(bundle),
|
||||||
SecondaryDrawerController,
|
|
||||||
FlexibleAdapter.OnItemClickListener,
|
FlexibleAdapter.OnItemClickListener,
|
||||||
FlexibleAdapter.OnItemLongClickListener,
|
FlexibleAdapter.OnItemLongClickListener,
|
||||||
FlexibleAdapter.EndlessScrollListener,
|
FlexibleAdapter.EndlessScrollListener,
|
||||||
@ -79,9 +74,9 @@ open class BrowseCatalogueController(bundle: Bundle) :
|
|||||||
private var snack: Snackbar? = null
|
private var snack: Snackbar? = null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Navigation view containing filter items.
|
* Sheet containing filter items.
|
||||||
*/
|
*/
|
||||||
private var navView: CatalogueNavigationView? = null
|
private var filterSheet: CatalogueFilterSheet? = null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Recycler view with the list of results.
|
* Recycler view with the list of results.
|
||||||
@ -129,11 +124,31 @@ open class BrowseCatalogueController(bundle: Bundle) :
|
|||||||
adapter = FlexibleAdapter(null, this)
|
adapter = FlexibleAdapter(null, this)
|
||||||
setupRecycler(view)
|
setupRecycler(view)
|
||||||
|
|
||||||
navView?.setFilters(presenter.filterItems)
|
// Prepare filter sheet
|
||||||
|
initFilterSheet()
|
||||||
|
|
||||||
binding.progress.visible()
|
binding.progress.visible()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun initFilterSheet() {
|
||||||
|
filterSheet = CatalogueFilterSheet(
|
||||||
|
activity!!,
|
||||||
|
onSearchClicked = {
|
||||||
|
val allDefault = presenter.sourceFilters == presenter.source.getFilterList()
|
||||||
|
showProgressBar()
|
||||||
|
adapter?.clear()
|
||||||
|
presenter.setSourceFilter(if (allDefault) FilterList() else presenter.sourceFilters)
|
||||||
|
},
|
||||||
|
onResetClicked = {
|
||||||
|
presenter.appliedFilters = FilterList()
|
||||||
|
val newFilters = presenter.source.getFilterList()
|
||||||
|
presenter.sourceFilters = newFilters
|
||||||
|
filterSheet?.setFilters(presenter.filterItems)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
filterSheet?.setFilters(presenter.filterItems)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDestroyView(view: View) {
|
override fun onDestroyView(view: View) {
|
||||||
numColumnsSubscription?.unsubscribe()
|
numColumnsSubscription?.unsubscribe()
|
||||||
numColumnsSubscription = null
|
numColumnsSubscription = null
|
||||||
@ -145,35 +160,6 @@ open class BrowseCatalogueController(bundle: Bundle) :
|
|||||||
super.onDestroyView(view)
|
super.onDestroyView(view)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createSecondaryDrawer(drawer: DrawerLayout): ViewGroup? {
|
|
||||||
// Inflate and prepare drawer
|
|
||||||
val navView = drawer.inflate(R.layout.catalogue_drawer) as CatalogueNavigationView
|
|
||||||
this.navView = navView
|
|
||||||
navView.setFilters(presenter.filterItems)
|
|
||||||
|
|
||||||
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END)
|
|
||||||
|
|
||||||
navView.onSearchClicked = {
|
|
||||||
val allDefault = presenter.sourceFilters == presenter.source.getFilterList()
|
|
||||||
showProgressBar()
|
|
||||||
adapter?.clear()
|
|
||||||
drawer.closeDrawer(GravityCompat.END)
|
|
||||||
presenter.setSourceFilter(if (allDefault) FilterList() else presenter.sourceFilters)
|
|
||||||
}
|
|
||||||
|
|
||||||
navView.onResetClicked = {
|
|
||||||
presenter.appliedFilters = FilterList()
|
|
||||||
val newFilters = presenter.source.getFilterList()
|
|
||||||
presenter.sourceFilters = newFilters
|
|
||||||
navView.setFilters(presenter.filterItems)
|
|
||||||
}
|
|
||||||
return navView
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun cleanupSecondaryDrawer(drawer: DrawerLayout) {
|
|
||||||
navView = null
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupRecycler(view: View) {
|
private fun setupRecycler(view: View) {
|
||||||
numColumnsSubscription?.unsubscribe()
|
numColumnsSubscription?.unsubscribe()
|
||||||
|
|
||||||
@ -292,7 +278,7 @@ open class BrowseCatalogueController(bundle: Bundle) :
|
|||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.action_search -> expandActionViewFromInteraction = true
|
R.id.action_search -> expandActionViewFromInteraction = true
|
||||||
R.id.action_display_mode -> swapDisplayMode()
|
R.id.action_display_mode -> swapDisplayMode()
|
||||||
R.id.action_set_filter -> navView?.let { activity?.drawer?.openDrawer(GravityCompat.END) }
|
R.id.action_set_filter -> filterSheet?.show()
|
||||||
R.id.action_open_in_web_view -> openInWebView()
|
R.id.action_open_in_web_view -> openInWebView()
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item)
|
return super.onOptionsItemSelected(item)
|
||||||
|
@ -0,0 +1,59 @@
|
|||||||
|
package eu.kanade.tachiyomi.ui.catalogue.browse
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
|
import android.content.Context
|
||||||
|
import android.util.AttributeSet
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
|
import eu.davidea.flexibleadapter.items.IFlexible
|
||||||
|
import eu.kanade.tachiyomi.R
|
||||||
|
import eu.kanade.tachiyomi.util.view.inflate
|
||||||
|
import eu.kanade.tachiyomi.widget.SimpleNavigationView
|
||||||
|
import kotlinx.android.synthetic.main.catalogue_drawer_content.view.reset_btn
|
||||||
|
import kotlinx.android.synthetic.main.catalogue_drawer_content.view.search_btn
|
||||||
|
|
||||||
|
class CatalogueFilterSheet(
|
||||||
|
activity: Activity,
|
||||||
|
onSearchClicked: () -> Unit,
|
||||||
|
onResetClicked: () -> Unit
|
||||||
|
) : BottomSheetDialog(activity) {
|
||||||
|
|
||||||
|
private var filterNavView: FilterNavigationView
|
||||||
|
|
||||||
|
init {
|
||||||
|
filterNavView = FilterNavigationView(activity)
|
||||||
|
filterNavView.onSearchClicked = {
|
||||||
|
onSearchClicked()
|
||||||
|
this.dismiss()
|
||||||
|
}
|
||||||
|
filterNavView.onResetClicked = onResetClicked
|
||||||
|
|
||||||
|
setContentView(filterNavView)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setFilters(items: List<IFlexible<*>>) {
|
||||||
|
filterNavView.adapter.updateDataSet(items)
|
||||||
|
}
|
||||||
|
|
||||||
|
class FilterNavigationView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
||||||
|
SimpleNavigationView(context, attrs) {
|
||||||
|
|
||||||
|
var onSearchClicked = {}
|
||||||
|
var onResetClicked = {}
|
||||||
|
|
||||||
|
val adapter: FlexibleAdapter<IFlexible<*>> = FlexibleAdapter<IFlexible<*>>(null)
|
||||||
|
.setDisplayHeadersAtStartUp(true)
|
||||||
|
.setStickyHeaders(true)
|
||||||
|
|
||||||
|
init {
|
||||||
|
recycler.adapter = adapter
|
||||||
|
recycler.setHasFixedSize(true)
|
||||||
|
val view = inflate(R.layout.catalogue_drawer_content)
|
||||||
|
((view as ViewGroup).getChildAt(1) as ViewGroup).addView(recycler)
|
||||||
|
addView(view)
|
||||||
|
search_btn.setOnClickListener { onSearchClicked() }
|
||||||
|
reset_btn.setOnClickListener { onResetClicked() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,38 +0,0 @@
|
|||||||
package eu.kanade.tachiyomi.ui.catalogue.browse
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.util.AttributeSet
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible
|
|
||||||
import eu.kanade.tachiyomi.R
|
|
||||||
import eu.kanade.tachiyomi.util.view.inflate
|
|
||||||
import eu.kanade.tachiyomi.widget.SimpleNavigationView
|
|
||||||
import kotlinx.android.synthetic.main.catalogue_drawer_content.view.reset_btn
|
|
||||||
import kotlinx.android.synthetic.main.catalogue_drawer_content.view.search_btn
|
|
||||||
|
|
||||||
class CatalogueNavigationView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
|
||||||
SimpleNavigationView(context, attrs) {
|
|
||||||
|
|
||||||
val adapter: FlexibleAdapter<IFlexible<*>> = FlexibleAdapter<IFlexible<*>>(null)
|
|
||||||
.setDisplayHeadersAtStartUp(true)
|
|
||||||
.setStickyHeaders(true)
|
|
||||||
|
|
||||||
var onSearchClicked = {}
|
|
||||||
|
|
||||||
var onResetClicked = {}
|
|
||||||
|
|
||||||
init {
|
|
||||||
recycler.adapter = adapter
|
|
||||||
recycler.setHasFixedSize(true)
|
|
||||||
val view = inflate(R.layout.catalogue_drawer_content)
|
|
||||||
((view as ViewGroup).getChildAt(1) as ViewGroup).addView(recycler)
|
|
||||||
addView(view)
|
|
||||||
search_btn.setOnClickListener { onSearchClicked() }
|
|
||||||
reset_btn.setOnClickListener { onResetClicked() }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setFilters(items: List<IFlexible<*>>) {
|
|
||||||
adapter.updateDataSet(items)
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,8 +2,6 @@ package eu.kanade.tachiyomi.ui.catalogue.latest
|
|||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.ViewGroup
|
|
||||||
import androidx.drawerlayout.widget.DrawerLayout
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.source.CatalogueSource
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
||||||
import eu.kanade.tachiyomi.ui.catalogue.browse.BrowseCatalogueController
|
import eu.kanade.tachiyomi.ui.catalogue.browse.BrowseCatalogueController
|
||||||
@ -27,11 +25,4 @@ class LatestUpdatesController(bundle: Bundle) : BrowseCatalogueController(bundle
|
|||||||
menu.findItem(R.id.action_search).isVisible = false
|
menu.findItem(R.id.action_search).isVisible = false
|
||||||
menu.findItem(R.id.action_set_filter).isVisible = false
|
menu.findItem(R.id.action_set_filter).isVisible = false
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createSecondaryDrawer(drawer: DrawerLayout): ViewGroup? {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun cleanupSecondaryDrawer(drawer: DrawerLayout) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import android.app.SearchManager
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.view.GravityCompat
|
|
||||||
import com.bluelinelabs.conductor.Conductor
|
import com.bluelinelabs.conductor.Conductor
|
||||||
import com.bluelinelabs.conductor.Controller
|
import com.bluelinelabs.conductor.Controller
|
||||||
import com.bluelinelabs.conductor.ControllerChangeHandler
|
import com.bluelinelabs.conductor.ControllerChangeHandler
|
||||||
@ -14,12 +13,12 @@ import eu.kanade.tachiyomi.Migrations
|
|||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
|
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
|
||||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
||||||
|
import eu.kanade.tachiyomi.databinding.MainActivityBinding
|
||||||
import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi
|
import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi
|
||||||
import eu.kanade.tachiyomi.ui.base.activity.BaseActivity
|
import eu.kanade.tachiyomi.ui.base.activity.BaseActivity
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.DialogController
|
import eu.kanade.tachiyomi.ui.base.controller.DialogController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController
|
import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.RootController
|
import eu.kanade.tachiyomi.ui.base.controller.RootController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.SecondaryDrawerController
|
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.TabbedController
|
import eu.kanade.tachiyomi.ui.base.controller.TabbedController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
||||||
import eu.kanade.tachiyomi.ui.catalogue.CatalogueController
|
import eu.kanade.tachiyomi.ui.catalogue.CatalogueController
|
||||||
@ -33,7 +32,6 @@ import eu.kanade.tachiyomi.ui.recent.history.HistoryController
|
|||||||
import eu.kanade.tachiyomi.ui.recent.updates.UpdatesController
|
import eu.kanade.tachiyomi.ui.recent.updates.UpdatesController
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import kotlinx.android.synthetic.main.main_activity.*
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@ -43,8 +41,6 @@ class MainActivity : BaseActivity() {
|
|||||||
|
|
||||||
private lateinit var router: Router
|
private lateinit var router: Router
|
||||||
|
|
||||||
private var secondaryDrawer: ViewGroup? = null
|
|
||||||
|
|
||||||
private val startScreenId by lazy {
|
private val startScreenId by lazy {
|
||||||
when (preferences.startScreen()) {
|
when (preferences.startScreen()) {
|
||||||
2 -> R.id.nav_history
|
2 -> R.id.nav_history
|
||||||
@ -58,6 +54,8 @@ class MainActivity : BaseActivity() {
|
|||||||
|
|
||||||
private var isHandlingShortcut: Boolean = false
|
private var isHandlingShortcut: Boolean = false
|
||||||
|
|
||||||
|
private lateinit var binding: MainActivityBinding
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
@ -67,15 +65,16 @@ class MainActivity : BaseActivity() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
setContentView(R.layout.main_activity)
|
binding = MainActivityBinding.inflate(layoutInflater)
|
||||||
|
setContentView(binding.root)
|
||||||
|
|
||||||
setSupportActionBar(toolbar)
|
setSupportActionBar(binding.toolbar)
|
||||||
|
|
||||||
tabAnimator = ViewHeightAnimator(tabs)
|
tabAnimator = ViewHeightAnimator(binding.tabs)
|
||||||
bottomNavAnimator = ViewHeightAnimator(bottom_nav)
|
bottomNavAnimator = ViewHeightAnimator(binding.bottomNav)
|
||||||
|
|
||||||
// Set behavior of bottom nav
|
// Set behavior of bottom nav
|
||||||
bottom_nav.setOnNavigationItemSelectedListener { item ->
|
binding.bottomNav.setOnNavigationItemSelectedListener { item ->
|
||||||
val id = item.itemId
|
val id = item.itemId
|
||||||
|
|
||||||
val currentRoot = router.backstack.firstOrNull()
|
val currentRoot = router.backstack.firstOrNull()
|
||||||
@ -104,17 +103,13 @@ class MainActivity : BaseActivity() {
|
|||||||
if (!router.hasRootController()) {
|
if (!router.hasRootController()) {
|
||||||
// Set start screen
|
// Set start screen
|
||||||
if (!handleIntentAction(intent)) {
|
if (!handleIntentAction(intent)) {
|
||||||
setSelectedDrawerItem(startScreenId)
|
setSelectedNavItem(startScreenId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
toolbar.setNavigationOnClickListener {
|
binding.toolbar.setNavigationOnClickListener {
|
||||||
if (router.backstackSize == 1) {
|
|
||||||
drawer.openDrawer(GravityCompat.START)
|
|
||||||
} else {
|
|
||||||
onBackPressed()
|
onBackPressed()
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
router.addChangeListener(object : ControllerChangeHandler.ControllerChangeListener {
|
router.addChangeListener(object : ControllerChangeHandler.ControllerChangeListener {
|
||||||
override fun onChangeStarted(
|
override fun onChangeStarted(
|
||||||
@ -165,9 +160,9 @@ class MainActivity : BaseActivity() {
|
|||||||
private fun setExtensionsBadge() {
|
private fun setExtensionsBadge() {
|
||||||
val updates = preferences.extensionUpdatesCount().getOrDefault()
|
val updates = preferences.extensionUpdatesCount().getOrDefault()
|
||||||
if (updates > 0) {
|
if (updates > 0) {
|
||||||
bottom_nav.getOrCreateBadge(R.id.nav_more).number = updates
|
binding.bottomNav.getOrCreateBadge(R.id.nav_more).number = updates
|
||||||
} else {
|
} else {
|
||||||
bottom_nav.removeBadge(R.id.nav_more)
|
binding.bottomNav.removeBadge(R.id.nav_more)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -197,15 +192,15 @@ class MainActivity : BaseActivity() {
|
|||||||
isHandlingShortcut = true
|
isHandlingShortcut = true
|
||||||
|
|
||||||
when (intent.action) {
|
when (intent.action) {
|
||||||
SHORTCUT_LIBRARY -> setSelectedDrawerItem(R.id.nav_library)
|
SHORTCUT_LIBRARY -> setSelectedNavItem(R.id.nav_library)
|
||||||
SHORTCUT_RECENTLY_UPDATED -> setSelectedDrawerItem(R.id.nav_updates)
|
SHORTCUT_RECENTLY_UPDATED -> setSelectedNavItem(R.id.nav_updates)
|
||||||
SHORTCUT_RECENTLY_READ -> setSelectedDrawerItem(R.id.nav_history)
|
SHORTCUT_RECENTLY_READ -> setSelectedNavItem(R.id.nav_history)
|
||||||
SHORTCUT_CATALOGUES -> setSelectedDrawerItem(R.id.nav_sources)
|
SHORTCUT_CATALOGUES -> setSelectedNavItem(R.id.nav_sources)
|
||||||
SHORTCUT_EXTENSIONS -> {
|
SHORTCUT_EXTENSIONS -> {
|
||||||
if (router.backstackSize > 1) {
|
if (router.backstackSize > 1) {
|
||||||
router.popToRoot()
|
router.popToRoot()
|
||||||
}
|
}
|
||||||
setSelectedDrawerItem(R.id.nav_more)
|
setSelectedNavItem(R.id.nav_more)
|
||||||
router.pushController(ExtensionController().withFadeTransaction())
|
router.pushController(ExtensionController().withFadeTransaction())
|
||||||
}
|
}
|
||||||
SHORTCUT_MANGA -> {
|
SHORTCUT_MANGA -> {
|
||||||
@ -213,14 +208,14 @@ class MainActivity : BaseActivity() {
|
|||||||
if (router.backstackSize > 1) {
|
if (router.backstackSize > 1) {
|
||||||
router.popToRoot()
|
router.popToRoot()
|
||||||
}
|
}
|
||||||
setSelectedDrawerItem(R.id.nav_library)
|
setSelectedNavItem(R.id.nav_library)
|
||||||
router.pushController(RouterTransaction.with(MangaController(extras)))
|
router.pushController(RouterTransaction.with(MangaController(extras)))
|
||||||
}
|
}
|
||||||
SHORTCUT_DOWNLOADS -> {
|
SHORTCUT_DOWNLOADS -> {
|
||||||
if (router.backstackSize > 1) {
|
if (router.backstackSize > 1) {
|
||||||
router.popToRoot()
|
router.popToRoot()
|
||||||
}
|
}
|
||||||
setSelectedDrawerItem(R.id.nav_more)
|
setSelectedNavItem(R.id.nav_more)
|
||||||
router.pushController(RouterTransaction.with(DownloadController()))
|
router.pushController(RouterTransaction.with(DownloadController()))
|
||||||
}
|
}
|
||||||
Intent.ACTION_SEARCH, "com.google.android.gms.actions.SEARCH_ACTION" -> {
|
Intent.ACTION_SEARCH, "com.google.android.gms.actions.SEARCH_ACTION" -> {
|
||||||
@ -258,24 +253,22 @@ class MainActivity : BaseActivity() {
|
|||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
bottom_nav?.setOnNavigationItemSelectedListener(null)
|
binding.bottomNav.setOnNavigationItemSelectedListener(null)
|
||||||
toolbar?.setNavigationOnClickListener(null)
|
binding.toolbar.setNavigationOnClickListener(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
val backstackSize = router.backstackSize
|
val backstackSize = router.backstackSize
|
||||||
if (drawer.isDrawerOpen(GravityCompat.START) || drawer.isDrawerOpen(GravityCompat.END)) {
|
if (backstackSize == 1 && router.getControllerWithTag("$startScreenId") == null) {
|
||||||
drawer.closeDrawers()
|
setSelectedNavItem(startScreenId)
|
||||||
} else if (backstackSize == 1 && router.getControllerWithTag("$startScreenId") == null) {
|
|
||||||
setSelectedDrawerItem(startScreenId)
|
|
||||||
} else if (backstackSize == 1 || !router.handleBack()) {
|
} else if (backstackSize == 1 || !router.handleBack()) {
|
||||||
super.onBackPressed()
|
super.onBackPressed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setSelectedDrawerItem(itemId: Int) {
|
private fun setSelectedNavItem(itemId: Int) {
|
||||||
if (!isFinishing) {
|
if (!isFinishing) {
|
||||||
bottom_nav.selectedItemId = itemId
|
binding.bottomNav.selectedItemId = itemId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,31 +291,20 @@ class MainActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (from is TabbedController) {
|
if (from is TabbedController) {
|
||||||
from.cleanupTabs(tabs)
|
from.cleanupTabs(binding.tabs)
|
||||||
}
|
}
|
||||||
if (to is TabbedController) {
|
if (to is TabbedController) {
|
||||||
tabAnimator.expand()
|
tabAnimator.expand()
|
||||||
to.configureTabs(tabs)
|
to.configureTabs(binding.tabs)
|
||||||
} else {
|
} else {
|
||||||
tabAnimator.collapse()
|
tabAnimator.collapse()
|
||||||
tabs.setupWithViewPager(null)
|
binding.tabs.setupWithViewPager(null)
|
||||||
}
|
|
||||||
|
|
||||||
if (from is SecondaryDrawerController) {
|
|
||||||
if (secondaryDrawer != null) {
|
|
||||||
from.cleanupSecondaryDrawer(drawer)
|
|
||||||
drawer.removeView(secondaryDrawer)
|
|
||||||
secondaryDrawer = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (to is SecondaryDrawerController) {
|
|
||||||
secondaryDrawer = to.createSecondaryDrawer(drawer)?.also { drawer.addView(it) }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (to is NoToolbarElevationController) {
|
if (to is NoToolbarElevationController) {
|
||||||
appbar.disableElevation()
|
binding.appbar.disableElevation()
|
||||||
} else {
|
} else {
|
||||||
appbar.enableElevation()
|
binding.appbar.enableElevation()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
package eu.kanade.tachiyomi.widget
|
|
||||||
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import androidx.drawerlayout.widget.DrawerLayout
|
|
||||||
|
|
||||||
class DrawerSwipeCloseListener(
|
|
||||||
private val drawer: DrawerLayout,
|
|
||||||
private val navigationView: ViewGroup
|
|
||||||
) : DrawerLayout.SimpleDrawerListener() {
|
|
||||||
|
|
||||||
override fun onDrawerOpened(drawerView: View) {
|
|
||||||
if (drawerView == navigationView) {
|
|
||||||
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, drawerView)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDrawerClosed(drawerView: View) {
|
|
||||||
if (drawerView == navigationView) {
|
|
||||||
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, drawerView)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<eu.kanade.tachiyomi.ui.catalogue.browse.CatalogueNavigationView xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:id="@+id/nav_view2"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_gravity="end"
|
|
||||||
android:fitsSystemWindows="false" />
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/drawer"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:fitsSystemWindows="true">
|
android:fitsSystemWindows="true">
|
||||||
@ -55,4 +54,4 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</androidx.drawerlayout.widget.DrawerLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
Loading…
Reference in New Issue
Block a user