From b181d81f1728b725e8bd0b6a802a4b3d2911cd97 Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Fri, 28 Jan 2022 17:24:04 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=85=A8=E6=96=87=E6=90=9C=E7=B4=A2:?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=88=B0=E5=86=85=E5=AE=B9=E5=90=8E=E5=86=8D?= =?UTF-8?q?=E5=90=AF=E7=94=A8=E5=87=80=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/help/ContentProcessor.kt | 36 +++++++++++-------- .../searchContent/SearchContentViewModel.kt | 26 ++++++++------ 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/ContentProcessor.kt b/app/src/main/java/io/legado/app/help/ContentProcessor.kt index 1b905ec71..32f36c09d 100644 --- a/app/src/main/java/io/legado/app/help/ContentProcessor.kt +++ b/app/src/main/java/io/legado/app/help/ContentProcessor.kt @@ -56,7 +56,7 @@ class ContentProcessor private constructor( fun getContent( book: Book, - chapter: BookChapter, //已经经过简繁转换 + chapter: BookChapter, content: String, includeTitle: Boolean = true, useReplace: Boolean = true, @@ -83,20 +83,7 @@ class ContentProcessor private constructor( } if (useReplace && book.getUseReplaceRule()) { //替换 - getReplaceRules().forEach { item -> - if (item.pattern.isNotEmpty()) { - try { - mContent = if (item.isRegex) { - mContent.replace(item.pattern.toRegex(), item.replacement) - } else { - mContent.replace(item.pattern, item.replacement) - } - } catch (e: Exception) { - AppLog.put("${item.name}替换出错\n${e.localizedMessage}") - appCtx.toastOnUi("${item.name}替换出错") - } - } - } + mContent = replaceContent(mContent) } if (chineseConvert) { //简繁转换 @@ -125,4 +112,23 @@ class ContentProcessor private constructor( return contents } + fun replaceContent(content: String): String { + var mContent = content + getReplaceRules().forEach { item -> + if (item.pattern.isNotEmpty()) { + try { + mContent = if (item.isRegex) { + mContent.replace(item.pattern.toRegex(), item.replacement) + } else { + mContent.replace(item.pattern, item.replacement) + } + } catch (e: Exception) { + AppLog.put("${item.name}替换出错\n${e.localizedMessage}") + appCtx.toastOnUi("${item.name}替换出错") + } + } + } + return mContent + } + } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt index f745dae5a..0de6e302a 100644 --- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt @@ -21,6 +21,7 @@ class SearchContentViewModel(application: Application) : BaseViewModel(applicati var searchResultCounts = 0 val cacheChapterNames = hashSetOf() val searchResultList: MutableList = mutableListOf() + var mContent: String = "" fun initBook(bookUrl: String, success: () -> Unit) { this.bookUrl = bookUrl @@ -40,21 +41,20 @@ class SearchContentViewModel(application: Application) : BaseViewModel(applicati book?.let { book -> val chapterContent = BookHelp.getContent(book, chapter) if (chapterContent != null) { - //搜索替换后的正文 - val replaceContent: String + //先搜索没有启用净化的正文 withContext(Dispatchers.IO) { chapter.title = when (AppConfig.chineseConverterType) { 1 -> ChineseUtils.t2s(chapter.title) 2 -> ChineseUtils.s2t(chapter.title) else -> chapter.title } - replaceContent = contentProcessor!!.getContent( - book, chapter, chapterContent, chineseConvert = false, reSegment = false + mContent = contentProcessor!!.getContent( + book, chapter, chapterContent, chineseConvert = false, reSegment = false, useReplace = false ).joinToString("") } - val positions = searchPosition(replaceContent, query) + val positions = searchPosition(query) positions.forEachIndexed { index, position -> - val construct = getResultAndQueryIndex(replaceContent, position, query) + val construct = getResultAndQueryIndex(mContent, position, query) val result = SearchResult( resultCountWithinChapter = index, resultText = construct.second, @@ -73,12 +73,16 @@ class SearchContentViewModel(application: Application) : BaseViewModel(applicati return searchResultsWithinChapter } - private fun searchPosition(chapterContent: String, pattern: String): List { + private fun searchPosition(pattern: String): List { val position: MutableList = mutableListOf() - var index = chapterContent.indexOf(pattern) - while (index >= 0) { - position.add(index) - index = chapterContent.indexOf(pattern, index + 1) + if (mContent.indexOf(pattern) >= 0) { + //搜索到内容才启用净化 + mContent = contentProcessor.replaceContent(mContent) + var index = mContent.indexOf(pattern) + while (index >= 0) { + position.add(index) + index = mContent.indexOf(pattern, index + 1) + } } return position } From d2a38993b89afbde261387ac849bad5110c15127 Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Sat, 29 Jan 2022 08:30:01 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=85=A8=E6=96=87=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E5=87=80=E5=8C=96=E8=B7=9F=E9=9A=8F=20?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/book/searchContent/SearchContentViewModel.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt index 0de6e302a..b23a2131f 100644 --- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt @@ -76,8 +76,8 @@ class SearchContentViewModel(application: Application) : BaseViewModel(applicati private fun searchPosition(pattern: String): List { val position: MutableList = mutableListOf() if (mContent.indexOf(pattern) >= 0) { - //搜索到内容才启用净化 - mContent = contentProcessor.replaceContent(mContent) + //搜索到内容允许净化 + if (book?.getUseReplaceRule() ?: false) mContent = contentProcessor!!.replaceContent(mContent) var index = mContent.indexOf(pattern) while (index >= 0) { position.add(index) From d1b84c433c6779bc63132d7371937af401709c75 Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Sat, 29 Jan 2022 08:29:44 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E7=A9=BA=E7=99=BD=E7=AB=A0=E8=8A=82?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=97=B6=E8=BE=93=E5=87=BA""?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/ui/book/cache/CacheViewModel.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/cache/CacheViewModel.kt b/app/src/main/java/io/legado/app/ui/book/cache/CacheViewModel.kt index e21157ade..2be9f07e3 100644 --- a/app/src/main/java/io/legado/app/ui/book/cache/CacheViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/cache/CacheViewModel.kt @@ -163,7 +163,7 @@ class CacheViewModel(application: Application) : BaseViewModel(application) { .getContent( book, chapter, - content ?: "null", + content ?: "", includeTitle = !AppConfig.exportNoChapterName, useReplace = useReplace, chineseConvert = false, @@ -419,7 +419,7 @@ class CacheViewModel(application: Application) : BaseViewModel(application) { upAdapterLiveData.postValue(book.bookUrl) exportProgress[book.bookUrl] = index BookHelp.getContent(book, chapter).let { content -> - var content1 = fixPic(epubBook, book, content ?: "null", chapter) + var content1 = fixPic(epubBook, book, content ?: "", chapter) content1 = contentProcessor .getContent( book, From 4d7a84ed948f17e5abbc09248febd04821e4f20b Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Fri, 28 Jan 2022 19:52:55 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E6=AD=A3=E6=96=87=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=20=E6=A0=87=E9=A2=98=E5=B1=85=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/book/read/page/provider/ChapterProvider.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt index ebfbcb0f8..4e0242e3f 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt @@ -129,7 +129,7 @@ object ChapterProvider { matcher.appendTail(sb) text = sb.toString() val isTitle = index == 0 - val isVolumeTitle = bookChapter.isVolume && isTitle && contents.size == 1 + val isVolumeTitle = isTitle && contents.size == 1 val textPaint = if (isTitle) titlePaint else contentPaint if (!(isTitle && ReadBookConfig.titleMode == 2)) { setTypeText( @@ -147,7 +147,7 @@ object ChapterProvider { val text = content.substring(start, matcher.start()) if (text.isNotBlank()) { val isTitle = index == 0 - val isVolumeTitle = bookChapter.isVolume && isTitle && contents.size == 1 + val isVolumeTitle = isTitle && contents.size == 1 val textPaint = if (isTitle) titlePaint else contentPaint if (!(isTitle && ReadBookConfig.titleMode == 2)) { setTypeText( @@ -169,7 +169,7 @@ object ChapterProvider { val text = content.substring(start, content.length) if (text.isNotBlank()) { val isTitle = index == 0 - val isVolumeTitle = bookChapter.isVolume && isTitle && contents.size == 1 + val isVolumeTitle = isTitle && contents.size == 1 val textPaint = if (isTitle) titlePaint else contentPaint if (!(isTitle && ReadBookConfig.titleMode == 2)) { setTypeText( From 27bc4787e3df472fac3eb8d38882aea69b35709a Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Sat, 29 Jan 2022 09:51:35 +0800 Subject: [PATCH 5/9] =?UTF-8?q?txt=E6=96=87=E4=BB=B6=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E6=97=B6=E7=A9=BA=E7=99=BD=E7=AB=A0=E8=8A=82?= =?UTF-8?q?=E8=A7=86=E4=B8=BA=E5=8D=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/model/localBook/TextFile.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/io/legado/app/model/localBook/TextFile.kt b/app/src/main/java/io/legado/app/model/localBook/TextFile.kt index f49254ff9..10ca07546 100644 --- a/app/src/main/java/io/legado/app/model/localBook/TextFile.kt +++ b/app/src/main/java/io/legado/app/model/localBook/TextFile.kt @@ -124,6 +124,7 @@ class TextFile(private val book: Book) { val chapterStart = matcher.start() //获取章节内容 val chapterContent = blockContent.substring(seekPos, chapterStart) + var mChapterContent = chapterContent val chapterLength = chapterContent.toByteArray(charset).size val lastStart = toc.lastOrNull()?.start ?: curOffset if (curOffset + chapterLength - lastStart > 50000) { @@ -140,12 +141,14 @@ class TextFile(private val book: Book) { qyChapter.title = "前言" qyChapter.start = curOffset qyChapter.end = chapterLength.toLong() + qyChapter.isVolume = mChapterContent.substringAfter(qyChapter.title).isBlank() toc.add(qyChapter) } //创建当前章节 val curChapter = BookChapter() curChapter.title = matcher.group() curChapter.start = chapterLength.toLong() + curChapter.isVolume = mChapterContent.substringAfter(curChapter.title).isBlank() toc.add(curChapter) } else { //否则就block分割之后,上一个章节的剩余内容 //获取上一章节 @@ -157,6 +160,7 @@ class TextFile(private val book: Book) { val curChapter = BookChapter() curChapter.title = matcher.group() curChapter.start = lastChapter.end + curChapter.isVolume = mChapterContent.substringAfter(curChapter.title).isBlank() toc.add(curChapter) } } else { @@ -169,12 +173,14 @@ class TextFile(private val book: Book) { val curChapter = BookChapter() curChapter.title = matcher.group() curChapter.start = lastChapter.end + curChapter.isVolume = mChapterContent.substringAfter(curChapter.title).isBlank() toc.add(curChapter) } else { //如果章节不存在则创建章节 val curChapter = BookChapter() curChapter.title = matcher.group() curChapter.start = curOffset curChapter.end = curOffset + curChapter.isVolume = mChapterContent.substringAfter(curChapter.title).isBlank() toc.add(curChapter) } } From 515120c3a3de07390b03749afb9e8e21476d1fcb Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Sat, 29 Jan 2022 10:24:12 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E6=90=9C=E7=B4=A2=E5=92=8C=E5=8F=91=E7=8E=B0?= =?UTF-8?q?=E7=9A=84=E6=8F=90=E7=A4=BA=E9=80=BB=E8=BE=91=20=E7=BA=AF?= =?UTF-8?q?=E5=8F=91=E7=8E=B0=E6=BA=90(=E6=90=9C=E7=B4=A2=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E4=B8=BA=E7=A9=BA)=20=E8=B7=B3=E8=BF=87=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=90=9C=E7=B4=A2=20=E6=90=9C=E7=B4=A2=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E4=B8=8D=E4=B8=BA=E7=A9=BA=20=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E6=97=B6=E6=9C=80=E7=BB=88=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/data/entities/BookSource.kt | 7 +++++++ .../java/io/legado/app/service/CheckSourceService.kt | 10 +++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/entities/BookSource.kt b/app/src/main/java/io/legado/app/data/entities/BookSource.kt index 782eec76b..247dfc379 100644 --- a/app/src/main/java/io/legado/app/data/entities/BookSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BookSource.kt @@ -134,6 +134,13 @@ data class BookSource( return this } + fun hasGroup(group: String): Boolean { + bookSourceGroup?.splitNotBlank(AppPattern.splitGroupRegex)?.toHashSet()?.let { + return if (it.indexOf(group) != -1) true else false + } + return false + } + fun equal(source: BookSource) = equal(bookSourceName, source.bookSourceName) && equal(bookSourceUrl, source.bookSourceUrl) diff --git a/app/src/main/java/io/legado/app/service/CheckSourceService.kt b/app/src/main/java/io/legado/app/service/CheckSourceService.kt index 45c40a395..a7c057b43 100644 --- a/app/src/main/java/io/legado/app/service/CheckSourceService.kt +++ b/app/src/main/java/io/legado/app/service/CheckSourceService.kt @@ -121,8 +121,8 @@ class CheckSourceService : BaseService() { searchWord = it } } - //校验搜索 - if (CheckSource.checkSearch) { + //校验搜索 用户设置校验搜索 并且 搜索链接不为空 + if (CheckSource.checkSearch && !source.searchUrl.isNullOrBlank()) { books = WebBook.searchBookAwait(this, source, searchWord) if (books.isEmpty()) source.addGroup("搜索失效") else source.removeGroup("搜索失效") } @@ -187,7 +187,11 @@ class CheckSourceService : BaseService() { ?.filterNot { it.startsWith("Error: ") }?.joinToString("\n") - Debug.updateFinalMessage(source.bookSourceUrl, "成功") + if (source.hasGroup("搜索失效")) { + Debug.updateFinalMessage(source.bookSourceUrl, "失败") + } else { + Debug.updateFinalMessage(source.bookSourceUrl, "成功") + } }.onFinally(searchCoroutine) { source.respondTime = Debug.getRespondTime(source.bookSourceUrl) appDb.bookSourceDao.update(source) From d0ed7c7df4e5484d50458b79862d2aa4e55fa64c Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Sat, 29 Jan 2022 11:54:38 +0800 Subject: [PATCH 7/9] =?UTF-8?q?fix:txt=E7=9B=AE=E5=BD=95=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E6=97=B6=E5=88=A4=E6=96=AD=E7=A9=BA=E7=99=BD=E7=AB=A0=E8=8A=82?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/model/localBook/TextFile.kt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/localBook/TextFile.kt b/app/src/main/java/io/legado/app/model/localBook/TextFile.kt index 10ca07546..ed8879eaa 100644 --- a/app/src/main/java/io/legado/app/model/localBook/TextFile.kt +++ b/app/src/main/java/io/legado/app/model/localBook/TextFile.kt @@ -141,18 +141,17 @@ class TextFile(private val book: Book) { qyChapter.title = "前言" qyChapter.start = curOffset qyChapter.end = chapterLength.toLong() - qyChapter.isVolume = mChapterContent.substringAfter(qyChapter.title).isBlank() toc.add(qyChapter) } //创建当前章节 val curChapter = BookChapter() curChapter.title = matcher.group() curChapter.start = chapterLength.toLong() - curChapter.isVolume = mChapterContent.substringAfter(curChapter.title).isBlank() toc.add(curChapter) } else { //否则就block分割之后,上一个章节的剩余内容 //获取上一章节 val lastChapter = toc.last() + toc.last().isVolume = mChapterContent.substringAfter(lastChapter.title).isBlank() //将当前段落添加上一章去 lastChapter.end = lastChapter.end!! + chapterLength.toLong() @@ -160,27 +159,25 @@ class TextFile(private val book: Book) { val curChapter = BookChapter() curChapter.title = matcher.group() curChapter.start = lastChapter.end - curChapter.isVolume = mChapterContent.substringAfter(curChapter.title).isBlank() toc.add(curChapter) } } else { if (toc.isNotEmpty()) { //获取章节内容 //获取上一章节 val lastChapter = toc.last() + toc.last().isVolume = mChapterContent.substringAfter(lastChapter.title).isBlank() lastChapter.end = lastChapter.start!! + chapterContent.toByteArray(charset).size.toLong() //创建当前章节 val curChapter = BookChapter() curChapter.title = matcher.group() curChapter.start = lastChapter.end - curChapter.isVolume = mChapterContent.substringAfter(curChapter.title).isBlank() toc.add(curChapter) } else { //如果章节不存在则创建章节 val curChapter = BookChapter() curChapter.title = matcher.group() curChapter.start = curOffset curChapter.end = curOffset - curChapter.isVolume = mChapterContent.substringAfter(curChapter.title).isBlank() toc.add(curChapter) } } From 90c8fe182d9101780f88e1007bfa3b010f2ea589 Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Sat, 29 Jan 2022 12:34:18 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E5=8D=B7=E7=9A=84=E6=AD=A3=E6=96=87?= =?UTF-8?q?=E6=9C=89=E5=86=85=E5=AE=B9=E6=97=B6=20=E6=A0=87=E9=A2=98x?= =?UTF-8?q?=E8=BD=B4=E5=B1=85=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../read/page/provider/ChapterProvider.kt | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt index 4e0242e3f..4b6359a0b 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt @@ -129,12 +129,13 @@ object ChapterProvider { matcher.appendTail(sb) text = sb.toString() val isTitle = index == 0 - val isVolumeTitle = isTitle && contents.size == 1 + val isTitleWithNoContent = isTitle && contents.size == 1 + val isVolumeTitle = isTitle && bookChapter.isVolume val textPaint = if (isTitle) titlePaint else contentPaint if (!(isTitle && ReadBookConfig.titleMode == 2)) { setTypeText( absStartX, durY, text, textPages, stringBuilder, - isTitle, isVolumeTitle, textPaint, srcList + isTitle, isTitleWithNoContent, isVolumeTitle, textPaint, srcList ).let { absStartX = it.first durY = it.second @@ -147,12 +148,13 @@ object ChapterProvider { val text = content.substring(start, matcher.start()) if (text.isNotBlank()) { val isTitle = index == 0 - val isVolumeTitle = isTitle && contents.size == 1 + val isTitleWithNoContent = isTitle && contents.size == 1 + val isVolumeTitle = isTitle && bookChapter.isVolume val textPaint = if (isTitle) titlePaint else contentPaint if (!(isTitle && ReadBookConfig.titleMode == 2)) { setTypeText( - absStartX, durY, text, textPages, - stringBuilder, isTitle, isVolumeTitle, textPaint + absStartX, durY, text, textPages, stringBuilder, + isTitle, isTitleWithNoContent, isVolumeTitle, textPaint ).let { absStartX = it.first durY = it.second @@ -169,12 +171,13 @@ object ChapterProvider { val text = content.substring(start, content.length) if (text.isNotBlank()) { val isTitle = index == 0 - val isVolumeTitle = isTitle && contents.size == 1 + val isTitleWithNoContent = isTitle && contents.size == 1 + val isVolumeTitle = isTitle && bookChapter.isVolume val textPaint = if (isTitle) titlePaint else contentPaint if (!(isTitle && ReadBookConfig.titleMode == 2)) { setTypeText( - absStartX, durY, text, textPages, - stringBuilder, isTitle, isVolumeTitle, textPaint + absStartX, durY, text, textPages, stringBuilder, + isTitle, isTitleWithNoContent, isVolumeTitle, textPaint ).let { absStartX = it.first durY = it.second @@ -277,6 +280,7 @@ object ChapterProvider { textPages: ArrayList, stringBuilder: StringBuilder, isTitle: Boolean, + isTitleWithNoContent: Boolean, isVolumeTitle: Boolean, textPaint: TextPaint, srcList: LinkedList? = null @@ -288,7 +292,8 @@ object ChapterProvider { text, textPaint, visibleWidth, Layout.Alignment.ALIGN_NORMAL, 0f, 0f, true ) var durY = when { - isVolumeTitle -> ((visibleHeight - layout.lineCount * textPaint.textHeight) / 2).toFloat() + //标题y轴居中 + isTitleWithNoContent -> ((visibleHeight - layout.lineCount * textPaint.textHeight) / 2).toFloat() isTitle -> y + titleTopSpacing else -> y } @@ -334,8 +339,8 @@ object ChapterProvider { //最后一行 textLine.text = "$words\n" isLastLine = true - //标题居中 - val startX = if (isTitle && ReadBookConfig.titleMode == 1 || isVolumeTitle) + //标题x轴居中 + val startX = if (isTitle && ReadBookConfig.titleMode == 1 || isTitleWithNoContent || isVolumeTitle) (visibleWidth - layout.getLineWidth(lineIndex)) / 2 else 0f addCharsToLineLast( @@ -368,7 +373,7 @@ object ChapterProvider { durY += textPaint.textHeight * lineSpacingExtra textPages.last().height = durY } - if (isTitle && !isVolumeTitle) durY += titleBottomSpacing + if (isTitle && !isTitleWithNoContent) durY += titleBottomSpacing durY += textPaint.textHeight * paragraphSpacing / 10f return Pair(absStartX, durY) } From a6452940a467a6913189b6288b7776019d83e0ca Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Sat, 29 Jan 2022 15:43:38 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E5=85=A8=E6=96=87=E6=90=9C=E7=B4=A2:?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=AE=8C=E6=88=90=E5=90=8E=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/book/searchContent/SearchContentActivity.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt index a4bbfbbd2..14ce8ff98 100644 --- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt @@ -157,6 +157,7 @@ class SearchContentActivity : } } } + binding.refreshProgressBar.isAutoLoading = false } }