From d4541dd0264cd3fb831b87f2b1184980263ccc33 Mon Sep 17 00:00:00 2001 From: junkfood <69683722+JunkFood02@users.noreply.github.com> Date: Sun, 10 Nov 2024 20:33:45 +0800 Subject: [PATCH] feat(ui): option for not grey out all articles --- .../FlowArticleReadIndicatorPreference.kt | 27 +++++++++---------- .../java/me/ash/reader/ui/ext/DataStoreExt.kt | 4 +-- .../reader/ui/page/home/flow/ArticleItem.kt | 2 ++ 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/me/ash/reader/infrastructure/preference/FlowArticleReadIndicatorPreference.kt b/app/src/main/java/me/ash/reader/infrastructure/preference/FlowArticleReadIndicatorPreference.kt index 816b731b..562a5019 100644 --- a/app/src/main/java/me/ash/reader/infrastructure/preference/FlowArticleReadIndicatorPreference.kt +++ b/app/src/main/java/me/ash/reader/infrastructure/preference/FlowArticleReadIndicatorPreference.kt @@ -16,14 +16,15 @@ import me.ash.reader.ui.ext.put val LocalFlowArticleListReadIndicator = compositionLocalOf { FlowArticleReadIndicatorPreference.default } -sealed class FlowArticleReadIndicatorPreference(val value: Boolean) : Preference() { - object ExcludingStarred : FlowArticleReadIndicatorPreference(true) - object AllRead : FlowArticleReadIndicatorPreference(false) +sealed class FlowArticleReadIndicatorPreference(val value: Int) : Preference() { + data object ExcludingStarred : FlowArticleReadIndicatorPreference(0) + data object AllRead : FlowArticleReadIndicatorPreference(1) + data object None : FlowArticleReadIndicatorPreference(2) override fun put(context: Context, scope: CoroutineScope) { scope.launch { context.dataStore.put( - DataStoreKey.flowArticleListReadIndicator, + flowArticleListReadIndicator, value ) } @@ -34,26 +35,22 @@ sealed class FlowArticleReadIndicatorPreference(val value: Boolean) : Preference return when (this) { AllRead -> stringResource(id = R.string.all_read) ExcludingStarred -> stringResource(id = R.string.read_excluding_starred) + None -> stringResource(id = R.string.none) } } companion object { val default = ExcludingStarred - val values = listOf(ExcludingStarred, AllRead) + val values = listOf(ExcludingStarred, AllRead, None) fun fromPreferences(preferences: Preferences) = - when (preferences[DataStoreKey.keys[flowArticleListReadIndicator]?.key as Preferences.Key]) { - true -> ExcludingStarred - false -> AllRead + when (preferences[DataStoreKey.keys[flowArticleListReadIndicator]?.key as Preferences.Key]) { + 0 -> ExcludingStarred + 1 -> AllRead + 2 -> None else -> default } } -} - -operator fun FlowArticleReadIndicatorPreference.not(): FlowArticleReadIndicatorPreference = - when (value) { - true -> FlowArticleReadIndicatorPreference.AllRead - false -> FlowArticleReadIndicatorPreference.ExcludingStarred - } +} \ No newline at end of file diff --git a/app/src/main/java/me/ash/reader/ui/ext/DataStoreExt.kt b/app/src/main/java/me/ash/reader/ui/ext/DataStoreExt.kt index c8d26873..00b4151b 100644 --- a/app/src/main/java/me/ash/reader/ui/ext/DataStoreExt.kt +++ b/app/src/main/java/me/ash/reader/ui/ext/DataStoreExt.kt @@ -131,7 +131,7 @@ data class DataStoreKey( const val flowArticleListTime = "flowArticleListTime" const val flowArticleListDateStickyHeader = "flowArticleListDateStickyHeader" const val flowArticleListTonalElevation = "flowArticleListTonalElevation" - const val flowArticleListReadIndicator = "flowArticleListReadIndicator" + const val flowArticleListReadIndicator = "flowArticleListReadStatusIndicator" // Reading page const val readingRenderer = "readingRender" @@ -207,7 +207,7 @@ data class DataStoreKey( flowArticleListTime to DataStoreKey(booleanPreferencesKey(flowArticleListTime), Boolean::class.java), flowArticleListDateStickyHeader to DataStoreKey(booleanPreferencesKey(flowArticleListDateStickyHeader), Boolean::class.java), flowArticleListTonalElevation to DataStoreKey(intPreferencesKey(flowArticleListTonalElevation), Int::class.java), - flowArticleListReadIndicator to DataStoreKey(booleanPreferencesKey(flowArticleListReadIndicator), Boolean::class.java), + flowArticleListReadIndicator to DataStoreKey(intPreferencesKey(flowArticleListReadIndicator), Int::class.java), // Reading page readingRenderer to DataStoreKey(intPreferencesKey(readingRenderer), Int::class.java), readingBionicReading to DataStoreKey(booleanPreferencesKey(readingBionicReading), Boolean::class.java), diff --git a/app/src/main/java/me/ash/reader/ui/page/home/flow/ArticleItem.kt b/app/src/main/java/me/ash/reader/ui/page/home/flow/ArticleItem.kt index 5981c7e0..efdc5900 100644 --- a/app/src/main/java/me/ash/reader/ui/page/home/flow/ArticleItem.kt +++ b/app/src/main/java/me/ash/reader/ui/page/home/flow/ArticleItem.kt @@ -145,6 +145,8 @@ fun ArticleItem( .padding(horizontal = 12.dp, vertical = 12.dp) .alpha( when (articleListReadIndicator) { + FlowArticleReadIndicatorPreference.None -> 1f + FlowArticleReadIndicatorPreference.AllRead -> { if (isUnread) 1f else 0.5f }