Split the rest of the preferences in PreferencesHelper (#8074)

* Split the reset of the preferences in PreferencesHelper

* Capitalize ThemeMode
This commit is contained in:
Andreas
2022-09-25 16:07:06 +02:00
committed by GitHub
parent 0fabe4bd01
commit 29fa93e829
51 changed files with 319 additions and 275 deletions
@@ -9,7 +9,10 @@ import android.webkit.WebView
import androidx.core.net.toUri
import androidx.preference.PreferenceScreen
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.library.service.LibraryPreferences
import eu.kanade.domain.manga.repository.MangaRepository
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.domain.ui.model.TabletUiMode
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.cache.ChapterCache
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
@@ -70,6 +73,8 @@ class SettingsAdvancedController(
private val chapterCache: ChapterCache by injectLazy()
private val trackManager: TrackManager by injectLazy()
private val networkPreferences: NetworkPreferences by injectLazy()
private val libraryPreferences: LibraryPreferences by injectLazy()
private val uiPreferences: UiPreferences by injectLazy()
@SuppressLint("BatteryLife")
override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {
@@ -156,7 +161,7 @@ class SettingsAdvancedController(
onClick { clearChapterCache() }
}
switchPreference {
bindTo(preferences.autoClearChapterCache())
bindTo(libraryPreferences.autoClearChapterCache())
titleRes = R.string.pref_auto_clear_chapter_cache
}
preference {
@@ -327,11 +332,11 @@ class SettingsAdvancedController(
titleRes = R.string.pref_category_display
listPreference {
bindTo(preferences.tabletUiMode())
bindTo(uiPreferences.tabletUiMode())
titleRes = R.string.pref_tablet_ui_mode
summary = "%s"
entriesRes = PreferenceValues.TabletUiMode.values().map { it.titleResId }.toTypedArray()
entryValues = PreferenceValues.TabletUiMode.values().map { it.name }.toTypedArray()
entriesRes = TabletUiMode.values().map { it.titleResId }.toTypedArray()
entryValues = TabletUiMode.values().map { it.name }.toTypedArray()
onChange {
activity?.toast(R.string.requires_app_restart)
@@ -5,9 +5,11 @@ import android.os.Bundle
import android.view.View
import androidx.core.app.ActivityCompat
import androidx.preference.PreferenceScreen
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.domain.ui.model.AppTheme
import eu.kanade.domain.ui.model.ThemeMode
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.util.preference.bindTo
import eu.kanade.tachiyomi.util.preference.defaultValue
import eu.kanade.tachiyomi.util.preference.entriesRes
import eu.kanade.tachiyomi.util.preference.initThenAdd
import eu.kanade.tachiyomi.util.preference.intListPreference
@@ -20,13 +22,13 @@ import eu.kanade.tachiyomi.util.system.DeviceUtil
import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable
import eu.kanade.tachiyomi.util.system.isTablet
import eu.kanade.tachiyomi.widget.preference.ThemesPreference
import uy.kohesive.injekt.injectLazy
import java.util.Date
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values
class SettingsAppearanceController : SettingsController() {
private var themesPreference: ThemesPreference? = null
private val uiPreferences: UiPreferences by injectLazy()
override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {
titleRes = R.string.pref_category_appearance
@@ -35,7 +37,7 @@ class SettingsAppearanceController : SettingsController() {
titleRes = R.string.pref_category_theme
listPreference {
bindTo(preferences.themeMode())
bindTo(uiPreferences.themeMode())
titleRes = R.string.pref_theme_mode
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@@ -45,9 +47,9 @@ class SettingsAppearanceController : SettingsController() {
R.string.theme_dark,
)
entryValues = arrayOf(
Values.ThemeMode.system.name,
Values.ThemeMode.light.name,
Values.ThemeMode.dark.name,
ThemeMode.SYSTEM.name,
ThemeMode.LIGHT.name,
ThemeMode.DARK.name,
)
} else {
entriesRes = arrayOf(
@@ -55,19 +57,19 @@ class SettingsAppearanceController : SettingsController() {
R.string.theme_dark,
)
entryValues = arrayOf(
Values.ThemeMode.light.name,
Values.ThemeMode.dark.name,
ThemeMode.LIGHT.name,
ThemeMode.DARK.name,
)
}
summary = "%s"
}
themesPreference = initThenAdd(ThemesPreference(context)) {
bindTo(preferences.appTheme())
bindTo(uiPreferences.appTheme())
titleRes = R.string.pref_app_theme
val appThemes = Values.AppTheme.values().filter {
val monetFilter = if (it == Values.AppTheme.MONET) {
val appThemes = AppTheme.values().filter {
val monetFilter = if (it == AppTheme.MONET) {
DeviceUtil.isDynamicColorAvailable
} else {
true
@@ -82,10 +84,10 @@ class SettingsAppearanceController : SettingsController() {
}
}
switchPreference {
bindTo(preferences.themeDarkAmoled())
bindTo(uiPreferences.themeDarkAmoled())
titleRes = R.string.pref_dark_theme_pure_black
visibleIf(preferences.themeMode()) { it != Values.ThemeMode.light }
visibleIf(uiPreferences.themeMode()) { it != ThemeMode.LIGHT }
onChange {
activity?.let { ActivityCompat.recreate(it) }
@@ -99,7 +101,7 @@ class SettingsAppearanceController : SettingsController() {
titleRes = R.string.pref_category_navigation
intListPreference {
bindTo(preferences.sideNavIconAlignment())
bindTo(uiPreferences.sideNavIconAlignment())
titleRes = R.string.pref_side_nav_icon_alignment
entriesRes = arrayOf(
R.string.alignment_top,
@@ -116,7 +118,7 @@ class SettingsAppearanceController : SettingsController() {
titleRes = R.string.pref_category_timestamps
intListPreference {
bindTo(preferences.relativeTime())
bindTo(uiPreferences.relativeTime())
titleRes = R.string.pref_relative_format
val values = arrayOf("0", "2", "7")
entryValues = values
@@ -131,13 +133,13 @@ class SettingsAppearanceController : SettingsController() {
}
listPreference {
key = Keys.dateFormat
bindTo(uiPreferences.dateFormat())
titleRes = R.string.pref_date_format
entryValues = arrayOf("", "MM/dd/yy", "dd/MM/yy", "yyyy-MM-dd", "dd MMM yyyy", "MMM dd, yyyy")
val now = Date().time
entries = entryValues.map { value ->
val formattedDate = preferences.dateFormat(value.toString()).format(now)
val formattedDate = UiPreferences.dateFormat(value.toString()).format(now)
if (value == "") {
"${context.getString(R.string.label_default)} ($formattedDate)"
} else {
@@ -145,7 +147,6 @@ class SettingsAppearanceController : SettingsController() {
}
}.toTypedArray()
defaultValue = ""
summary = "%s"
}
}
@@ -19,8 +19,8 @@ import androidx.preference.PreferenceScreen
import com.bluelinelabs.conductor.ControllerChangeHandler
import com.bluelinelabs.conductor.ControllerChangeType
import dev.chrisbanes.insetter.applyInsetter
import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.preference.asHotFlow
import eu.kanade.tachiyomi.util.system.getResourceColor
import kotlinx.coroutines.CoroutineScope
@@ -33,7 +33,7 @@ import uy.kohesive.injekt.api.get
abstract class SettingsController : PreferenceController() {
var preferenceKey: String? = null
val preferences: PreferencesHelper = Injekt.get()
val preferences: BasePreferences = Injekt.get()
val viewScope: CoroutineScope = MainScope()
private var themedContext: Context? = null
@@ -1,7 +1,7 @@
package eu.kanade.tachiyomi.ui.setting.search
import android.os.Bundle
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -10,7 +10,7 @@ import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
class SettingsSearchPresenter(
private val preferences: PreferencesHelper = Injekt.get(),
private val preferences: BasePreferences = Injekt.get(),
) : BasePresenter<SettingsSearchController>() {
private val _state: MutableStateFlow<List<SettingsSearchHelper.SettingsSearchResult>> =