From 40927153ca5c00691898e8c3fddf770c94d24707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferm=C3=ADn=20Cirella?= Date: Tue, 1 Apr 2025 16:59:39 -0300 Subject: [PATCH] Allow to top align the cover in manga info view (#816) * Add Appearance option to set if cover should be vertically aligned in the manga info view * Apply align modifier with `CenterVertically` or `Top` instead of using `.apply` * Change option to align cover to top --- app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt | 2 ++ .../presentation/manga/components/MangaInfoHeader.kt | 9 ++++++--- .../more/settings/screen/SettingsAppearanceScreen.kt | 5 +++++ i18n-kmk/src/commonMain/moko-resources/base/strings.xml | 2 ++ 4 files changed, 15 insertions(+), 3 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 64e775844..b03d3f767 100644 --- a/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt +++ b/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt @@ -70,6 +70,8 @@ class UiPreferences( fun usePanoramaCoverAlways() = preferenceStore.getBoolean("use_panorama_cover_grid", true) fun usePanoramaCoverMangaInfo() = preferenceStore.getBoolean("use_panorama_cover_manga_info", false) + + fun topAlignCover() = preferenceStore.getBoolean("top_align_cover", false) // KMK <-- fun recommendsInOverflow() = preferenceStore.getBoolean("recommends_in_overflow", false) diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt index 474cef9ca..7951d73b2 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt @@ -127,6 +127,7 @@ fun MangaInfoBox( ) { // KMK --> val usePanoramaCover by Injekt.get().usePanoramaCoverMangaInfo().collectAsState() + val topAlignCover by Injekt.get().topAlignCover().collectAsState() // KMK <-- Box(modifier = modifier) { // Backdrop @@ -184,6 +185,7 @@ fun MangaInfoBox( onCoverLoaded = onCoverLoaded, coverRatio = coverRatio, usePanoramaCover = usePanoramaCover, + topAlignCover = topAlignCover, // KMK <-- ) } else { @@ -553,6 +555,7 @@ private fun MangaAndSourceTitlesSmall( onCoverLoaded: (DomainMangaCover) -> Unit, coverRatio: MutableFloatState, usePanoramaCover: Boolean = false, + topAlignCover: Boolean = false, // KMK <-- ) { Row( @@ -560,7 +563,7 @@ private fun MangaAndSourceTitlesSmall( .fillMaxWidth() .padding(start = 16.dp, top = appBarPadding + 16.dp, end = 16.dp), horizontalArrangement = Arrangement.spacedBy(16.dp), - verticalAlignment = Alignment.CenterVertically, + verticalAlignment = if (topAlignCover) Alignment.Top else Alignment.CenterVertically, ) { // KMK --> if (usePanoramaCover && coverRatio.floatValue <= RatioSwitchToPanorama) { @@ -568,7 +571,7 @@ private fun MangaAndSourceTitlesSmall( modifier = Modifier .sizeIn(maxHeight = 100.dp) // KMK --> - .align(Alignment.CenterVertically), + .align(if (topAlignCover) Alignment.Top else Alignment.CenterVertically), // KMK <-- data = ImageRequest.Builder(LocalContext.current) .data(manga) @@ -590,7 +593,7 @@ private fun MangaAndSourceTitlesSmall( modifier = Modifier .sizeIn(maxWidth = 100.dp) // KMK --> - .align(Alignment.CenterVertically), + .align(if (topAlignCover) Alignment.Top else Alignment.CenterVertically), // KMK <-- data = ImageRequest.Builder(LocalContext.current) .data(manga) 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 ffd114243..a1fa9e905 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 @@ -204,6 +204,11 @@ object SettingsAppearanceScreen : SearchableSettings { title = stringResource(KMR.strings.pref_panorama_cover), subtitle = stringResource(KMR.strings.pref_panorama_cover_summary), ), + Preference.PreferenceItem.SwitchPreference( + preference = uiPreferences.topAlignCover(), + title = stringResource(KMR.strings.pref_top_align_cover), + subtitle = stringResource(KMR.strings.pref_top_align_cover_summary), + ), ), ) } diff --git a/i18n-kmk/src/commonMain/moko-resources/base/strings.xml b/i18n-kmk/src/commonMain/moko-resources/base/strings.xml index 6c080027e..b6ecb3a69 100644 --- a/i18n-kmk/src/commonMain/moko-resources/base/strings.xml +++ b/i18n-kmk/src/commonMain/moko-resources/base/strings.xml @@ -38,6 +38,8 @@ Show cover in landscape mode if it\'s a wide image Panorama Cover Flow Show panorama cover in Global Search & Suggestions + Align Cover to Top + Show the cover aligned to the top alongside manga info Panorama comfortable grid Expand Suggestions If turned off, Suggestions won\'t automatically load & show expanded