This commit is contained in:
Horis
2025-02-11 11:56:23 +08:00
parent 63161742ab
commit 7bad3e3967
13 changed files with 58 additions and 66 deletions
@@ -93,7 +93,7 @@ object PreferKey {
const val cronet = "Cronet"
const val antiAlias = "antiAlias"
const val bitmapCacheSize = "bitmapCacheSize"
const val bitmapRetainNum = "bitmapRetainNum"
const val imageRetainNum = "imageRetainNum"
const val preDownloadNum = "preDownloadNum"
const val autoRefresh = "auto_refresh"
const val defaultToRead = "defaultToRead"
@@ -5,7 +5,6 @@ import android.os.ParcelFileDescriptor
import androidx.documentfile.provider.DocumentFile
import io.legado.app.constant.AppLog
import io.legado.app.constant.AppPattern
import io.legado.app.constant.BookType
import io.legado.app.constant.EventBus
import io.legado.app.data.appDb
import io.legado.app.data.entities.Book
@@ -124,42 +123,35 @@ object BookHelp {
//清除已经看过的漫画数据
private fun clearComicCache(book: Book) {
//只处理漫画
if (book.type == BookType.image) {
//为0的时候,不清除已缓存数据
if (AppConfig.bitmapRetainNum == 0) {
return
}
//向前保留设定数量,向后保留预下载数量
val startIndex = book.durChapterIndex - AppConfig.bitmapRetainNum
val endIndex = book.durChapterIndex + AppConfig.preDownloadNum
val chapterList = appDb.bookChapterDao.getChapterList(
book.bookUrl,
startIndex,
endIndex
)
val imgNames = hashSetOf<String>()
//获取需要保留章节的图片信息
chapterList.forEach {
val content = getContent(book, it)
if (content != null) {
val matcher = AppPattern.imgPattern.matcher(content)
while (matcher.find()) {
val src = matcher.group(1) ?: continue
val mSrc = NetworkUtils.getAbsoluteURL(it.url, src)
imgNames.add("${MD5Utils.md5Encode16(mSrc)}.${getImageSuffix(mSrc)}")
}
//为0的时候,不清除已缓存数据
if (!book.isImage || AppConfig.imageRetainNum == 0) {
return
}
//向前保留设定数量,向后保留预下载数量
val startIndex = book.durChapterIndex - AppConfig.imageRetainNum
val endIndex = book.durChapterIndex + AppConfig.preDownloadNum
val chapterList = appDb.bookChapterDao.getChapterList(book.bookUrl, startIndex, endIndex)
val imgNames = hashSetOf<String>()
//获取需要保留章节的图片信息
chapterList.forEach {
val content = getContent(book, it)
if (content != null) {
val matcher = AppPattern.imgPattern.matcher(content)
while (matcher.find()) {
val src = matcher.group(1) ?: continue
val mSrc = NetworkUtils.getAbsoluteURL(it.url, src)
imgNames.add("${MD5Utils.md5Encode16(mSrc)}.${getImageSuffix(mSrc)}")
}
}
downloadDir.getFile(
cacheFolderName,
book.getFolderName(),
cacheImageFolderName
).listFiles()?.forEach { imgFile ->
if (!imgNames.contains(imgFile.name)){
imgFile.delete()
}
}
downloadDir.getFile(
cacheFolderName,
book.getFolderName(),
cacheImageFolderName
).listFiles()?.forEach { imgFile ->
if (!imgNames.contains(imgFile.name)){
imgFile.delete()
}
}
}
@@ -554,10 +554,10 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
appCtx.putPrefInt(PreferKey.bitmapCacheSize, value)
}
var bitmapRetainNum: Int
get() = appCtx.getPrefInt(PreferKey.bitmapRetainNum, 0)
var imageRetainNum: Int
get() = appCtx.getPrefInt(PreferKey.imageRetainNum, 0)
set(value) {
appCtx.putPrefInt(PreferKey.bitmapRetainNum, value)
appCtx.putPrefInt(PreferKey.imageRetainNum, value)
}
var showReadTitleBarAddition: Boolean
@@ -68,7 +68,7 @@ class OtherConfigFragment : PreferenceFragment(),
}
upPreferenceSummary(PreferKey.checkSource, CheckSource.summary)
upPreferenceSummary(PreferKey.bitmapCacheSize, AppConfig.bitmapCacheSize.toString())
upPreferenceSummary(PreferKey.bitmapRetainNum, AppConfig.bitmapRetainNum.toString())
upPreferenceSummary(PreferKey.imageRetainNum, AppConfig.imageRetainNum.toString())
upPreferenceSummary(PreferKey.sourceEditMaxLine, AppConfig.sourceEditMaxLine.toString())
}
@@ -133,13 +133,13 @@ class OtherConfigFragment : PreferenceFragment(),
ImageProvider.bitmapLruCache.resize(ImageProvider.cacheSize)
}
}
PreferKey.bitmapRetainNum -> NumberPickerDialog(requireContext())
.setTitle(getString(R.string.bitmap_retain_number))
PreferKey.imageRetainNum -> NumberPickerDialog(requireContext())
.setTitle(getString(R.string.image_retain_number))
.setMaxValue(999)
.setMinValue(0)
.setValue(AppConfig.bitmapRetainNum)
.setValue(AppConfig.imageRetainNum)
.show {
AppConfig.bitmapRetainNum = it
AppConfig.imageRetainNum = it
}
PreferKey.sourceEditMaxLine -> {
@@ -212,8 +212,8 @@ class OtherConfigFragment : PreferenceFragment(),
upPreferenceSummary(key, AppConfig.bitmapCacheSize.toString())
}
PreferKey.bitmapRetainNum -> {
upPreferenceSummary(key, AppConfig.bitmapRetainNum.toString())
PreferKey.imageRetainNum -> {
upPreferenceSummary(key, AppConfig.imageRetainNum.toString())
}
PreferKey.sourceEditMaxLine -> {
@@ -232,8 +232,8 @@ class OtherConfigFragment : PreferenceFragment(),
PreferKey.webPort -> preference.summary = getString(R.string.web_port_summary, value)
PreferKey.bitmapCacheSize -> preference.summary =
getString(R.string.bitmap_cache_size_summary, value)
PreferKey.bitmapRetainNum -> preference.summary =
getString(R.string.bitmap_retain_number_summary, value)
PreferKey.imageRetainNum -> preference.summary =
getString(R.string.image_retain_number_summary, value)
PreferKey.sourceEditMaxLine -> preference.summary =
getString(R.string.source_edit_max_line_summary, value)