From d13e6cc2cb71645aeb5645d20478033e8ec7491a Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Sat, 6 Dec 2025 10:05:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/help/config/AppConfig.kt | 36 ++++++++++ .../app/ui/config/WelcomeConfigFragment.kt | 71 +++++++++++++++++-- .../legado/app/ui/welcome/WelcomeActivity.kt | 26 ++++--- 3 files changed, 120 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/config/AppConfig.kt b/app/src/main/java/io/legado/app/help/config/AppConfig.kt index 9896ce51b..0ebb2f42e 100644 --- a/app/src/main/java/io/legado/app/help/config/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/AppConfig.kt @@ -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) + } + } diff --git a/app/src/main/java/io/legado/app/ui/config/WelcomeConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/WelcomeConfigFragment.kt index 20af1bceb..a30907be0 100644 --- a/app/src/main/java/io/legado/app/ui/config/WelcomeConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/WelcomeConfigFragment.kt @@ -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(PreferKey.welcomeShowText)?.let { + it.isEnabled = !welcomeImage.isNullOrEmpty() + } + findPreference(PreferKey.welcomeShowIcon)?.let { + it.isEnabled = !welcomeImage.isNullOrEmpty() + } + findPreference(PreferKey.welcomeShowTextDark)?.let { + it.isEnabled = !welcomeImageDark.isNullOrEmpty() + } + findPreference(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(PreferKey.welcomeShowText)?.let { + it.isEnabled = !welcomeImage.isNullOrEmpty() + } + findPreference(PreferKey.welcomeShowIcon)?.let { + it.isEnabled = !welcomeImage.isNullOrEmpty() + } + } + PreferKey.welcomeImageDark -> { - upPreferenceSummary(key, getPrefString(key)) + val welcomeImageDark = getPrefString(key) + upPreferenceSummary(key, welcomeImageDark) + findPreference(PreferKey.welcomeShowTextDark)?.let { + it.isEnabled = !welcomeImageDark.isNullOrEmpty() + } + findPreference(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(PreferKey.welcomeShowText)?.let { + it.isChecked = true + } + findPreference(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(PreferKey.welcomeShowTextDark)?.let { + it.isChecked = true + } + findPreference(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 } } diff --git a/app/src/main/java/io/legado/app/ui/welcome/WelcomeActivity.kt b/app/src/main/java/io/legado/app/ui/welcome/WelcomeActivity.kt index 25980274f..ed0b97220 100644 --- a/app/src/main/java/io/legado/app/ui/welcome/WelcomeActivity.kt +++ b/app/src/main/java/io/legado/app/ui/welcome/WelcomeActivity.kt @@ -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() { @@ -44,19 +53,20 @@ open class WelcomeActivity : BaseActivity() { 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() { private fun startMainActivity() { startActivity() - if (getPrefBoolean(PreferKey.defaultToRead)) { + if (getPrefBoolean(PreferKey.defaultToRead) && appDb.bookDao.lastReadBook != null) { startActivity() } finish()