diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.kt b/app/src/main/java/com/hippo/ehviewer/Settings.kt index 4773db5a48..cd1598200a 100755 --- a/app/src/main/java/com/hippo/ehviewer/Settings.kt +++ b/app/src/main/java/com/hippo/ehviewer/Settings.kt @@ -60,6 +60,7 @@ object Settings : DataStorePreferences(null) { var removeImageFiles by boolPref("include_pic", true) var needSignIn by boolPref("need_sign_in", true) var blackDarkTheme by boolPref("black_dark_theme", false).observed { updateWhenAmoledModeChanges() } + var harmonizeCategoryColor by boolPref("harmonize_category_color", true) var preloadThumbAggressively by boolPref("preload_thumb_aggressively", false) var downloadOriginImage by boolPref("download_origin_image", false) var thumbSizeDp by intPref("thumb_size_", 120) diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhUtils.kt b/app/src/main/java/com/hippo/ehviewer/client/EhUtils.kt index 74f8c43971..bbcfe3d44e 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhUtils.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhUtils.kt @@ -126,12 +126,18 @@ object EhUtils { MISC -> BG_COLOR_MISC else -> BG_COLOR_UNKNOWN }.toInt() - return harmonizeWithRole(context, primary) + return if (Settings.harmonizeCategoryColor) { + harmonizeWithRole(context, primary) + } else { + primary + } } @Composable fun getCategoryColor(category: Int) = Color(getCategoryColor(LocalContext.current, category)) + val categoryTextColor = Color(0xffe6e0e9) + fun signOut() { EhCookieStore.signOut() Settings.avatar = null diff --git a/app/src/main/java/com/hippo/ehviewer/ui/main/GalleryInfo.kt b/app/src/main/java/com/hippo/ehviewer/ui/main/GalleryInfo.kt index 6c7a65f633..1e2559de04 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/main/GalleryInfo.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/main/GalleryInfo.kt @@ -21,6 +21,7 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ProvideTextStyle import androidx.compose.material3.ShapeDefaults import androidx.compose.material3.Text +import androidx.compose.material3.contentColorFor import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.produceState @@ -28,12 +29,14 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.constraintlayout.compose.ConstraintLayout +import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.EhUtils import com.hippo.ehviewer.client.data.GalleryInfo import com.hippo.ehviewer.client.data.GalleryInfo.Companion.NOT_FAVORITED @@ -109,6 +112,7 @@ fun GalleryInfoListItem( start.linkTo(parent.start) bottom.linkTo(parent.bottom) }.clip(ShapeDefaults.Small).background(categoryColor).padding(vertical = 2.dp, horizontal = 8.dp), + color = if (Settings.harmonizeCategoryColor) Color.Unspecified else EhUtils.categoryTextColor, textAlign = TextAlign.Center, ) Row( @@ -198,10 +202,11 @@ fun GalleryInfoGridItem( modifier = Modifier.aspectRatio(aspect).fillMaxWidth(), contentScale = ContentScale.Crop, ) + val categoryColor = EhUtils.getCategoryColor(info.category) Badge( modifier = Modifier.align(Alignment.TopEnd).width(32.dp).height(24.dp), - containerColor = EhUtils.getCategoryColor(info.category), - contentColor = MaterialTheme.colorScheme.onSurface, + containerColor = categoryColor, + contentColor = if (Settings.harmonizeCategoryColor) contentColorFor(categoryColor) else EhUtils.categoryTextColor, ) { simpleLang?.let { Text(text = it.uppercase()) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt index 1ce5249d02..9e289902b9 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt @@ -46,6 +46,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.LocalContext @@ -809,6 +810,7 @@ class DownloadsScene : Text( text = categoryText, modifier = Modifier.clip(ShapeDefaults.Small).background(categoryColor).padding(vertical = 2.dp, horizontal = 8.dp), + color = if (Settings.harmonizeCategoryColor) Color.Unspecified else EhUtils.categoryTextColor, textAlign = TextAlign.Center, style = MaterialTheme.typography.labelLarge, ) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt index ddb0409184..b29efdf846 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt @@ -224,6 +224,10 @@ fun EhScreen() { title = stringResource(id = R.string.black_dark_theme), value = Settings::blackDarkTheme, ) + SwitchPreference( + title = stringResource(id = R.string.harmonize_category_color), + value = Settings::harmonizeCategoryColor, + ) SimpleMenuPreferenceInt( title = stringResource(id = R.string.settings_eh_launch_page), entry = R.array.launch_page_entries, diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 09c1937f78..028ec95ec5 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -476,6 +476,7 @@ 下载服务 收藏画廊 纯黑深色主题 + 类别颜色适配动态配色 使用持续集成(CI)构建频道更新 过滤 全部 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ec57d15ac1..e83cef97c1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -541,6 +541,7 @@ Download Service Favorite Black dark theme + Harmonize category color for Dynamic Color Filter All Start all (reversed)