Option to move nav rail buttons to bottom of screen (closes #5158)

Based on https://github.com/Jays2Kings/tachiyomiJ2K/commit/90be3e34948d41daf3fd695ef09d60eb6adf960e

Co-authored-by: Jays2Kings <Jays2Kings@users.noreply.github.com>
(cherry picked from commit a462ce3626)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
#	app/src/main/res/values/strings.xml
This commit is contained in:
arkon
2021-05-23 14:27:44 -04:00
committed by Jobobby04
parent ec9967d2d6
commit 9adbb1b115
6 changed files with 29 additions and 9 deletions
@@ -13,7 +13,9 @@ object PreferenceKeys {
const val confirmExit = "pref_confirm_exit"
const val hideBottomBar = "pref_hide_bottom_bar_on_scroll"
const val hideBottomBarOnScroll = "pref_hide_bottom_bar_on_scroll"
const val showSideNavOnBottom = "pref_show_side_nav_on_bottom"
const val enableTransitionsPager = "pref_enable_transitions_pager_key"
@@ -65,7 +65,9 @@ class PreferencesHelper(val context: Context) {
fun confirmExit() = prefs.getBoolean(Keys.confirmExit, false)
fun hideBottomBar() = flowPrefs.getBoolean(Keys.hideBottomBar, true)
fun hideBottomBarOnScroll() = flowPrefs.getBoolean(Keys.hideBottomBarOnScroll, true)
fun showSideNavOnBottom() = flowPrefs.getBoolean(Keys.showSideNavOnBottom, false)
fun useAuthenticator() = flowPrefs.getBoolean(Keys.useAuthenticator, false)
@@ -6,6 +6,7 @@ import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.os.Looper
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
@@ -170,11 +171,19 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
)
// Set behavior of bottom nav
preferences.hideBottomBar()
preferences.hideBottomBarOnScroll()
.asImmediateFlow { setBottomNavBehaviorOnScroll() }
.launchIn(lifecycleScope)
}
if (binding.sideNav != null) {
preferences.showSideNavOnBottom()
.asImmediateFlow {
binding.sideNav?.menuGravity = if (!it) Gravity.TOP else Gravity.BOTTOM
}
.launchIn(lifecycleScope)
}
nav.setOnItemSelectedListener { item ->
val id = item.itemId
@@ -569,7 +578,7 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
binding.bottomNav?.updateLayoutParams<CoordinatorLayout.LayoutParams> {
behavior = when {
preferences.hideBottomBar().get() -> HideBottomViewOnScrollBehavior<View>()
preferences.hideBottomBarOnScroll().get() -> HideBottomViewOnScrollBehavior<View>()
else -> null
}
}
@@ -47,9 +47,15 @@ class SettingsGeneralController : SettingsController() {
titleRes = R.string.pref_confirm_exit
defaultValue = false
}
if (!context.isTablet()) {
if (context.isTablet()) {
switchPreference {
key = Keys.hideBottomBar
key = Keys.showSideNavOnBottom
titleRes = R.string.pref_move_side_nav_to_bottom
defaultValue = false
}
} else {
switchPreference {
key = Keys.hideBottomBarOnScroll
titleRes = R.string.pref_hide_bottom_bar_on_scroll
defaultValue = true
}