This commit is contained in:
Horis
2025-12-01 10:03:10 +08:00
parent 21679eff53
commit c82284455d
4 changed files with 81 additions and 32 deletions
+4
View File
@@ -39,6 +39,8 @@ import io.legado.app.help.LifecycleHelp
import io.legado.app.help.RuleBigDataHelp import io.legado.app.help.RuleBigDataHelp
import io.legado.app.help.book.BookHelp import io.legado.app.help.book.BookHelp
import io.legado.app.help.config.AppConfig import io.legado.app.help.config.AppConfig
import io.legado.app.help.config.ReadBookConfig
import io.legado.app.help.config.ThemeConfig
import io.legado.app.help.config.ThemeConfig.applyDayNight import io.legado.app.help.config.ThemeConfig.applyDayNight
import io.legado.app.help.config.ThemeConfig.applyDayNightInit import io.legado.app.help.config.ThemeConfig.applyDayNightInit
import io.legado.app.help.coroutine.Coroutine import io.legado.app.help.coroutine.Coroutine
@@ -105,6 +107,8 @@ class App : Application() {
RuleBigDataHelp.clearInvalid() RuleBigDataHelp.clearInvalid()
BookHelp.clearInvalidCache() BookHelp.clearInvalidCache()
Backup.clearCache() Backup.clearCache()
ReadBookConfig.clearBgAndCache()
ThemeConfig.clearBg()
//初始化简繁转换引擎 //初始化简繁转换引擎
when (AppConfig.chineseConverterType) { when (AppConfig.chineseConverterType) {
1 -> { 1 -> {
@@ -162,6 +162,25 @@ object ReadBookConfig {
return false return false
} }
fun clearBgAndCache() {
val bgs = hashSetOf<String>()
configList.forEach { config ->
repeat(3) {
config.getBgPath(it)?.let { path ->
bgs.add(path)
}
}
}
appCtx.externalFiles.getFile("bg").listFiles()?.forEach {
if (!bgs.contains(it.absolutePath)) {
it.delete()
}
}
FileUtils.delete(appCtx.externalCache.getFile("readConfig"))
val configZipPath = FileUtils.getPath(appCtx.externalCache, "readConfig.zip")
FileUtils.delete(configZipPath)
}
private fun resetAll() { private fun resetAll() {
DefaultData.readConfigs.let { DefaultData.readConfigs.let {
configList.clear() configList.clear()
@@ -704,5 +723,29 @@ object ReadBookConfig {
} }
return bgDrawable ?: ColorDrawable(appCtx.getCompatColor(R.color.background)) return bgDrawable ?: ColorDrawable(appCtx.getCompatColor(R.color.background))
} }
fun getBgPath(bgIndex: Int): String? {
val bgType = when (bgIndex) {
0 -> bgType
1 -> bgTypeNight
2 -> bgTypeEInk
else -> error("unknown bgIndex: $bgIndex")
}
if (bgType != 2) {
return null
}
val bgStr = when (bgIndex) {
0 -> bgStr
1 -> bgStrNight
2 -> bgStrEInk
else -> error("unknown bgIndex: $bgIndex")
}
val path = if (bgStr.contains(File.separator)) {
bgStr
} else {
FileUtils.getPath(appCtx.externalFiles, "bg", bgStr)
}
return path
}
} }
} }
@@ -19,9 +19,11 @@ import io.legado.app.utils.BitmapUtils
import io.legado.app.utils.ColorUtils import io.legado.app.utils.ColorUtils
import io.legado.app.utils.FileUtils import io.legado.app.utils.FileUtils
import io.legado.app.utils.GSON import io.legado.app.utils.GSON
import io.legado.app.utils.externalFiles
import io.legado.app.utils.fromJsonArray import io.legado.app.utils.fromJsonArray
import io.legado.app.utils.fromJsonObject import io.legado.app.utils.fromJsonObject
import io.legado.app.utils.getCompatColor import io.legado.app.utils.getCompatColor
import io.legado.app.utils.getFile
import io.legado.app.utils.getPrefInt import io.legado.app.utils.getPrefInt
import io.legado.app.utils.getPrefString import io.legado.app.utils.getPrefString
import io.legado.app.utils.hexString import io.legado.app.utils.hexString
@@ -292,6 +294,21 @@ object ThemeConfig {
} }
} }
fun clearBg() {
val bgImagePath = appCtx.getPrefString(PreferKey.bgImage)
appCtx.externalFiles.getFile(PreferKey.bgImage).listFiles()?.forEach {
if (it.absolutePath != bgImagePath) {
it.delete()
}
}
val bgImageNPath = appCtx.getPrefString(PreferKey.bgImageN)
appCtx.externalFiles.getFile(PreferKey.bgImageN).listFiles()?.forEach {
if (it.absolutePath != bgImageNPath) {
it.delete()
}
}
}
@Keep @Keep
data class Config( data class Config(
var themeName: String, var themeName: String,
@@ -286,38 +286,10 @@ class BgTextConfigDialog : BaseDialogFragment(R.layout.dialog_read_bg_text) {
exportFiles.add(fontExportFile) exportFiles.add(fontExportFile)
} }
} }
if (ReadBookConfig.durConfig.bgType == 2) { repeat(3) {
val bgName = FileUtils.getName(ReadBookConfig.durConfig.bgStr) val path = ReadBookConfig.durConfig.getBgPath(it) ?: return@repeat
val bgFile = File(ReadBookConfig.durConfig.bgStr) val bgExportFile = copyBgImage(path, configDir) ?: return@repeat
if (bgFile.exists()) { exportFiles.add(bgExportFile)
val bgExportFile = File(FileUtils.getPath(configDir, bgName))
if (!bgExportFile.exists()) {
bgFile.copyTo(bgExportFile)
exportFiles.add(bgExportFile)
}
}
}
if (ReadBookConfig.durConfig.bgTypeNight == 2) {
val bgName = FileUtils.getName(ReadBookConfig.durConfig.bgStrNight)
val bgFile = File(ReadBookConfig.durConfig.bgStrNight)
if (bgFile.exists()) {
val bgExportFile = File(FileUtils.getPath(configDir, bgName))
if (!bgExportFile.exists()) {
bgFile.copyTo(bgExportFile)
exportFiles.add(bgExportFile)
}
}
}
if (ReadBookConfig.durConfig.bgTypeEInk == 2) {
val bgName = FileUtils.getName(ReadBookConfig.durConfig.bgStrEInk)
val bgFile = File(ReadBookConfig.durConfig.bgStrEInk)
if (bgFile.exists()) {
val bgExportFile = File(FileUtils.getPath(configDir, bgName))
if (!bgExportFile.exists()) {
bgFile.copyTo(bgExportFile)
exportFiles.add(bgExportFile)
}
}
} }
val configZipPath = FileUtils.getPath(requireContext().externalCache, configFileName) val configZipPath = FileUtils.getPath(requireContext().externalCache, configFileName)
if (ZipUtils.zipFiles(exportFiles, File(configZipPath))) { if (ZipUtils.zipFiles(exportFiles, File(configZipPath))) {
@@ -346,6 +318,19 @@ class BgTextConfigDialog : BaseDialogFragment(R.layout.dialog_read_bg_text) {
} }
} }
private fun copyBgImage(path: String, configDir: File): File? {
val bgName = FileUtils.getName(path)
val bgFile = File(path)
if (bgFile.exists()) {
val bgExportFile = File(FileUtils.getPath(configDir, bgName))
if (!bgExportFile.exists()) {
bgFile.copyTo(bgExportFile)
return bgExportFile
}
}
return null
}
@SuppressLint("InflateParams") @SuppressLint("InflateParams")
private fun importNetConfigAlert() { private fun importNetConfigAlert() {
alert("输入地址") { alert("输入地址") {