mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Adjust tablet layout (closes #5113)
This commit is contained in:
		@@ -70,7 +70,7 @@ class BrowseController :
 | 
			
		||||
    override fun onChangeStarted(handler: ControllerChangeHandler, type: ControllerChangeType) {
 | 
			
		||||
        super.onChangeStarted(handler, type)
 | 
			
		||||
        if (type.isEnter) {
 | 
			
		||||
            (activity as? MainActivity)?.binding?.toolbarLayout?.tabs?.apply {
 | 
			
		||||
            (activity as? MainActivity)?.binding?.tabs?.apply {
 | 
			
		||||
                setupWithViewPager(binding.pager)
 | 
			
		||||
 | 
			
		||||
                // Show badge on tab for extension updates
 | 
			
		||||
@@ -92,7 +92,7 @@ class BrowseController :
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun setExtensionUpdateBadge() {
 | 
			
		||||
        (activity as? MainActivity)?.binding?.toolbarLayout?.tabs?.apply {
 | 
			
		||||
        (activity as? MainActivity)?.binding?.tabs?.apply {
 | 
			
		||||
            val updates = preferences.extensionUpdatesCount().get()
 | 
			
		||||
            if (updates > 0) {
 | 
			
		||||
                val badge: BadgeDrawable? = getTabAt(1)?.orCreateBadge
 | 
			
		||||
 
 | 
			
		||||
@@ -218,7 +218,7 @@ class LibraryController(
 | 
			
		||||
    override fun onChangeStarted(handler: ControllerChangeHandler, type: ControllerChangeType) {
 | 
			
		||||
        super.onChangeStarted(handler, type)
 | 
			
		||||
        if (type.isEnter) {
 | 
			
		||||
            (activity as? MainActivity)?.binding?.toolbarLayout?.tabs?.setupWithViewPager(binding.libraryPager)
 | 
			
		||||
            (activity as? MainActivity)?.binding?.tabs?.setupWithViewPager(binding.libraryPager)
 | 
			
		||||
            presenter.subscribeLibrary()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -297,7 +297,7 @@ class LibraryController(
 | 
			
		||||
        // Delay the scroll position to allow the view to be properly measured.
 | 
			
		||||
        view.post {
 | 
			
		||||
            if (isAttached) {
 | 
			
		||||
                (activity as? MainActivity)?.binding?.toolbarLayout?.tabs?.setScrollPosition(binding.libraryPager.currentItem, 0f, true)
 | 
			
		||||
                (activity as? MainActivity)?.binding?.tabs?.setScrollPosition(binding.libraryPager.currentItem, 0f, true)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -96,11 +96,11 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        setContentView(binding.root)
 | 
			
		||||
        setSupportActionBar(binding.toolbarLayout.toolbar)
 | 
			
		||||
        setSupportActionBar(binding.toolbar)
 | 
			
		||||
 | 
			
		||||
        // Draw edge-to-edge
 | 
			
		||||
        WindowCompat.setDecorFitsSystemWindows(window, false)
 | 
			
		||||
        binding.toolbarLayout.appbar.applyInsetter {
 | 
			
		||||
        binding.appbar.applyInsetter {
 | 
			
		||||
            type(navigationBars = true, statusBars = true) {
 | 
			
		||||
                padding(left = true, top = true, right = true)
 | 
			
		||||
            }
 | 
			
		||||
@@ -131,13 +131,13 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
 | 
			
		||||
            insets
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        tabAnimator = ViewHeightAnimator(binding.toolbarLayout.tabs, 0L)
 | 
			
		||||
        tabAnimator = ViewHeightAnimator(binding.tabs, 0L)
 | 
			
		||||
 | 
			
		||||
        if (binding.bottomNav != null) {
 | 
			
		||||
            bottomNavAnimator = ViewHeightAnimator(binding.bottomNav!!)
 | 
			
		||||
 | 
			
		||||
            // If bottom nav is hidden, make it visible again when the app bar is expanded
 | 
			
		||||
            binding.toolbarLayout.appbar.addOnOffsetChangedListener(
 | 
			
		||||
            binding.appbar.addOnOffsetChangedListener(
 | 
			
		||||
                AppBarLayout.OnOffsetChangedListener { _, verticalOffset ->
 | 
			
		||||
                    if (verticalOffset == 0) {
 | 
			
		||||
                        showNav(visible = true)
 | 
			
		||||
@@ -186,7 +186,7 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        binding.toolbarLayout.toolbar.setNavigationOnClickListener {
 | 
			
		||||
        binding.toolbar.setNavigationOnClickListener {
 | 
			
		||||
            onBackPressed()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -227,13 +227,13 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
 | 
			
		||||
            .launchIn(lifecycleScope)
 | 
			
		||||
 | 
			
		||||
        preferences.downloadedOnly()
 | 
			
		||||
            .asImmediateFlow { binding.toolbarLayout.downloadedOnly.isVisible = it }
 | 
			
		||||
            .asImmediateFlow { binding.downloadedOnly.isVisible = it }
 | 
			
		||||
            .launchIn(lifecycleScope)
 | 
			
		||||
 | 
			
		||||
        preferences.incognitoMode().asFlow()
 | 
			
		||||
            .drop(1)
 | 
			
		||||
            .onEach {
 | 
			
		||||
                binding.toolbarLayout.incognitoMode.isVisible = it
 | 
			
		||||
                binding.incognitoMode.isVisible = it
 | 
			
		||||
 | 
			
		||||
                // Close BrowseSourceController and its MangaController child when incognito mode is disabled
 | 
			
		||||
                if (!it) {
 | 
			
		||||
@@ -355,7 +355,7 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
 | 
			
		||||
 | 
			
		||||
        // Binding sometimes isn't actually instantiated yet somehow
 | 
			
		||||
        nav.setOnItemSelectedListener(null)
 | 
			
		||||
        binding?.toolbarLayout?.toolbar.setNavigationOnClickListener(null)
 | 
			
		||||
        binding?.toolbar.setNavigationOnClickListener(null)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onBackPressed() {
 | 
			
		||||
@@ -408,7 +408,7 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
 | 
			
		||||
        supportActionBar?.setDisplayHomeAsUpEnabled(router.backstackSize != 1)
 | 
			
		||||
 | 
			
		||||
        // Always show appbar again when changing controllers
 | 
			
		||||
        binding.toolbarLayout.appbar.setExpanded(true)
 | 
			
		||||
        binding.appbar.setExpanded(true)
 | 
			
		||||
 | 
			
		||||
        if ((from == null || from is RootController) && to !is RootController) {
 | 
			
		||||
            showNav(visible = false, collapse = true)
 | 
			
		||||
@@ -419,14 +419,14 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (from is TabbedController) {
 | 
			
		||||
            from.cleanupTabs(binding.toolbarLayout.tabs)
 | 
			
		||||
            from.cleanupTabs(binding.tabs)
 | 
			
		||||
        }
 | 
			
		||||
        if (to is TabbedController) {
 | 
			
		||||
            tabAnimator.expand()
 | 
			
		||||
            to.configureTabs(binding.toolbarLayout.tabs)
 | 
			
		||||
            to.configureTabs(binding.tabs)
 | 
			
		||||
        } else {
 | 
			
		||||
            tabAnimator.collapse()
 | 
			
		||||
            binding.toolbarLayout.tabs.setupWithViewPager(null)
 | 
			
		||||
            binding.tabs.setupWithViewPager(null)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (from is FabController) {
 | 
			
		||||
@@ -440,13 +440,13 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
 | 
			
		||||
 | 
			
		||||
        when (to) {
 | 
			
		||||
            is NoToolbarElevationController -> {
 | 
			
		||||
                binding.toolbarLayout.appbar.disableElevation()
 | 
			
		||||
                binding.appbar.disableElevation()
 | 
			
		||||
            }
 | 
			
		||||
            is ToolbarLiftOnScrollController -> {
 | 
			
		||||
                binding.toolbarLayout.appbar.enableElevation(true)
 | 
			
		||||
                binding.appbar.enableElevation(true)
 | 
			
		||||
            }
 | 
			
		||||
            else -> {
 | 
			
		||||
                binding.toolbarLayout.appbar.enableElevation(false)
 | 
			
		||||
                binding.appbar.enableElevation(false)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -489,16 +489,16 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
 | 
			
		||||
     */
 | 
			
		||||
    fun fixViewToBottom(view: View) {
 | 
			
		||||
        val listener = AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset ->
 | 
			
		||||
            val maxAbsOffset = appBarLayout.measuredHeight - binding.toolbarLayout.tabs.measuredHeight
 | 
			
		||||
            val maxAbsOffset = appBarLayout.measuredHeight - binding.tabs.measuredHeight
 | 
			
		||||
            view.translationY = -maxAbsOffset - verticalOffset.toFloat() + appBarLayout.marginTop
 | 
			
		||||
        }
 | 
			
		||||
        binding.toolbarLayout.appbar.addOnOffsetChangedListener(listener)
 | 
			
		||||
        binding.appbar.addOnOffsetChangedListener(listener)
 | 
			
		||||
        fixedViewsToBottom[view] = listener
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun clearFixViewToBottom(view: View) {
 | 
			
		||||
        val listener = fixedViewsToBottom.remove(view)
 | 
			
		||||
        binding.toolbarLayout.appbar.removeOnOffsetChangedListener(listener)
 | 
			
		||||
        binding.appbar.removeOnOffsetChangedListener(listener)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun setBottomNavBehaviorOnScroll() {
 | 
			
		||||
 
 | 
			
		||||
@@ -277,7 +277,7 @@ class MangaController :
 | 
			
		||||
            else -> min(binding.recycler.computeVerticalScrollOffset(), 255)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        (activity as? MainActivity)?.binding?.toolbarLayout?.toolbar?.setTitleTextColor(
 | 
			
		||||
        (activity as? MainActivity)?.binding?.toolbar?.setTitleTextColor(
 | 
			
		||||
            Color.argb(
 | 
			
		||||
                calculatedAlpha,
 | 
			
		||||
                toolbarTextColor.red,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user