pull/32/head
GKF 6 years ago
parent ac3757429d
commit 90c98f2012
  1. 13
      app/src/main/java/io/legado/app/App.kt
  2. 73
      app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt

@ -13,6 +13,7 @@ import io.legado.app.constant.AppConst.channelIdReadAloud
import io.legado.app.constant.AppConst.channelIdWeb
import io.legado.app.data.AppDatabase
import io.legado.app.lib.theme.ThemeStore
import io.legado.app.utils.getCompatColor
import io.legado.app.utils.getPrefBoolean
import io.legado.app.utils.getPrefInt
import java.util.*
@ -63,15 +64,15 @@ class App : Application() {
fun upThemeStore() {
if (getPrefBoolean("isNightTheme", false)) {
ThemeStore.editTheme(this)
.primaryColor(getPrefInt("colorPrimaryNight", resources.getColor(R.color.md_grey_800)))
.accentColor(getPrefInt("colorAccentNight", resources.getColor(R.color.md_pink_800)))
.backgroundColor(getPrefInt("colorBackgroundNight", resources.getColor(R.color.md_grey_800)))
.primaryColor(getPrefInt("colorPrimaryNight", getCompatColor(R.color.md_grey_800)))
.accentColor(getPrefInt("colorAccentNight", getCompatColor(R.color.md_pink_800)))
.backgroundColor(getPrefInt("colorBackgroundNight", getCompatColor(R.color.md_grey_800)))
.apply()
} else {
ThemeStore.editTheme(this)
.primaryColor(getPrefInt("colorPrimary", resources.getColor(R.color.md_grey_100)))
.accentColor(getPrefInt("colorAccent", resources.getColor(R.color.md_pink_600)))
.backgroundColor(getPrefInt("colorBackground", resources.getColor(R.color.md_grey_100)))
.primaryColor(getPrefInt("colorPrimary", getCompatColor(R.color.md_grey_100)))
.accentColor(getPrefInt("colorAccent", getCompatColor(R.color.md_pink_600)))
.backgroundColor(getPrefInt("colorBackground", getCompatColor(R.color.md_grey_100)))
.apply()
}
}

@ -1,15 +1,86 @@
package io.legado.app.ui.config
import android.content.SharedPreferences
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.preference.PreferenceFragmentCompat
import io.legado.app.App
import io.legado.app.R
import io.legado.app.lib.theme.ColorUtils
import io.legado.app.utils.getCompatColor
import io.legado.app.utils.getPrefBoolean
import io.legado.app.utils.putPrefInt
import io.legado.app.utils.upTint
class ThemeConfigFragment : PreferenceFragmentCompat() {
class ThemeConfigFragment : PreferenceFragmentCompat(), SharedPreferences.OnSharedPreferenceChangeListener {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.pref_config_theme)
}
override fun onResume() {
super.onResume()
preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(this)
}
override fun onPause() {
preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(this)
super.onPause()
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
sharedPreferences ?: return
when (key) {
"colorPrimary", "colorAccent", "colorBackground" -> if (!ColorUtils.isColorLight(
sharedPreferences.getInt(
"colorBackground",
App.INSTANCE.getCompatColor(R.color.md_grey_100)
)
)
) {
AlertDialog.Builder(App.INSTANCE)
.setTitle("白天背景太暗")
.setMessage("将会恢复默认背景?")
.setPositiveButton(R.string.ok) { dialog, which ->
App.INSTANCE.putPrefInt("colorBackground", App.INSTANCE.getCompatColor(R.color.md_grey_100))
upTheme(false)
}
.setNegativeButton(R.string.cancel) { dialogInterface, i -> upTheme(false) }
.show().upTint
} else {
upTheme(false)
}
"colorPrimaryNight", "colorAccentNight", "colorBackgroundNight" -> if (ColorUtils.isColorLight(
sharedPreferences.getInt(
"colorBackgroundNight",
App.INSTANCE.getCompatColor(R.color.md_grey_800)
)
)
) {
AlertDialog.Builder(App.INSTANCE)
.setTitle("夜间背景太亮")
.setMessage("将会恢复默认背景?")
.setPositiveButton(R.string.ok) { dialog, which ->
App.INSTANCE.putPrefInt(
"colorBackgroundNight",
App.INSTANCE.getCompatColor(R.color.md_grey_800)
)
upTheme(true)
}
.setNegativeButton(R.string.cancel) { dialogInterface, i -> upTheme(true) }
.show()
} else {
upTheme(true)
}
}
}
private fun upTheme(isNightTheme: Boolean) {
if (App.INSTANCE.getPrefBoolean("isNightTheme", false) == isNightTheme) {
App.INSTANCE.upThemeStore()
}
}
}
Loading…
Cancel
Save