feat(ui): option for not grey out all articles

This commit is contained in:
junkfood 2024-11-10 20:33:45 +08:00
parent 5bf274d986
commit d4541dd026
No known key found for this signature in database
GPG Key ID: 2EA5B648DB112A34
3 changed files with 16 additions and 17 deletions

View File

@ -16,14 +16,15 @@ import me.ash.reader.ui.ext.put
val LocalFlowArticleListReadIndicator =
compositionLocalOf<FlowArticleReadIndicatorPreference> { 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<Boolean>]) {
true -> ExcludingStarred
false -> AllRead
when (preferences[DataStoreKey.keys[flowArticleListReadIndicator]?.key as Preferences.Key<Int>]) {
0 -> ExcludingStarred
1 -> AllRead
2 -> None
else -> default
}
}
}
operator fun FlowArticleReadIndicatorPreference.not(): FlowArticleReadIndicatorPreference =
when (value) {
true -> FlowArticleReadIndicatorPreference.AllRead
false -> FlowArticleReadIndicatorPreference.ExcludingStarred
}
}

View File

@ -131,7 +131,7 @@ data class DataStoreKey<T>(
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<T>(
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),

View File

@ -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
}