Przeglądaj źródła

Move CheckboxState to core module

arkon 2 lat temu
rodzic
commit
fd7c993b0b

+ 6 - 49
app/src/main/java/eu/kanade/core/prefs/CheckboxState.kt

@@ -1,55 +1,12 @@
 package eu.kanade.core.prefs
 
 import androidx.compose.ui.state.ToggleableState
+import tachiyomi.core.preference.CheckboxState
 
-sealed class CheckboxState<T>(open val value: T) {
-    abstract fun next(): CheckboxState<T>
-
-    sealed class State<T>(override val value: T) : CheckboxState<T>(value) {
-        data class Checked<T>(override val value: T) : State<T>(value)
-        data class None<T>(override val value: T) : State<T>(value)
-
-        val isChecked: Boolean
-            get() = this is Checked
-
-        override fun next(): CheckboxState<T> {
-            return when (this) {
-                is Checked -> None(value)
-                is None -> Checked(value)
-            }
-        }
-    }
-    sealed class TriState<T>(override val value: T) : CheckboxState<T>(value) {
-        data class Include<T>(override val value: T) : TriState<T>(value)
-        data class Exclude<T>(override val value: T) : TriState<T>(value)
-        data class None<T>(override val value: T) : TriState<T>(value)
-
-        override fun next(): CheckboxState<T> {
-            return when (this) {
-                is Exclude -> None(value)
-                is Include -> Exclude(value)
-                is None -> Include(value)
-            }
-        }
-
-        fun asState(): ToggleableState {
-            return when (this) {
-                is Exclude -> ToggleableState.Indeterminate
-                is Include -> ToggleableState.On
-                is None -> ToggleableState.Off
-            }
-        }
+fun <T> CheckboxState.TriState<T>.asState(): ToggleableState {
+    return when (this) {
+        is CheckboxState.TriState.Exclude -> ToggleableState.Indeterminate
+        is CheckboxState.TriState.Include -> ToggleableState.On
+        is CheckboxState.TriState.None -> ToggleableState.Off
     }
 }
-
-inline fun <T> T.asCheckboxState(condition: (T) -> Boolean): CheckboxState.State<T> {
-    return if (condition(this)) {
-        CheckboxState.State.Checked(this)
-    } else {
-        CheckboxState.State.None(this)
-    }
-}
-
-inline fun <T> List<T>.mapAsCheckboxState(condition: (T) -> Boolean): List<CheckboxState.State<T>> {
-    return this.map { it.asCheckboxState(condition) }
-}

+ 2 - 1
app/src/main/java/eu/kanade/presentation/category/ChangeCategoryDialog.kt

@@ -21,8 +21,9 @@ import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.stringResource
-import eu.kanade.core.prefs.CheckboxState
+import eu.kanade.core.prefs.asState
 import eu.kanade.tachiyomi.R
+import tachiyomi.core.preference.CheckboxState
 import tachiyomi.domain.category.model.Category
 import tachiyomi.presentation.core.components.material.TextButton
 import tachiyomi.presentation.core.components.material.padding

+ 1 - 1
app/src/main/java/eu/kanade/presentation/library/DeleteLibraryMangaDialog.kt

@@ -16,8 +16,8 @@ import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.stringResource
-import eu.kanade.core.prefs.CheckboxState
 import eu.kanade.tachiyomi.R
+import tachiyomi.core.preference.CheckboxState
 
 @Composable
 fun DeleteLibraryMangaDialog(

+ 1 - 1
app/src/main/java/eu/kanade/presentation/more/stats/StatsScreenContent.kt

@@ -13,11 +13,11 @@ import androidx.compose.runtime.Composable
 import androidx.compose.runtime.remember
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.res.stringResource
-import eu.kanade.core.util.toDurationString
 import eu.kanade.presentation.more.stats.components.StatsItem
 import eu.kanade.presentation.more.stats.components.StatsOverviewItem
 import eu.kanade.presentation.more.stats.components.StatsSection
 import eu.kanade.presentation.more.stats.data.StatsData
+import eu.kanade.presentation.util.toDurationString
 import eu.kanade.tachiyomi.R
 import tachiyomi.presentation.core.components.LazyColumn
 import tachiyomi.presentation.core.components.material.padding

+ 1 - 1
app/src/main/java/eu/kanade/core/util/DurationUtils.kt → app/src/main/java/eu/kanade/presentation/util/DurationUtils.kt

@@ -1,4 +1,4 @@
-package eu.kanade.core.util
+package eu.kanade.presentation.util
 
 import android.content.Context
 import eu.kanade.tachiyomi.R

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt

@@ -15,9 +15,7 @@ import androidx.paging.map
 import cafe.adriel.voyager.core.model.StateScreenModel
 import cafe.adriel.voyager.core.model.coroutineScope
 import eu.davidea.flexibleadapter.items.IFlexible
-import eu.kanade.core.prefs.CheckboxState
 import eu.kanade.core.prefs.asState
-import eu.kanade.core.prefs.mapAsCheckboxState
 import eu.kanade.domain.chapter.interactor.SetMangaDefaultChapterFlags
 import eu.kanade.domain.chapter.interactor.SyncChaptersWithTrackServiceTwoWay
 import eu.kanade.domain.library.service.LibraryPreferences
@@ -60,6 +58,8 @@ import kotlinx.coroutines.flow.stateIn
 import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
 import logcat.LogPriority
+import tachiyomi.core.preference.CheckboxState
+import tachiyomi.core.preference.mapAsCheckboxState
 import tachiyomi.core.util.lang.launchIO
 import tachiyomi.core.util.lang.withIOContext
 import tachiyomi.core.util.lang.withNonCancellableContext

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt

@@ -7,7 +7,6 @@ import androidx.compose.ui.util.fastAny
 import androidx.compose.ui.util.fastMap
 import cafe.adriel.voyager.core.model.StateScreenModel
 import cafe.adriel.voyager.core.model.coroutineScope
-import eu.kanade.core.prefs.CheckboxState
 import eu.kanade.core.prefs.PreferenceMutableState
 import eu.kanade.core.prefs.asState
 import eu.kanade.core.util.fastDistinctBy
@@ -45,6 +44,7 @@ import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.onEach
 import kotlinx.coroutines.flow.update
+import tachiyomi.core.preference.CheckboxState
 import tachiyomi.core.util.lang.launchIO
 import tachiyomi.core.util.lang.launchNonCancellable
 import tachiyomi.core.util.lang.withIOContext

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt

@@ -8,9 +8,7 @@ import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import cafe.adriel.voyager.core.model.StateScreenModel
 import cafe.adriel.voyager.core.model.coroutineScope
-import eu.kanade.core.prefs.CheckboxState
 import eu.kanade.core.prefs.asState
-import eu.kanade.core.prefs.mapAsCheckboxState
 import eu.kanade.core.util.addOrRemove
 import eu.kanade.domain.chapter.interactor.SetMangaDefaultChapterFlags
 import eu.kanade.domain.chapter.interactor.SetReadStatus
@@ -53,6 +51,8 @@ import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.isActive
 import kotlinx.coroutines.launch
 import logcat.LogPriority
+import tachiyomi.core.preference.CheckboxState
+import tachiyomi.core.preference.mapAsCheckboxState
 import tachiyomi.core.util.lang.launchIO
 import tachiyomi.core.util.lang.launchNonCancellable
 import tachiyomi.core.util.lang.withIOContext

+ 47 - 0
core/src/main/java/tachiyomi/core/preference/CheckboxState.kt

@@ -0,0 +1,47 @@
+package tachiyomi.core.preference
+
+sealed class CheckboxState<T>(open val value: T) {
+
+    abstract fun next(): CheckboxState<T>
+
+    sealed class State<T>(override val value: T) : CheckboxState<T>(value) {
+        data class Checked<T>(override val value: T) : State<T>(value)
+        data class None<T>(override val value: T) : State<T>(value)
+
+        val isChecked: Boolean
+            get() = this is Checked
+
+        override fun next(): CheckboxState<T> {
+            return when (this) {
+                is Checked -> None(value)
+                is None -> Checked(value)
+            }
+        }
+    }
+
+    sealed class TriState<T>(override val value: T) : CheckboxState<T>(value) {
+        data class Include<T>(override val value: T) : TriState<T>(value)
+        data class Exclude<T>(override val value: T) : TriState<T>(value)
+        data class None<T>(override val value: T) : TriState<T>(value)
+
+        override fun next(): CheckboxState<T> {
+            return when (this) {
+                is Exclude -> None(value)
+                is Include -> Exclude(value)
+                is None -> Include(value)
+            }
+        }
+    }
+}
+
+inline fun <T> T.asCheckboxState(condition: (T) -> Boolean): CheckboxState.State<T> {
+    return if (condition(this)) {
+        CheckboxState.State.Checked(this)
+    } else {
+        CheckboxState.State.None(this)
+    }
+}
+
+inline fun <T> List<T>.mapAsCheckboxState(condition: (T) -> Boolean): List<CheckboxState.State<T>> {
+    return this.map { it.asCheckboxState(condition) }
+}