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) 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 androidx.preference.Preference
import io.legado.app.R import io.legado.app.R
import io.legado.app.constant.PreferKey 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.dialogs.selector
import io.legado.app.lib.prefs.SwitchPreference
import io.legado.app.lib.prefs.fragment.PreferenceFragment import io.legado.app.lib.prefs.fragment.PreferenceFragment
import io.legado.app.lib.theme.primaryColor import io.legado.app.lib.theme.primaryColor
import io.legado.app.model.BookCover 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 splitties.init.appCtx
import java.io.FileOutputStream import java.io.FileOutputStream
@@ -32,8 +44,22 @@ class WelcomeConfigFragment : PreferenceFragment(),
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.pref_config_welcome) addPreferencesFromResource(R.xml.pref_config_welcome)
upPreferenceSummary(PreferKey.welcomeImage, getPrefString(PreferKey.welcomeImage)) val welcomeImage = AppConfig.welcomeImage
upPreferenceSummary(PreferKey.welcomeImageDark, getPrefString(PreferKey.welcomeImageDark)) 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?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -55,9 +81,26 @@ class WelcomeConfigFragment : PreferenceFragment(),
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
sharedPreferences ?: return sharedPreferences ?: return
when (key) { 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 -> { 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 -> ) { _, i ->
if (i == 0) { if (i == 0) {
removePref(preference.key) 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() BookCover.upDefaultCover()
} else { } else {
selectImage.launch(requestWelcomeImage) selectImage.launch(requestWelcomeImage)
} }
} }
} }
PreferKey.welcomeImageDark -> PreferKey.welcomeImageDark ->
if (getPrefString(preference.key).isNullOrEmpty()) { if (getPrefString(preference.key).isNullOrEmpty()) {
selectImage.launch(requestWelcomeImageDark) selectImage.launch(requestWelcomeImageDark)
@@ -95,6 +147,14 @@ class WelcomeConfigFragment : PreferenceFragment(),
) { _, i -> ) { _, i ->
if (i == 0) { if (i == 0) {
removePref(preference.key) 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() BookCover.upDefaultCover()
} else { } else {
selectImage.launch(requestWelcomeImageDark) selectImage.launch(requestWelcomeImageDark)
@@ -114,6 +174,7 @@ class WelcomeConfigFragment : PreferenceFragment(),
} else { } else {
value value
} }
else -> preference.summary = value else -> preference.summary = value
} }
} }
@@ -7,14 +7,23 @@ import androidx.core.view.postDelayed
import io.legado.app.base.BaseActivity import io.legado.app.base.BaseActivity
import io.legado.app.constant.PreferKey import io.legado.app.constant.PreferKey
import io.legado.app.constant.Theme import io.legado.app.constant.Theme
import io.legado.app.data.appDb
import io.legado.app.databinding.ActivityWelcomeBinding import io.legado.app.databinding.ActivityWelcomeBinding
import io.legado.app.help.config.AppConfig
import io.legado.app.help.config.ThemeConfig import io.legado.app.help.config.ThemeConfig
import io.legado.app.lib.theme.accentColor import io.legado.app.lib.theme.accentColor
import io.legado.app.lib.theme.backgroundColor import io.legado.app.lib.theme.backgroundColor
import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.main.MainActivity 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.viewbindingdelegate.viewBinding
import io.legado.app.utils.visible
import io.legado.app.utils.windowSize
open class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() { open class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
@@ -44,19 +53,20 @@ open class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
Theme.Dark -> getPrefString(PreferKey.welcomeImageDark)?.let { path -> Theme.Dark -> getPrefString(PreferKey.welcomeImageDark)?.let { path ->
val size = windowManager.windowSize val size = windowManager.windowSize
BitmapUtils.decodeBitmap(path, size.widthPixels, size.heightPixels).let { BitmapUtils.decodeBitmap(path, size.widthPixels, size.heightPixels).let {
binding.tvLegado.visible(getPrefBoolean(PreferKey.welcomeShowTextDark)) binding.tvLegado.visible(AppConfig.welcomeShowTextDark)
binding.ivBook.visible(getPrefBoolean(PreferKey.welcomeShowIconDark)) binding.ivBook.visible(AppConfig.welcomeShowIconDark)
binding.tvGzh.visible(getPrefBoolean(PreferKey.welcomeShowTextDark)) binding.tvGzh.visible(AppConfig.welcomeShowTextDark)
window.decorView.background = BitmapDrawable(resources, it) window.decorView.background = BitmapDrawable(resources, it)
return return
} }
} }
else -> getPrefString(PreferKey.welcomeImage)?.let { path -> else -> getPrefString(PreferKey.welcomeImage)?.let { path ->
val size = windowManager.windowSize val size = windowManager.windowSize
BitmapUtils.decodeBitmap(path, size.widthPixels, size.heightPixels).let { BitmapUtils.decodeBitmap(path, size.widthPixels, size.heightPixels).let {
binding.tvLegado.visible(getPrefBoolean(PreferKey.welcomeShowText)) binding.tvLegado.visible(AppConfig.welcomeShowText)
binding.ivBook.visible(getPrefBoolean(PreferKey.welcomeShowIcon)) binding.ivBook.visible(AppConfig.welcomeShowIcon)
binding.tvGzh.visible(getPrefBoolean(PreferKey.welcomeShowText)) binding.tvGzh.visible(AppConfig.welcomeShowText)
window.decorView.background = BitmapDrawable(resources, it) window.decorView.background = BitmapDrawable(resources, it)
return return
} }
@@ -69,7 +79,7 @@ open class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
private fun startMainActivity() { private fun startMainActivity() {
startActivity<MainActivity>() startActivity<MainActivity>()
if (getPrefBoolean(PreferKey.defaultToRead)) { if (getPrefBoolean(PreferKey.defaultToRead) && appDb.bookDao.lastReadBook != null) {
startActivity<ReadBookActivity>() startActivity<ReadBookActivity>()
} }
finish() finish()