mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Move catalogue filters to bottom sheet
This commit is contained in:
		| @@ -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.ViewGroup | ||||
| import androidx.appcompat.widget.SearchView | ||||
| import androidx.core.view.GravityCompat | ||||
| import androidx.drawerlayout.widget.DrawerLayout | ||||
| import androidx.recyclerview.widget.DividerItemDecoration | ||||
| import androidx.recyclerview.widget.GridLayoutManager | ||||
| 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.online.HttpSource | ||||
| 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.library.ChangeMangaCategoriesDialog | ||||
| 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.EmptyView | ||||
| import java.util.concurrent.TimeUnit | ||||
| import kotlinx.android.synthetic.main.main_activity.drawer | ||||
| import rx.Observable | ||||
| import rx.Subscription | ||||
| import rx.android.schedulers.AndroidSchedulers | ||||
| @@ -56,7 +52,6 @@ import uy.kohesive.injekt.injectLazy | ||||
|  */ | ||||
| open class BrowseCatalogueController(bundle: Bundle) : | ||||
|         NucleusController<BrowseCataloguePresenter>(bundle), | ||||
|         SecondaryDrawerController, | ||||
|         FlexibleAdapter.OnItemClickListener, | ||||
|         FlexibleAdapter.OnItemLongClickListener, | ||||
|         FlexibleAdapter.EndlessScrollListener, | ||||
| @@ -79,9 +74,9 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|     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. | ||||
| @@ -129,11 +124,31 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|         adapter = FlexibleAdapter(null, this) | ||||
|         setupRecycler(view) | ||||
|  | ||||
|         navView?.setFilters(presenter.filterItems) | ||||
|         // Prepare filter sheet | ||||
|         initFilterSheet() | ||||
|  | ||||
|         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) { | ||||
|         numColumnsSubscription?.unsubscribe() | ||||
|         numColumnsSubscription = null | ||||
| @@ -145,35 +160,6 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|         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) { | ||||
|         numColumnsSubscription?.unsubscribe() | ||||
|  | ||||
| @@ -292,7 +278,7 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|         when (item.itemId) { | ||||
|             R.id.action_search -> expandActionViewFromInteraction = true | ||||
|             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() | ||||
|         } | ||||
|         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.view.Menu | ||||
| import android.view.ViewGroup | ||||
| import androidx.drawerlayout.widget.DrawerLayout | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.source.CatalogueSource | ||||
| 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_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.os.Bundle | ||||
| import android.view.ViewGroup | ||||
| import androidx.core.view.GravityCompat | ||||
| import com.bluelinelabs.conductor.Conductor | ||||
| import com.bluelinelabs.conductor.Controller | ||||
| import com.bluelinelabs.conductor.ControllerChangeHandler | ||||
| @@ -14,12 +13,12 @@ import eu.kanade.tachiyomi.Migrations | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.notification.NotificationReceiver | ||||
| import eu.kanade.tachiyomi.data.preference.getOrDefault | ||||
| import eu.kanade.tachiyomi.databinding.MainActivityBinding | ||||
| import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi | ||||
| import eu.kanade.tachiyomi.ui.base.activity.BaseActivity | ||||
| import eu.kanade.tachiyomi.ui.base.controller.DialogController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController | ||||
| 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.withFadeTransaction | ||||
| 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 java.util.Date | ||||
| import java.util.concurrent.TimeUnit | ||||
| import kotlinx.android.synthetic.main.main_activity.* | ||||
| import kotlinx.coroutines.Dispatchers | ||||
| import kotlinx.coroutines.GlobalScope | ||||
| import kotlinx.coroutines.launch | ||||
| @@ -43,8 +41,6 @@ class MainActivity : BaseActivity() { | ||||
|  | ||||
|     private lateinit var router: Router | ||||
|  | ||||
|     private var secondaryDrawer: ViewGroup? = null | ||||
|  | ||||
|     private val startScreenId by lazy { | ||||
|         when (preferences.startScreen()) { | ||||
|             2 -> R.id.nav_history | ||||
| @@ -58,6 +54,8 @@ class MainActivity : BaseActivity() { | ||||
|  | ||||
|     private var isHandlingShortcut: Boolean = false | ||||
|  | ||||
|     private lateinit var binding: MainActivityBinding | ||||
|  | ||||
|     override fun onCreate(savedInstanceState: Bundle?) { | ||||
|         super.onCreate(savedInstanceState) | ||||
|  | ||||
| @@ -67,15 +65,16 @@ class MainActivity : BaseActivity() { | ||||
|             return | ||||
|         } | ||||
|  | ||||
|         setContentView(R.layout.main_activity) | ||||
|         binding = MainActivityBinding.inflate(layoutInflater) | ||||
|         setContentView(binding.root) | ||||
|  | ||||
|         setSupportActionBar(toolbar) | ||||
|         setSupportActionBar(binding.toolbar) | ||||
|  | ||||
|         tabAnimator = ViewHeightAnimator(tabs) | ||||
|         bottomNavAnimator = ViewHeightAnimator(bottom_nav) | ||||
|         tabAnimator = ViewHeightAnimator(binding.tabs) | ||||
|         bottomNavAnimator = ViewHeightAnimator(binding.bottomNav) | ||||
|  | ||||
|         // Set behavior of bottom nav | ||||
|         bottom_nav.setOnNavigationItemSelectedListener { item -> | ||||
|         binding.bottomNav.setOnNavigationItemSelectedListener { item -> | ||||
|             val id = item.itemId | ||||
|  | ||||
|             val currentRoot = router.backstack.firstOrNull() | ||||
| @@ -104,16 +103,12 @@ class MainActivity : BaseActivity() { | ||||
|         if (!router.hasRootController()) { | ||||
|             // Set start screen | ||||
|             if (!handleIntentAction(intent)) { | ||||
|                 setSelectedDrawerItem(startScreenId) | ||||
|                 setSelectedNavItem(startScreenId) | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         toolbar.setNavigationOnClickListener { | ||||
|             if (router.backstackSize == 1) { | ||||
|                 drawer.openDrawer(GravityCompat.START) | ||||
|             } else { | ||||
|                 onBackPressed() | ||||
|             } | ||||
|         binding.toolbar.setNavigationOnClickListener { | ||||
|             onBackPressed() | ||||
|         } | ||||
|  | ||||
|         router.addChangeListener(object : ControllerChangeHandler.ControllerChangeListener { | ||||
| @@ -165,9 +160,9 @@ class MainActivity : BaseActivity() { | ||||
|     private fun setExtensionsBadge() { | ||||
|         val updates = preferences.extensionUpdatesCount().getOrDefault() | ||||
|         if (updates > 0) { | ||||
|             bottom_nav.getOrCreateBadge(R.id.nav_more).number = updates | ||||
|             binding.bottomNav.getOrCreateBadge(R.id.nav_more).number = updates | ||||
|         } else { | ||||
|             bottom_nav.removeBadge(R.id.nav_more) | ||||
|             binding.bottomNav.removeBadge(R.id.nav_more) | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -197,15 +192,15 @@ class MainActivity : BaseActivity() { | ||||
|         isHandlingShortcut = true | ||||
|  | ||||
|         when (intent.action) { | ||||
|             SHORTCUT_LIBRARY -> setSelectedDrawerItem(R.id.nav_library) | ||||
|             SHORTCUT_RECENTLY_UPDATED -> setSelectedDrawerItem(R.id.nav_updates) | ||||
|             SHORTCUT_RECENTLY_READ -> setSelectedDrawerItem(R.id.nav_history) | ||||
|             SHORTCUT_CATALOGUES -> setSelectedDrawerItem(R.id.nav_sources) | ||||
|             SHORTCUT_LIBRARY -> setSelectedNavItem(R.id.nav_library) | ||||
|             SHORTCUT_RECENTLY_UPDATED -> setSelectedNavItem(R.id.nav_updates) | ||||
|             SHORTCUT_RECENTLY_READ -> setSelectedNavItem(R.id.nav_history) | ||||
|             SHORTCUT_CATALOGUES -> setSelectedNavItem(R.id.nav_sources) | ||||
|             SHORTCUT_EXTENSIONS -> { | ||||
|                 if (router.backstackSize > 1) { | ||||
|                     router.popToRoot() | ||||
|                 } | ||||
|                 setSelectedDrawerItem(R.id.nav_more) | ||||
|                 setSelectedNavItem(R.id.nav_more) | ||||
|                 router.pushController(ExtensionController().withFadeTransaction()) | ||||
|             } | ||||
|             SHORTCUT_MANGA -> { | ||||
| @@ -213,14 +208,14 @@ class MainActivity : BaseActivity() { | ||||
|                 if (router.backstackSize > 1) { | ||||
|                     router.popToRoot() | ||||
|                 } | ||||
|                 setSelectedDrawerItem(R.id.nav_library) | ||||
|                 setSelectedNavItem(R.id.nav_library) | ||||
|                 router.pushController(RouterTransaction.with(MangaController(extras))) | ||||
|             } | ||||
|             SHORTCUT_DOWNLOADS -> { | ||||
|                 if (router.backstackSize > 1) { | ||||
|                     router.popToRoot() | ||||
|                 } | ||||
|                 setSelectedDrawerItem(R.id.nav_more) | ||||
|                 setSelectedNavItem(R.id.nav_more) | ||||
|                 router.pushController(RouterTransaction.with(DownloadController())) | ||||
|             } | ||||
|             Intent.ACTION_SEARCH, "com.google.android.gms.actions.SEARCH_ACTION" -> { | ||||
| @@ -258,24 +253,22 @@ class MainActivity : BaseActivity() { | ||||
|  | ||||
|     override fun onDestroy() { | ||||
|         super.onDestroy() | ||||
|         bottom_nav?.setOnNavigationItemSelectedListener(null) | ||||
|         toolbar?.setNavigationOnClickListener(null) | ||||
|         binding.bottomNav.setOnNavigationItemSelectedListener(null) | ||||
|         binding.toolbar.setNavigationOnClickListener(null) | ||||
|     } | ||||
|  | ||||
|     override fun onBackPressed() { | ||||
|         val backstackSize = router.backstackSize | ||||
|         if (drawer.isDrawerOpen(GravityCompat.START) || drawer.isDrawerOpen(GravityCompat.END)) { | ||||
|             drawer.closeDrawers() | ||||
|         } else if (backstackSize == 1 && router.getControllerWithTag("$startScreenId") == null) { | ||||
|             setSelectedDrawerItem(startScreenId) | ||||
|         if (backstackSize == 1 && router.getControllerWithTag("$startScreenId") == null) { | ||||
|             setSelectedNavItem(startScreenId) | ||||
|         } else if (backstackSize == 1 || !router.handleBack()) { | ||||
|             super.onBackPressed() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun setSelectedDrawerItem(itemId: Int) { | ||||
|     private fun setSelectedNavItem(itemId: Int) { | ||||
|         if (!isFinishing) { | ||||
|             bottom_nav.selectedItemId = itemId | ||||
|             binding.bottomNav.selectedItemId = itemId | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -298,31 +291,20 @@ class MainActivity : BaseActivity() { | ||||
|         } | ||||
|  | ||||
|         if (from is TabbedController) { | ||||
|             from.cleanupTabs(tabs) | ||||
|             from.cleanupTabs(binding.tabs) | ||||
|         } | ||||
|         if (to is TabbedController) { | ||||
|             tabAnimator.expand() | ||||
|             to.configureTabs(tabs) | ||||
|             to.configureTabs(binding.tabs) | ||||
|         } else { | ||||
|             tabAnimator.collapse() | ||||
|             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) } | ||||
|             binding.tabs.setupWithViewPager(null) | ||||
|         } | ||||
|  | ||||
|         if (to is NoToolbarElevationController) { | ||||
|             appbar.disableElevation() | ||||
|             binding.appbar.disableElevation() | ||||
|         } 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) | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user