diff --git a/.github/ISSUE_TEMPLATE/01-bugReport.yml b/.github/ISSUE_TEMPLATE/01-bugReport.yml index 116f91b84..956cc6cde 100644 --- a/.github/ISSUE_TEMPLATE/01-bugReport.yml +++ b/.github/ISSUE_TEMPLATE/01-bugReport.yml @@ -9,7 +9,7 @@ body: options: - label: 搜索现有issues,不存在相似或相关的issue / No similar or related issues required: true - - label: 最新[测试版](https://kunfei.lanzoui.com/b0f810h4b)依然存在此问题 / Latest beta app does not work + - label: 最新[测试版](https://github.com/gedoor/legado/actions/workflows/test.yml)依然存在此问题 / Latest beta app does not work required: true - label: 此问题和Xposed、Lsposed、Magisk、手机主题、浏览器插件等无关 / Make sure your machine is not touched by hook frameworks, plugins etc required: true diff --git a/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt b/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt index f71ee340e..449893ac9 100644 --- a/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt +++ b/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt @@ -134,16 +134,6 @@ class EpubFile(var book: Book) { } private fun getContent(chapter: BookChapter): String? { - /** - * - * ...titlepage.xhtml - * 大多数epub文件的封面页都会带有cover,可以一定程度上解决封面读取问题 - */ - if (chapter.url.contains("titlepage.xhtml") || - chapter.url.contains("cover") - ) { - return "" - } /*获取当前章节文本*/ val contents = epubBookContents ?: return null val nextChapterFirstResourceHref = chapter.getVariable("nextUrl").substringBeforeLast("#") @@ -201,6 +191,17 @@ class EpubFile(var book: Book) { } private fun getBody(res: Resource, startFragmentId: String?, endFragmentId: String?): Element { + /** + * + * ...titlepage.xhtml + * 大多数epub文件的封面页都会带有cover,可以一定程度上解决封面读取问题 + */ + if (res.href.contains("titlepage.xhtml") || + res.href.contains("cover") + ) { + return Jsoup.parseBodyFragment("") + } + // Jsoup可能会修复不规范的xhtml文件 解析处理后再获取 var bodyElement = Jsoup.parse(String(res.data, mCharset)).body() bodyElement.children().run { diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceAdapter.kt index f1c8c6d0e..6712fe3dd 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceAdapter.kt @@ -14,6 +14,7 @@ import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.data.entities.SearchBook import io.legado.app.databinding.ItemChangeSourceBinding import io.legado.app.help.config.AppConfig +import io.legado.app.lib.dialogs.alert import io.legado.app.utils.getCompatColor import io.legado.app.utils.gone import io.legado.app.utils.invisible @@ -82,8 +83,14 @@ class ChangeBookSourceAdapter( if (score > 0) { binding.ivBad.gone() binding.ivGood.visible() - DrawableCompat.setTint(binding.ivGood.drawable, appCtx.getCompatColor(R.color.md_red_A200)) - DrawableCompat.setTint(binding.ivBad.drawable, appCtx.getCompatColor(R.color.md_blue_100)) + DrawableCompat.setTint( + binding.ivGood.drawable, + appCtx.getCompatColor(R.color.md_red_A200) + ) + DrawableCompat.setTint( + binding.ivBad.drawable, + appCtx.getCompatColor(R.color.md_blue_100) + ) } else if (score < 0) { binding.ivGood.gone() binding.ivBad.visible() @@ -125,13 +132,19 @@ class ChangeBookSourceAdapter( override fun registerListener(holder: ItemViewHolder, binding: ItemChangeSourceBinding) { binding.ivGood.setOnClickListener { if (binding.ivBad.isVisible) { - DrawableCompat.setTint(binding.ivGood.drawable, appCtx.getCompatColor(R.color.md_red_A200)) + DrawableCompat.setTint( + binding.ivGood.drawable, + appCtx.getCompatColor(R.color.md_red_A200) + ) binding.ivBad.gone() getItem(holder.layoutPosition)?.let { callBack.setBookScore(it, 1) } } else { - DrawableCompat.setTint(binding.ivGood.drawable, appCtx.getCompatColor(R.color.md_red_100)) + DrawableCompat.setTint( + binding.ivGood.drawable, + appCtx.getCompatColor(R.color.md_red_100) + ) binding.ivBad.visible() getItem(holder.layoutPosition)?.let { callBack.setBookScore(it, 0) @@ -140,13 +153,19 @@ class ChangeBookSourceAdapter( } binding.ivBad.setOnClickListener { if (binding.ivGood.isVisible) { - DrawableCompat.setTint(binding.ivBad.drawable, appCtx.getCompatColor(R.color.md_blue_A200)) + DrawableCompat.setTint( + binding.ivBad.drawable, + appCtx.getCompatColor(R.color.md_blue_A200) + ) binding.ivGood.gone() getItem(holder.layoutPosition)?.let { callBack.setBookScore(it, -1) } } else { - DrawableCompat.setTint(binding.ivBad.drawable, appCtx.getCompatColor(R.color.md_blue_100)) + DrawableCompat.setTint( + binding.ivBad.drawable, + appCtx.getCompatColor(R.color.md_blue_100) + ) binding.ivGood.visible() getItem(holder.layoutPosition)?.let { callBack.setBookScore(it, 0) @@ -174,18 +193,26 @@ class ChangeBookSourceAdapter( R.id.menu_top_source -> { callBack.topSource(searchBook) } + R.id.menu_bottom_source -> { callBack.bottomSource(searchBook) } + R.id.menu_edit_source -> { callBack.editSource(searchBook) } + R.id.menu_disable_source -> { callBack.disableSource(searchBook) } - R.id.menu_delete_source -> { - callBack.deleteSource(searchBook) - updateItems(0, itemCount, listOf()) + + R.id.menu_delete_source -> context.alert(R.string.draw) { + setMessage(context.getString(R.string.sure_del) + "\n" + searchBook.originName) + noButton() + yesButton { + callBack.deleteSource(searchBook) + updateItems(0, itemCount, listOf()) + } } } true diff --git a/app/src/main/res/values-es-rES/arrays.xml b/app/src/main/res/values-es-rES/arrays.xml index 8640121d2..75be6ec9b 100644 --- a/app/src/main/res/values-es-rES/arrays.xml +++ b/app/src/main/res/values-es-rES/arrays.xml @@ -59,7 +59,7 @@ @string/screen_portrait @string/screen_landscape @string/screen_sensor - 反向竖屏 + @string/screen_portrait_reversed diff --git a/app/src/main/res/values-pt-rBR/arrays.xml b/app/src/main/res/values-pt-rBR/arrays.xml index 4f3755b82..b5fc95d69 100644 --- a/app/src/main/res/values-pt-rBR/arrays.xml +++ b/app/src/main/res/values-pt-rBR/arrays.xml @@ -59,7 +59,7 @@ @string/screen_portrait @string/screen_landscape @string/screen_sensor - 反向竖屏 + @string/screen_portrait_reversed diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index fceec4784..861c26321 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -77,15 +77,15 @@ - 全局单页 - 全局双页 - 横屏双页 - 平板/横屏双页 + Single page + Double page + Double page in landscape + Double page on tablet or landscape - 调整本章页数 - 调整章节位置 + Adjust of chapter page + Adjust of chapter index diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2410661df..97b7a4175 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -905,7 +905,7 @@ disable source delete source pay - Flat/Landscape Dual Page + Tablet/Landscape Dual Page open in browser copy url open function diff --git a/modules/book/src/main/java/me/ag2s/epublib/epub/NCXDocumentV3.java b/modules/book/src/main/java/me/ag2s/epublib/epub/NCXDocumentV3.java index 3cce0dd6e..1b508c5f4 100644 --- a/modules/book/src/main/java/me/ag2s/epublib/epub/NCXDocumentV3.java +++ b/modules/book/src/main/java/me/ag2s/epublib/epub/NCXDocumentV3.java @@ -136,18 +136,18 @@ public class NCXDocumentV3 { } private static List doToc(Node n, EpubBook book) { - List result = new ArrayList<>(); - if (n == null || n.getNodeType() != Document.ELEMENT_NODE) { - return result; - } else { - Element el = (Element) n; - NodeList nodeList = el.getElementsByTagName(XHTMLTgs.li); - for (int i = 0; i < nodeList.getLength(); i++) { - result.add(readTOCReference((Element) nodeList.item(i), book)); - } + return new ArrayList<>(); } - return result; + + Element el = (Element) n; + Node node = el.getElementsByTagName(XHTMLTgs.ol).item(0); + + if (node == null || node.getNodeType() != Document.ELEMENT_NODE) { + return new ArrayList<>(); + } + + return readTOCReferences(node.getChildNodes(), book); }