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

@ -1,15 +1,86 @@
package io.legado.app.ui.config package io.legado.app.ui.config
import android.content.SharedPreferences
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import io.legado.app.App
import io.legado.app.R 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?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.pref_config_theme) 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