Support follow system theme[Android 10] (#2603)

* Support follow system theme

* Show [follow system theme] only on Oreo and newer

* Update preference values of theme

* Refine theme preference
This commit is contained in:
onlymash
2020-02-19 10:58:52 +08:00
committed by GitHub
parent ef533b4c87
commit 02b5c3da71
6 changed files with 100 additions and 19 deletions
@@ -1,27 +1,44 @@
package eu.kanade.tachiyomi.ui.base.activity
import android.app.UiModeManager
import android.content.Context
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.system.LocaleHelper
import uy.kohesive.injekt.injectLazy
import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values
abstract class BaseActivity : AppCompatActivity() {
val preferences: PreferencesHelper by injectLazy()
private val darkTheme: Int
get() = when (preferences.themeDark()) {
Values.THEME_DARK_DEFAULT -> R.style.Theme_Tachiyomi_Dark
Values.THEME_DARK_AMOLED -> R.style.Theme_Tachiyomi_Amoled
else -> R.style.Theme_Tachiyomi_DarkBlue
}
init {
@Suppress("LeakingThis")
LocaleHelper.updateConfiguration(this)
}
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(when (preferences.theme()) {
2 -> R.style.Theme_Tachiyomi_Dark
3 -> R.style.Theme_Tachiyomi_Amoled
4 -> R.style.Theme_Tachiyomi_DarkBlue
else -> R.style.Theme_Tachiyomi
setTheme(when (preferences.themeMode()) {
Values.THEME_MODE_LIGHT -> R.style.Theme_Tachiyomi
Values.THEME_MODE_DARK -> darkTheme
else -> {
val mode = getSystemService(Context.UI_MODE_SERVICE) as UiModeManager
if (mode.nightMode == AppCompatDelegate.MODE_NIGHT_YES) {
darkTheme
} else {
R.style.Theme_Tachiyomi
}
}
})
super.onCreate(savedInstanceState)
}