diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/settings/habit/HabitSettingsPage.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/settings/habit/HabitSettingsPage.kt index 65b325ae..5da6a2a0 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/settings/habit/HabitSettingsPage.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/settings/habit/HabitSettingsPage.kt @@ -7,6 +7,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.BrandingWatermark import androidx.compose.material.icons.outlined.CalendarViewDay import androidx.compose.material.icons.outlined.ExitToApp +import androidx.compose.material.icons.outlined.NightsStay import androidx.compose.material.icons.outlined.PhotoSizeSelectActual import androidx.compose.material.icons.outlined.SecurityUpdateWarning import androidx.compose.material.icons.outlined.StarOutline @@ -104,6 +105,22 @@ fun HabitSettingsPage( }, ) } + prefsItem { + SwitchPref( + key = "imageDarkenWhenNightMode", + title = stringResource(id = R.string.settings_image_darken_when_night_mode), + defaultChecked = true, + leadingIcon = { + LeadingIcon { + AvatarIcon( + icon = Icons.Outlined.NightsStay, + size = Sizes.Small, + contentDescription = null, + ) + } + }, + ) + } prefsItem { ListPref( key = "default_sort_type", diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/Images.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/Images.kt index f0e6c37b..4161d070 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/Images.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/Images.kt @@ -11,6 +11,8 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.graphics.ColorMatrix import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import com.github.panpf.sketch.compose.AsyncImage @@ -23,6 +25,7 @@ import com.huanchengfly.tieba.post.ui.page.photoview.PhotoViewActivity import com.huanchengfly.tieba.post.ui.page.photoview.PhotoViewActivity.Companion.EXTRA_PHOTO_VIEW_DATA import com.huanchengfly.tieba.post.utils.ImageUtil import com.huanchengfly.tieba.post.utils.NetworkUtil +import com.huanchengfly.tieba.post.utils.ThemeUtil import com.huanchengfly.tieba.post.utils.appPreferences fun shouldLoadImage(context: Context, skipNetworkCheck: Boolean): Boolean { @@ -71,11 +74,27 @@ fun NetworkImage( } } + val currentTheme by remember { ThemeUtil.themeState } + val isNightMode = remember(currentTheme) { ThemeUtil.isNightMode(currentTheme) } + val colorFilter = if (isNightMode && context.appPreferences.imageDarkenWhenNightMode) { + ColorFilter.colorMatrix( + ColorMatrix( + floatArrayOf( + 1f, 0f, 0f, 0f, -35f, + 0f, 1f, 0f, 0f, -35f, + 0f, 0f, 1f, 0f, -35f, + 0f, 0f, 0f, 1f, 0f + ) + ) + ) + } else null + AsyncImage( request = request, contentDescription = contentDescription, modifier = modifier.then(clickableModifier), contentScale = contentScale, + colorFilter = colorFilter, ) } diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt index 4de63ed1..da1b0fa5 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt @@ -115,6 +115,8 @@ open class AppPreferencesUtils private constructor(ctx: Context) { var homePageScroll by DataStoreDelegates.boolean(defaultValue = false) + var imageDarkenWhenNightMode by DataStoreDelegates.boolean(defaultValue = true) + var imageLoadType by DataStoreDelegates.string( key = "image_load_type", defaultValue = "0" @@ -132,15 +134,13 @@ open class AppPreferencesUtils private constructor(ctx: Context) { var oldTheme by DataStoreDelegates.string(key = "old_theme") - var oksignWorkId by DataStoreDelegates.string() - var oksignSlowMode by DataStoreDelegates.boolean( defaultValue = true, key = "oksign_slow_mode" ) var oksignUseOfficialOksign by DataStoreDelegates.boolean( - defaultValue = false, + defaultValue = true, key = "oksign_use_official_oksign" ) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f3ac4cbb..bffccb7b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -724,4 +724,5 @@ 清除全部 动态取色 夜间主题 + 夜间模式压暗缩略图