From e3263585230034b86beca4fea0fccccd12529fd1 Mon Sep 17 00:00:00 2001 From: Cuong-Tran Date: Mon, 24 Jun 2024 01:09:53 +0700 Subject: [PATCH] feat: Add option to show home icon on related titles Add an option to show a home icon while browsing related titles, allowing users to navigate directly back to home screen. --- .../java/eu/kanade/domain/ui/UiPreferences.kt | 2 ++ .../manga/components/MangaToolbar.kt | 27 +++++++++++++++++-- .../screen/SettingsAppearanceScreen.kt | 6 +++++ .../commonMain/resources/MR/base/strings.xml | 2 ++ 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt b/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt index cefd852a6..bb69b12a8 100644 --- a/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt +++ b/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt @@ -47,6 +47,8 @@ class UiPreferences( // KMK --> fun expandRelatedTitles() = preferenceStore.getBoolean("expand_related_titles", true) + + fun showHomeOnRelatedTitles() = preferenceStore.getBoolean("show_home_on_related_titles", true) // KMK <-- fun recommendsInOverflow() = preferenceStore.getBoolean("recommends_in_overflow", false) diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt index 204db95e9..8984767c6 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt @@ -1,7 +1,9 @@ package eu.kanade.presentation.manga.components import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.outlined.Close import androidx.compose.material.icons.outlined.Download import androidx.compose.material.icons.outlined.FlipToBack @@ -21,16 +23,21 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import cafe.adriel.voyager.navigator.LocalNavigator +import eu.kanade.domain.ui.UiPreferences import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBarActions import eu.kanade.presentation.components.DownloadDropdownMenu import eu.kanade.presentation.components.UpIcon import eu.kanade.presentation.manga.DownloadAction +import eu.kanade.tachiyomi.ui.manga.MangaScreen import eu.kanade.tachiyomi.util.system.isDevFlavor import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.i18n.sy.SYMR import tachiyomi.presentation.core.i18n.stringResource +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get @Composable fun MangaToolbar( @@ -60,6 +67,11 @@ fun MangaToolbar( onPaletteScreenClick: () -> Unit, // KMK <-- ) { + // KMK --> + val navigator = LocalNavigator.current + fun onHomeClicked() = navigator?.popUntil { screen -> screen !is MangaScreen } + val isHomeEnabled = Injekt.get().showHomeOnRelatedTitles().get() + // KMK <-- Column( modifier = modifier, ) { @@ -74,8 +86,19 @@ fun MangaToolbar( ) }, navigationIcon = { - IconButton(onClick = onBackClicked) { - UpIcon(navigationIcon = Icons.Outlined.Close.takeIf { isActionMode }) + Row { + IconButton(onClick = onBackClicked) { + UpIcon(navigationIcon = Icons.Outlined.Close.takeIf { isActionMode }) + } + // KMK --> + navigator?.let { + if (isHomeEnabled && navigator.size >= 3) { + IconButton(onClick = { onHomeClicked() }) { + UpIcon(navigationIcon = Icons.Filled.Home) + } + } + } + // KMK <-- } }, actions = { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt index f057c1a77..59abc2646 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt @@ -236,6 +236,12 @@ object SettingsAppearanceScreen : SearchableSettings { subtitle = stringResource(KMR.strings.pref_expand_related_titles_summary), enabled = sourcePreferences.relatedMangas().get(), ), + Preference.PreferenceItem.SwitchPreference( + pref = uiPreferences.showHomeOnRelatedTitles(), + title = stringResource(KMR.strings.pref_show_home_on_related_titles), + subtitle = stringResource(KMR.strings.pref_show_home_on_related_titles_summary), + enabled = sourcePreferences.relatedMangas().get(), + ), // KMK <-- Preference.PreferenceItem.SwitchPreference( pref = uiPreferences.recommendsInOverflow(), diff --git a/i18n-kmk/src/commonMain/resources/MR/base/strings.xml b/i18n-kmk/src/commonMain/resources/MR/base/strings.xml index 73a4ba585..572e123e5 100644 --- a/i18n-kmk/src/commonMain/resources/MR/base/strings.xml +++ b/i18n-kmk/src/commonMain/resources/MR/base/strings.xml @@ -22,6 +22,8 @@ Content Expand Related titles If turned off, related titles won\'t automatically load & show expanded + Home from Related titles + Show an icon while browsing Related titles to navigate directly back to Home Unofficial