diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/EhUtils.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/EhUtils.kt index 084ddca8d..250cbd812 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/EhUtils.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/client/EhUtils.kt @@ -20,11 +20,14 @@ import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import android.os.Environment +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.LocalContentColor import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.ReadOnlyComposable import androidx.compose.runtime.Stable import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.toArgb import androidx.core.net.toUri import arrow.core.memoize import com.ehviewer.core.model.GalleryDetail @@ -40,6 +43,7 @@ import com.hippo.ehviewer.util.addTextToClipboard import com.materialkolor.hct.Hct import com.materialkolor.ktx.from import com.materialkolor.ktx.toColor +import com.materialkolor.utils.ColorUtils.lstarFromArgb import splitties.systemservices.downloadManager object EhUtils { @@ -152,7 +156,13 @@ object EhUtils { } } - val categoryTextColor = Color(0xffe6e0e9) + @ReadOnlyComposable + @Composable + fun getCategoryTextColor(color: Color) = if (isSystemInDarkTheme() == lstarFromArgb(color.toArgb()) > 70) { + MaterialTheme.colorScheme.surface + } else { + LocalContentColor.current + } val favoriteIconColor = Color(0xffff3040) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/main/DownloadCard.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/main/DownloadCard.kt index 0c9237be1..4b932ecbd 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/main/DownloadCard.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/main/DownloadCard.kt @@ -37,7 +37,6 @@ import androidx.compose.runtime.setValue 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.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp @@ -48,7 +47,6 @@ import com.ehviewer.core.ui.component.GalleryListCardRating import com.ehviewer.core.ui.util.TransitionsVisibilityScope import com.ehviewer.core.ui.util.listThumbGenerator import com.hippo.ehviewer.EhDB -import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.EhUtils import com.hippo.ehviewer.download.DownloadManager import com.hippo.ehviewer.util.FileUtils @@ -160,7 +158,7 @@ fun DownloadCard( Text( text = categoryText, modifier = Modifier.clip(ShapeDefaults.Small).background(categoryColor).padding(vertical = 2.dp, horizontal = 8.dp), - color = if (Settings.harmonizeCategoryColor.value) Color.Unspecified else EhUtils.categoryTextColor, + color = EhUtils.getCategoryTextColor(categoryColor), style = MaterialTheme.typography.labelLarge, ) } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/main/GalleryInfo.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/main/GalleryInfo.kt index a6c25818d..be365e364 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/main/GalleryInfo.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/main/GalleryInfo.kt @@ -23,7 +23,6 @@ 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.collectAsState import androidx.compose.runtime.getValue @@ -34,7 +33,6 @@ 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.text.font.FontStyle import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp @@ -48,7 +46,6 @@ import com.ehviewer.core.ui.util.SharedElementBox import com.ehviewer.core.ui.util.TransitionsVisibilityScope import com.ehviewer.core.ui.util.listThumbGenerator import com.hippo.ehviewer.EhDB -import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.EhUtils import com.hippo.ehviewer.download.DownloadManager import com.hippo.ehviewer.util.FavouriteStatusRouter @@ -143,7 +140,7 @@ fun GalleryInfoListItem( Text( text = categoryText, modifier = Modifier.clip(ShapeDefaults.Small).background(categoryColor).padding(vertical = 2.dp, horizontal = 8.dp), - color = if (Settings.harmonizeCategoryColor.value) Color.Unspecified else EhUtils.categoryTextColor, + color = EhUtils.getCategoryTextColor(categoryColor), ) Spacer(modifier = Modifier.weight(1f)) Text(text = info.posted.orEmpty()) @@ -196,7 +193,7 @@ fun GalleryInfoGridItem( Badge( modifier = Modifier.align(Alignment.TopEnd).widthIn(min = 32.dp).height(24.dp), containerColor = categoryColor, - contentColor = if (Settings.harmonizeCategoryColor.value) contentColorFor(categoryColor) else EhUtils.categoryTextColor, + contentColor = EhUtils.getCategoryTextColor(categoryColor), ) { val shouldShowLanguage = showLanguage && info.simpleLanguage != null if (showPages && info.pages > 0) {