This commit is contained in:
Horis
2025-12-06 10:05:49 +08:00
parent 444821701f
commit d13e6cc2cb
3 changed files with 120 additions and 13 deletions
@@ -696,5 +696,41 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
appCtx.putPrefBoolean(PreferKey.enableMangaGray, value)
}
var welcomeImage
get() = appCtx.getPrefString(PreferKey.welcomeImage)
set(value) {
appCtx.putPrefString(PreferKey.welcomeImage, value)
}
var welcomeShowText
get() = appCtx.getPrefBoolean(PreferKey.welcomeShowText, true)
set(value) {
appCtx.putPrefBoolean(PreferKey.welcomeShowText, value)
}
var welcomeShowIcon
get() = appCtx.getPrefBoolean(PreferKey.welcomeShowIcon, true)
set(value) {
appCtx.putPrefBoolean(PreferKey.welcomeShowIcon, value)
}
var welcomeImageDark
get() = appCtx.getPrefString(PreferKey.welcomeImageDark)
set(value) {
appCtx.putPrefString(PreferKey.welcomeImageDark, value)
}
var welcomeShowTextDark
get() = appCtx.getPrefBoolean(PreferKey.welcomeShowTextDark, true)
set(value) {
appCtx.putPrefBoolean(PreferKey.welcomeShowTextDark, value)
}
var welcomeShowIconDark
get() = appCtx.getPrefBoolean(PreferKey.welcomeShowIconDark, true)
set(value) {
appCtx.putPrefBoolean(PreferKey.welcomeShowIconDark, value)
}
}
@@ -8,11 +8,23 @@ import android.view.View
import androidx.preference.Preference
import io.legado.app.R
import io.legado.app.constant.PreferKey
import io.legado.app.help.config.AppConfig
import io.legado.app.lib.dialogs.selector
import io.legado.app.lib.prefs.SwitchPreference
import io.legado.app.lib.prefs.fragment.PreferenceFragment
import io.legado.app.lib.theme.primaryColor
import io.legado.app.model.BookCover
import io.legado.app.utils.*
import io.legado.app.utils.FileUtils
import io.legado.app.utils.MD5Utils
import io.legado.app.utils.SelectImageContract
import io.legado.app.utils.externalFiles
import io.legado.app.utils.getPrefString
import io.legado.app.utils.inputStream
import io.legado.app.utils.putPrefString
import io.legado.app.utils.readUri
import io.legado.app.utils.removePref
import io.legado.app.utils.setEdgeEffectColor
import io.legado.app.utils.toastOnUi
import splitties.init.appCtx
import java.io.FileOutputStream
@@ -32,8 +44,22 @@ class WelcomeConfigFragment : PreferenceFragment(),
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.pref_config_welcome)
upPreferenceSummary(PreferKey.welcomeImage, getPrefString(PreferKey.welcomeImage))
upPreferenceSummary(PreferKey.welcomeImageDark, getPrefString(PreferKey.welcomeImageDark))
val welcomeImage = AppConfig.welcomeImage
val welcomeImageDark = AppConfig.welcomeImageDark
upPreferenceSummary(PreferKey.welcomeImage, welcomeImage)
upPreferenceSummary(PreferKey.welcomeImageDark, welcomeImageDark)
findPreference<SwitchPreference>(PreferKey.welcomeShowText)?.let {
it.isEnabled = !welcomeImage.isNullOrEmpty()
}
findPreference<SwitchPreference>(PreferKey.welcomeShowIcon)?.let {
it.isEnabled = !welcomeImage.isNullOrEmpty()
}
findPreference<SwitchPreference>(PreferKey.welcomeShowTextDark)?.let {
it.isEnabled = !welcomeImageDark.isNullOrEmpty()
}
findPreference<SwitchPreference>(PreferKey.welcomeShowIconDark)?.let {
it.isEnabled = !welcomeImageDark.isNullOrEmpty()
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -55,9 +81,26 @@ class WelcomeConfigFragment : PreferenceFragment(),
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
sharedPreferences ?: return
when (key) {
PreferKey.welcomeImage,
PreferKey.welcomeImage -> {
val welcomeImage = getPrefString(key)
upPreferenceSummary(key, welcomeImage)
findPreference<SwitchPreference>(PreferKey.welcomeShowText)?.let {
it.isEnabled = !welcomeImage.isNullOrEmpty()
}
findPreference<SwitchPreference>(PreferKey.welcomeShowIcon)?.let {
it.isEnabled = !welcomeImage.isNullOrEmpty()
}
}
PreferKey.welcomeImageDark -> {
upPreferenceSummary(key, getPrefString(key))
val welcomeImageDark = getPrefString(key)
upPreferenceSummary(key, welcomeImageDark)
findPreference<SwitchPreference>(PreferKey.welcomeShowTextDark)?.let {
it.isEnabled = !welcomeImageDark.isNullOrEmpty()
}
findPreference<SwitchPreference>(PreferKey.welcomeShowIconDark)?.let {
it.isEnabled = !welcomeImageDark.isNullOrEmpty()
}
}
}
}
@@ -77,12 +120,21 @@ class WelcomeConfigFragment : PreferenceFragment(),
) { _, i ->
if (i == 0) {
removePref(preference.key)
AppConfig.welcomeShowText = true
AppConfig.welcomeShowIcon = true
findPreference<SwitchPreference>(PreferKey.welcomeShowText)?.let {
it.isChecked = true
}
findPreference<SwitchPreference>(PreferKey.welcomeShowIcon)?.let {
it.isChecked = true
}
BookCover.upDefaultCover()
} else {
selectImage.launch(requestWelcomeImage)
}
}
}
PreferKey.welcomeImageDark ->
if (getPrefString(preference.key).isNullOrEmpty()) {
selectImage.launch(requestWelcomeImageDark)
@@ -95,6 +147,14 @@ class WelcomeConfigFragment : PreferenceFragment(),
) { _, i ->
if (i == 0) {
removePref(preference.key)
AppConfig.welcomeShowTextDark = true
AppConfig.welcomeShowIconDark = true
findPreference<SwitchPreference>(PreferKey.welcomeShowTextDark)?.let {
it.isChecked = true
}
findPreference<SwitchPreference>(PreferKey.welcomeShowIconDark)?.let {
it.isChecked = true
}
BookCover.upDefaultCover()
} else {
selectImage.launch(requestWelcomeImageDark)
@@ -114,6 +174,7 @@ class WelcomeConfigFragment : PreferenceFragment(),
} else {
value
}
else -> preference.summary = value
}
}
@@ -7,14 +7,23 @@ import androidx.core.view.postDelayed
import io.legado.app.base.BaseActivity
import io.legado.app.constant.PreferKey
import io.legado.app.constant.Theme
import io.legado.app.data.appDb
import io.legado.app.databinding.ActivityWelcomeBinding
import io.legado.app.help.config.AppConfig
import io.legado.app.help.config.ThemeConfig
import io.legado.app.lib.theme.accentColor
import io.legado.app.lib.theme.backgroundColor
import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.main.MainActivity
import io.legado.app.utils.*
import io.legado.app.utils.BitmapUtils
import io.legado.app.utils.fullScreen
import io.legado.app.utils.getPrefBoolean
import io.legado.app.utils.getPrefString
import io.legado.app.utils.setStatusBarColorAuto
import io.legado.app.utils.startActivity
import io.legado.app.utils.viewbindingdelegate.viewBinding
import io.legado.app.utils.visible
import io.legado.app.utils.windowSize
open class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
@@ -44,19 +53,20 @@ open class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
Theme.Dark -> getPrefString(PreferKey.welcomeImageDark)?.let { path ->
val size = windowManager.windowSize
BitmapUtils.decodeBitmap(path, size.widthPixels, size.heightPixels).let {
binding.tvLegado.visible(getPrefBoolean(PreferKey.welcomeShowTextDark))
binding.ivBook.visible(getPrefBoolean(PreferKey.welcomeShowIconDark))
binding.tvGzh.visible(getPrefBoolean(PreferKey.welcomeShowTextDark))
binding.tvLegado.visible(AppConfig.welcomeShowTextDark)
binding.ivBook.visible(AppConfig.welcomeShowIconDark)
binding.tvGzh.visible(AppConfig.welcomeShowTextDark)
window.decorView.background = BitmapDrawable(resources, it)
return
}
}
else -> getPrefString(PreferKey.welcomeImage)?.let { path ->
val size = windowManager.windowSize
BitmapUtils.decodeBitmap(path, size.widthPixels, size.heightPixels).let {
binding.tvLegado.visible(getPrefBoolean(PreferKey.welcomeShowText))
binding.ivBook.visible(getPrefBoolean(PreferKey.welcomeShowIcon))
binding.tvGzh.visible(getPrefBoolean(PreferKey.welcomeShowText))
binding.tvLegado.visible(AppConfig.welcomeShowText)
binding.ivBook.visible(AppConfig.welcomeShowIcon)
binding.tvGzh.visible(AppConfig.welcomeShowText)
window.decorView.background = BitmapDrawable(resources, it)
return
}
@@ -69,7 +79,7 @@ open class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
private fun startMainActivity() {
startActivity<MainActivity>()
if (getPrefBoolean(PreferKey.defaultToRead)) {
if (getPrefBoolean(PreferKey.defaultToRead) && appDb.bookDao.lastReadBook != null) {
startActivity<ReadBookActivity>()
}
finish()