Parcourir la source

Merge remote-tracking branch 'origin/master'

kunfei il y a 2 ans
Parent
commit
cce5d373dd

+ 1 - 1
.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

+ 11 - 10
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? {
-        /**
-         * <image width="1038" height="670" xlink:href="..."/>
-         * ...titlepage.xhtml
-         * 大多数epub文件的封面页都会带有cover,可以一定程度上解决封面读取问题
-         */
-        if (chapter.url.contains("titlepage.xhtml") ||
-            chapter.url.contains("cover")
-        ) {
-            return "<img src=\"cover.jpeg\" />"
-        }
         /*获取当前章节文本*/
         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 {
+        /**
+         * <image width="1038" height="670" xlink:href="..."/>
+         * ...titlepage.xhtml
+         * 大多数epub文件的封面页都会带有cover,可以一定程度上解决封面读取问题
+         */
+        if (res.href.contains("titlepage.xhtml") ||
+            res.href.contains("cover")
+        ) {
+            return Jsoup.parseBodyFragment("<img src=\"cover.jpeg\" />")
+        }
+
         // Jsoup可能会修复不规范的xhtml文件 解析处理后再获取
         var bodyElement = Jsoup.parse(String(res.data, mCharset)).body()
         bodyElement.children().run {

+ 36 - 9
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<Int>())
+
+                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<Int>())
+                    }
                 }
             }
             true

+ 1 - 1
app/src/main/res/values-es-rES/arrays.xml

@@ -59,7 +59,7 @@
 		<item>@string/screen_portrait</item>
 		<item>@string/screen_landscape</item>
 		<item>@string/screen_sensor</item>
-		<item>反向竖屏</item>
+		<item>@string/screen_portrait_reversed</item>
 	</string-array>
 
 	<string-array name="icon_names">

+ 1 - 1
app/src/main/res/values-pt-rBR/arrays.xml

@@ -59,7 +59,7 @@
 		<item>@string/screen_portrait</item>
 		<item>@string/screen_landscape</item>
 		<item>@string/screen_sensor</item>
-		<item>反向竖屏</item>
+		<item>@string/screen_portrait_reversed</item>
 	</string-array>
 
 	<string-array name="icon_names">

+ 6 - 6
app/src/main/res/values/arrays.xml

@@ -77,15 +77,15 @@
 	</string-array>
 
 	<string-array name="double_page_title">
-		<item>全局单页</item>
-		<item>全局双页</item>
-		<item>横屏双页</item>
-		<item>平板/横屏双页</item>
+		<item>Single page</item>
+		<item>Double page</item>
+		<item>Double page in landscape</item>
+		<item>Double page on tablet or landscape</item>
 	</string-array>
 
 	<string-array name="progress_bar_behavior_title">
-		<item>调整本章页数</item>
-		<item>调整章节位置</item>
+		<item>Adjust of chapter page</item>
+		<item>Adjust of chapter index</item>
 	</string-array>
 
 	<string-array name="icon_names" tools:ignore="Typos">

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -905,7 +905,7 @@
     <string name="disable_source">disable source</string>
     <string name="delete_source">delete source</string>
     <string name="chapter_pay">pay</string>
-    <string name="double_page_horizontal">Flat/Landscape Dual Page</string>
+    <string name="double_page_horizontal">Tablet/Landscape Dual Page</string>
     <string name="open_in_browser">open in browser</string>
     <string name="copy_url">copy url</string>
     <string name="open_fun">open function</string>

+ 10 - 10
modules/book/src/main/java/me/ag2s/epublib/epub/NCXDocumentV3.java

@@ -136,18 +136,18 @@ public class NCXDocumentV3 {
     }
 
     private static List<TOCReference> doToc(Node n, EpubBook book) {
-        List<TOCReference> 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);
     }