From bd7dbecce2cf1e49f2c7d66c6b0cccfd948b50b4 Mon Sep 17 00:00:00 2001 From: Acclorite <2ma0bhpk@anonaddy.com> Date: Sun, 19 Oct 2025 19:55:55 +0300 Subject: [PATCH] feat: option to hide navigation labels * Added an option to hide navigation bar labels under icons --- .../data/settings/SettingsManager.kt | 3 +++ .../presentation/main/MainActivity.kt | 14 ++++++++-- .../navigation_bar/NavigationBar.kt | 5 ++-- .../navigation_bar/NavigationBarItem.kt | 23 +++++++++------- .../navigation_rail/NavigationRail.kt | 5 ++-- .../navigation_rail/NavigationRailItem.kt | 23 +++++++++------- .../ThemePreferencesSubcategory.kt | 5 ++++ .../components/ShowNavigationLabelsOption.kt | 27 +++++++++++++++++++ app/src/main/res/values-uk/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ 10 files changed, 83 insertions(+), 26 deletions(-) create mode 100644 app/src/main/java/ua/acclorite/book_story/ui/settings/appearance/theme_preferences/components/ShowNavigationLabelsOption.kt diff --git a/app/src/main/java/ua/acclorite/book_story/data/settings/SettingsManager.kt b/app/src/main/java/ua/acclorite/book_story/data/settings/SettingsManager.kt index 27f9b474..d647238d 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/settings/SettingsManager.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/settings/SettingsManager.kt @@ -106,6 +106,9 @@ class SettingsManager @Inject constructor( val doublePressExit = setting( key = booleanPreferencesKey("double_press_exit"), default = false ) + val showNavigationLabels = setting( + key = booleanPreferencesKey("show_navigation_labels"), default = true + ) /* ------ Reader ----------------------------- */ val fontFamily = setting( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/main/MainActivity.kt b/app/src/main/java/ua/acclorite/book_story/presentation/main/MainActivity.kt index dee42e95..6e15333a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/main/MainActivity.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/main/MainActivity.kt @@ -151,8 +151,18 @@ class MainActivity : AppCompatActivity() { Transitions.FadeTransitionIn .togetherWith(Transitions.FadeTransitionOut) }, - navigationBar = { NavigationBar(tabs = tabs) }, - navigationRail = { NavigationRail(tabs = tabs) } + navigationBar = { + NavigationBar( + tabs = tabs, + showLabels = settings.showNavigationLabels.value + ) + }, + navigationRail = { + NavigationRail( + tabs = tabs, + showLabels = settings.showNavigationLabels.value + ) + } ) { tab -> tab.Content() } diff --git a/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_bar/NavigationBar.kt b/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_bar/NavigationBar.kt index dfdb2ec2..3430519e 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_bar/NavigationBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_bar/NavigationBar.kt @@ -16,7 +16,7 @@ import ua.acclorite.book_story.presentation.navigator.NavigatorItem import ua.acclorite.book_story.ui.navigator.LocalNavigator @Composable -fun NavigationBar(tabs: List) { +fun NavigationBar(tabs: List, showLabels: Boolean) { val navigator = LocalNavigator.current val lastItem = navigator.lastItem.collectAsStateWithLifecycle() @@ -31,7 +31,8 @@ fun NavigationBar(tabs: List) { tabs.forEach { tab -> NavigationBarItem( item = tab, - isSelected = currentTab.value::class == tab.screen::class + isSelected = currentTab.value::class == tab.screen::class, + showLabel = showLabels ) { navigator.push(tab.screen) } diff --git a/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_bar/NavigationBarItem.kt b/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_bar/NavigationBarItem.kt index 2f8402ae..4815afeb 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_bar/NavigationBarItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_bar/NavigationBarItem.kt @@ -26,20 +26,23 @@ fun RowScope.NavigationBarItem( modifier: Modifier = Modifier, item: NavigatorItem, isSelected: Boolean, + showLabel: Boolean, onClick: () -> Unit ) { NavigationBarItem( - label = { - Tooltip( - text = stringResource(id = item.tooltip), - padding = 64.dp - ) { - StyledText( - text = stringResource(id = item.title), - maxLines = 1 - ) + label = if (showLabel) { + { + Tooltip( + text = stringResource(id = item.tooltip), + padding = 64.dp + ) { + StyledText( + text = stringResource(id = item.title), + maxLines = 1 + ) + } } - }, + } else null, selected = isSelected, onClick = { onClick() }, icon = { diff --git a/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_rail/NavigationRail.kt b/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_rail/NavigationRail.kt index 210f6c44..9d57f559 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_rail/NavigationRail.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_rail/NavigationRail.kt @@ -32,7 +32,7 @@ import ua.acclorite.book_story.presentation.navigator.NavigatorItem import ua.acclorite.book_story.ui.navigator.LocalNavigator @Composable -fun NavigationRail(tabs: List) { +fun NavigationRail(tabs: List, showLabels: Boolean) { val navigator = LocalNavigator.current val layoutDirection = LocalLayoutDirection.current val lastItem = navigator.lastItem.collectAsStateWithLifecycle() @@ -69,7 +69,8 @@ fun NavigationRail(tabs: List) { tabs.forEach { tab -> NavigationRailItem( item = tab, - isSelected = currentTab.value::class == tab.screen::class + isSelected = currentTab.value::class == tab.screen::class, + showLabel = showLabels ) { navigator.push(tab.screen) } diff --git a/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_rail/NavigationRailItem.kt b/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_rail/NavigationRailItem.kt index 9c010a69..6b744c1a 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_rail/NavigationRailItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/common/components/navigation_rail/NavigationRailItem.kt @@ -25,20 +25,23 @@ fun NavigationRailItem( modifier: Modifier = Modifier, item: NavigatorItem, isSelected: Boolean, + showLabel: Boolean, onClick: () -> Unit ) { NavigationRailItem( - label = { - Tooltip( - text = stringResource(id = item.tooltip), - padding = 48.dp - ) { - StyledText( - text = stringResource(id = item.title), - maxLines = 1 - ) + label = if (showLabel) { + { + Tooltip( + text = stringResource(id = item.tooltip), + padding = 48.dp + ) { + StyledText( + text = stringResource(id = item.title), + maxLines = 1 + ) + } } - }, + } else null, selected = isSelected, onClick = { onClick() }, icon = { diff --git a/app/src/main/java/ua/acclorite/book_story/ui/settings/appearance/theme_preferences/ThemePreferencesSubcategory.kt b/app/src/main/java/ua/acclorite/book_story/ui/settings/appearance/theme_preferences/ThemePreferencesSubcategory.kt index c50861fb..0f83b380 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/settings/appearance/theme_preferences/ThemePreferencesSubcategory.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/settings/appearance/theme_preferences/ThemePreferencesSubcategory.kt @@ -18,6 +18,7 @@ import ua.acclorite.book_story.ui.settings.appearance.theme_preferences.componen import ua.acclorite.book_story.ui.settings.appearance.theme_preferences.components.AppThemeOption import ua.acclorite.book_story.ui.settings.appearance.theme_preferences.components.DarkThemeOption import ua.acclorite.book_story.ui.settings.appearance.theme_preferences.components.PureDarkOption +import ua.acclorite.book_story.ui.settings.appearance.theme_preferences.components.ShowNavigationLabelsOption import ua.acclorite.book_story.ui.settings.appearance.theme_preferences.components.ThemeContrastOption import ua.acclorite.book_story.ui.settings.components.SettingsSubcategory @@ -52,5 +53,9 @@ fun LazyListScope.ThemePreferencesSubcategory( item { AbsoluteDarkOption() } + + item { + ShowNavigationLabelsOption() + } } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/ui/settings/appearance/theme_preferences/components/ShowNavigationLabelsOption.kt b/app/src/main/java/ua/acclorite/book_story/ui/settings/appearance/theme_preferences/components/ShowNavigationLabelsOption.kt new file mode 100644 index 00000000..730bb264 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/ui/settings/appearance/theme_preferences/components/ShowNavigationLabelsOption.kt @@ -0,0 +1,27 @@ +/* + * Book's Story — free and open-source Material You eBook reader. + * Copyright (C) 2024-2025 Acclorite + * SPDX-License-Identifier: GPL-3.0-only + */ + +package ua.acclorite.book_story.ui.settings.appearance.theme_preferences.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.res.stringResource +import ua.acclorite.book_story.R +import ua.acclorite.book_story.ui.common.components.settings.SwitchWithTitle +import ua.acclorite.book_story.ui.common.helpers.LocalSettings + +@Composable +fun ShowNavigationLabelsOption() { + val settings = LocalSettings.current + + SwitchWithTitle( + selected = settings.showNavigationLabels.value, + title = stringResource(id = R.string.show_navigation_labels_option), + description = stringResource(id = R.string.show_navigation_labels_option_desc), + onClick = { + settings.showNavigationLabels.update(!settings.showNavigationLabels.lastValue) + } + ) +} \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index f229f4d5..9ff6eaca 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -164,6 +164,8 @@ Тема застосунка Подвійне натискання для виходу Натисніть назад двічі, щоб вийти з застосунку + Показувати заголовки навігації + Показувати заголовки навігаційної панелі під іконками Сімейство шрифтів diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1b5e0c86..97153cb5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -186,6 +186,8 @@ App theme Double back press to exit Press back twice to exit the app + Show navigation labels + Show navigation bar labels under icons Font family