apply the style to the app

This commit is contained in:
Bnyro 2022-09-20 18:57:50 +02:00
parent bd618d032f
commit d9c7e937c6
4 changed files with 52 additions and 21 deletions

View File

@ -33,12 +33,12 @@ import com.github.libretube.models.PlayerViewModel
import com.github.libretube.models.SearchViewModel import com.github.libretube.models.SearchViewModel
import com.github.libretube.models.SubscriptionsViewModel import com.github.libretube.models.SubscriptionsViewModel
import com.github.libretube.services.ClosingService import com.github.libretube.services.ClosingService
import com.github.libretube.util.NavBarHelper
import com.github.libretube.util.NetworkHelper import com.github.libretube.util.NetworkHelper
import com.github.libretube.util.PreferenceHelper import com.github.libretube.util.PreferenceHelper
import com.github.libretube.util.ThemeHelper import com.github.libretube.util.ThemeHelper
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.elevation.SurfaceColors import com.google.android.material.elevation.SurfaceColors
import com.google.android.material.navigation.NavigationBarView
class MainActivity : BaseActivity() { class MainActivity : BaseActivity() {
@ -93,13 +93,7 @@ class MainActivity : BaseActivity() {
window.navigationBarColor = color window.navigationBarColor = color
// save start tab fragment id // save start tab fragment id
startFragmentId = startFragmentId = NavBarHelper.applyNavBarStyle(binding.bottomNav)
when (PreferenceHelper.getString(PreferenceKeys.DEFAULT_TAB, "home")) {
"home" -> R.id.homeFragment
"subscriptions" -> R.id.subscriptionsFragment
"library" -> R.id.libraryFragment
else -> R.id.homeFragment
}
// set default tab as start fragment // set default tab as start fragment
navController.graph.setStartDestination(startFragmentId) navController.graph.setStartDestination(startFragmentId)
@ -107,16 +101,6 @@ class MainActivity : BaseActivity() {
// navigate to the default fragment // navigate to the default fragment
navController.navigate(startFragmentId) navController.navigate(startFragmentId)
val labelVisibilityMode = when (
PreferenceHelper.getString(PreferenceKeys.LABEL_VISIBILITY, "always")
) {
"always" -> NavigationBarView.LABEL_VISIBILITY_LABELED
"selected" -> NavigationBarView.LABEL_VISIBILITY_SELECTED
"never" -> NavigationBarView.LABEL_VISIBILITY_UNLABELED
else -> NavigationBarView.LABEL_VISIBILITY_AUTO
}
binding.bottomNav.labelVisibilityMode = labelVisibilityMode
binding.bottomNav.setOnApplyWindowInsetsListener(null) binding.bottomNav.setOnApplyWindowInsetsListener(null)
binding.bottomNav.setOnItemSelectedListener { binding.bottomNav.setOnItemSelectedListener {

View File

@ -63,7 +63,6 @@ class NavBarOptionsDialog : DialogFragment() {
.setTitle(R.string.navigation_bar) .setTitle(R.string.navigation_bar)
.setView(binding.root) .setView(binding.root)
.setPositiveButton(R.string.okay) { _, _ -> .setPositiveButton(R.string.okay) { _, _ ->
Log.e("options", adapter.items.toString())
NavBarHelper.setNavBarItems(adapter.items) NavBarHelper.setNavBarItems(adapter.items)
} }
.setNegativeButton(R.string.cancel, null) .setNegativeButton(R.string.cancel, null)

View File

@ -1,7 +1,7 @@
package com.github.libretube.obj package com.github.libretube.obj
data class NavBarItem( data class NavBarItem(
val resourceId: Int, val id: Int = 0,
val titleResource: Int, val titleResource: Int = 0,
var isEnabled: Boolean = true var isEnabled: Boolean = true
) )

View File

@ -1,9 +1,16 @@
package com.github.libretube.util package com.github.libretube.util
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import com.fasterxml.jackson.core.type.TypeReference import com.fasterxml.jackson.core.type.TypeReference
import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.ObjectMapper
import com.github.libretube.constants.PreferenceKeys
import com.github.libretube.constants.navBarItems import com.github.libretube.constants.navBarItems
import com.github.libretube.extensions.TAG
import com.github.libretube.obj.NavBarItem import com.github.libretube.obj.NavBarItem
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.navigation.NavigationBarView
object NavBarHelper { object NavBarHelper {
val preferenceKey = "nav_bar_items" val preferenceKey = "nav_bar_items"
@ -30,4 +37,45 @@ object NavBarHelper {
mapper.writeValueAsString(items) mapper.writeValueAsString(items)
) )
} }
/**
* Apply the bottom navigation style configured in the preferences
* @return Id of the start fragment
*/
fun applyNavBarStyle(bottomNav: BottomNavigationView): Int {
val labelVisibilityMode = when (
PreferenceHelper.getString(PreferenceKeys.LABEL_VISIBILITY, "always")
) {
"always" -> NavigationBarView.LABEL_VISIBILITY_LABELED
"selected" -> NavigationBarView.LABEL_VISIBILITY_SELECTED
"never" -> NavigationBarView.LABEL_VISIBILITY_UNLABELED
else -> NavigationBarView.LABEL_VISIBILITY_AUTO
}
bottomNav.labelVisibilityMode = labelVisibilityMode
val navBarItems = getNavBarItems()
val menuItems = mutableListOf<MenuItem>()
// remove the old items
navBarItems.forEach {
menuItems.add(
bottomNav.menu.findItem(it.id)
)
bottomNav.menu.removeItem(it.id)
}
navBarItems.forEach { navBarItem ->
if (navBarItem.isEnabled) {
val menuItem = menuItems.filter { it.itemId == navBarItem.id }[0]
bottomNav.menu.add(
menuItem.groupId,
menuItem.itemId,
Menu.NONE,
menuItem.title
).icon = menuItem.icon
}
}
return navBarItems[0].id
}
} }