Просмотр исходного кода

页脚增加章节名称配置,增加返回提示加入书架 (#4752)

* 优化

* 页脚增加章节名称配置,增加返回提示加入书架
lhjgege 1 год назад
Родитель
Сommit
871f1b401c

+ 2 - 1
app/src/main/java/io/legado/app/model/ReadManga.kt

@@ -296,7 +296,8 @@ object ReadManga : CoroutineScope by MainScope() {
                     mChapterPagePos = durChapterPagePos.plus(1),
                     mChapterNextPagePos = durChapterPagePos.plus(1),
                     mImageUrl = src,
-                    mDurChapterPos = index.plus(1)
+                    mDurChapterPos = index.plus(1),
+                    mChapterName = chapterTitle
                 )
             }.toList().apply {
                 this.forEach {

+ 2 - 1
app/src/main/java/io/legado/app/model/recyclerView/MangaContent.kt

@@ -7,5 +7,6 @@ data class MangaContent(
     var mChapterNextPagePos: Int = 0,//下一章
     val mImageUrl: String = "",//当前URL
     var mDurChapterPos: Int = 0,//当前章节位置
-    var mDurChapterCount: Int = 0//当前章节内容总数
+    var mDurChapterCount: Int = 0,//当前章节内容总数
+    var mChapterName:String="",//章节名称
 )

+ 9 - 0
app/src/main/java/io/legado/app/ui/book/manga/MangaViewModel.kt

@@ -233,6 +233,15 @@ class MangaViewModel(application: Application) : BaseViewModel(application) {
         }
     }
 
+    fun removeFromBookshelf(success: (() -> Unit)?) {
+        val book = ReadManga.book
+        Coroutine.async {
+            book?.delete()
+        }.onSuccess {
+            success?.invoke()
+        }
+    }
+
     override fun onCleared() {
         super.onCleared()
         changeSourceCoroutine?.cancel()

+ 42 - 4
app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt

@@ -1,6 +1,7 @@
 package io.legado.app.ui.book.manga
 
 import android.annotation.SuppressLint
+import android.app.Activity
 import android.content.Intent
 import android.os.Build
 import android.os.Bundle
@@ -26,6 +27,7 @@ import com.bumptech.glide.util.FixedPreloadSizeProvider
 import io.legado.app.BuildConfig
 import io.legado.app.R
 import io.legado.app.base.VMBaseActivity
+import io.legado.app.constant.BookType
 import io.legado.app.constant.EventBus
 import io.legado.app.data.entities.Book
 import io.legado.app.data.entities.BookChapter
@@ -34,6 +36,7 @@ import io.legado.app.data.entities.BookSource
 import io.legado.app.databinding.ActivityMangaBinding
 import io.legado.app.databinding.ViewLoadMoreBinding
 import io.legado.app.help.book.isImage
+import io.legado.app.help.book.removeType
 import io.legado.app.help.config.AppConfig
 import io.legado.app.help.storage.Backup
 import io.legado.app.lib.dialogs.alert
@@ -187,7 +190,8 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
                 ReadManga.durChapterPagePos.plus(1),
                 ReadManga.durChapterPageCount,
                 ReadManga.durChapterPos.plus(1),
-                ReadManga.durChapterCount
+                ReadManga.durChapterCount,
+                ReadManga.chapterTitle
             )
         }
     }
@@ -227,7 +231,8 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
                                 content.mChapterPagePos,
                                 content.mChapterPageCount,
                                 content.mDurChapterPos,
-                                content.mDurChapterCount
+                                content.mDurChapterCount,
+                                content.mChapterName
                             )
                         }
                     } catch (e: Exception) {
@@ -283,7 +288,8 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
                             ReadManga.durChapterPagePos.plus(1),
                             ReadManga.durChapterPageCount,
                             ReadManga.durChapterPos.plus(1),
-                            ReadManga.durChapterCount
+                            ReadManga.durChapterCount,
+                            ReadManga.chapterTitle
                         )
                     }
 
@@ -309,7 +315,11 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
     }
 
     private fun upInfoBar(
-        chapterPagePos: Int, chapterPageCount: Int, chapterPos: Int, chapterCount: Int,
+        chapterPagePos: Int,
+        chapterPageCount: Int,
+        chapterPos: Int,
+        chapterCount: Int,
+        chapterName: String
     ) {
         mMangaFooterConfig.run {
             mLabelBuilder.clear()
@@ -334,6 +344,11 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
                     mLabelBuilder.append(getString(R.string.manga_check_progress))
                 }
                 mLabelBuilder.append("${chapterPagePos.div(chapterPageCount).times(100)}%")
+                    .append(" ")
+            }
+
+            if (!hideChapterName) {
+                mLabelBuilder.append(chapterName)
             }
         }
         binding.infobar.update(
@@ -658,4 +673,27 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
                 callback.invoke(it)
             }
     }
+
+    override fun finish() {
+        val book = ReadManga.book ?: return super.finish()
+
+        if (ReadManga.inBookshelf) {
+            return super.finish()
+        }
+
+        if (!AppConfig.showAddToShelfAlert) {
+            viewModel.removeFromBookshelf { super.finish() }
+        } else {
+            alert(title = getString(R.string.add_to_bookshelf)) {
+                setMessage(getString(R.string.check_add_bookshelf, book.name))
+                okButton {
+                    ReadManga.book?.removeType(BookType.notShelf)
+                    ReadManga.book?.save()
+                    ReadManga.inBookshelf = true
+                    setResult(Activity.RESULT_OK)
+                }
+                noButton { viewModel.removeFromBookshelf { super.finish() } }
+            }
+        }
+    }
 }

+ 2 - 1
app/src/main/java/io/legado/app/ui/book/manga/config/MangaFooterConfig.kt

@@ -12,5 +12,6 @@ data class MangaFooterConfig(
     var hideProgressRatioLabel: Boolean = false,
     var hideProgressRatio: Boolean = false,
     var footerOrientation: Int = ReaderInfoBarView.ALIGN_LEFT,//默认靠左
-    var hideFooter: Boolean = false
+    var hideFooter: Boolean = false,
+    var hideChapterName:Boolean=false,
 )

+ 7 - 0
app/src/main/java/io/legado/app/ui/book/manga/config/MangaFooterSettingDialog.kt

@@ -69,6 +69,13 @@ class MangaFooterSettingDialog : BaseDialogFragment(R.layout.dialog_manga_footer
                 postEvent(EventBus.UP_MANGA_CONFIG, config)
             }
         }
+        binding.cbChapterName.run {
+            isChecked = config.hideChapterName
+            setOnCheckedChangeListener { _, isChecked ->
+                config.hideChapterName = isChecked
+                postEvent(EventBus.UP_MANGA_CONFIG, config)
+            }
+        }
         binding.rgFooterOrientation.check(if (config.footerOrientation == ReaderInfoBarView.ALIGN_CENTER) R.id.rb_center else R.id.rb_left)
         binding.rgFooterOrientation.setOnCheckedChangeListener { _, checkedId ->
             when (checkedId) {

+ 8 - 0
app/src/main/res/layout/dialog_manga_footer_setting.xml

@@ -39,6 +39,14 @@
             android:layout_marginStart="10dp"
             android:gravity="center"
             android:text="@string/manga_check_chapter" />
+
+        <io.legado.app.lib.theme.view.ThemeCheckBox
+            android:id="@+id/cb_chapter_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="10dp"
+            android:gravity="center"
+            android:text="@string/manga_check_chapter_name" />
     </LinearLayout>
 
     <TextView

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

@@ -1195,6 +1195,7 @@
     <string name="manga_header_chapter">《章节和文案》隐藏</string>
     <string name="manga_check_chapter_label">《章节.》文案</string>
     <string name="manga_check_chapter">章节</string>
+    <string name="manga_check_chapter_name">章节名称</string>
     <string name="manga_header_page">《页数和文案》隐藏</string>
     <string name="manga_check_page_label">《页数.》文案</string>
     <string name="manga_check_page_number">页数</string>

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

@@ -1198,6 +1198,7 @@
     <string name="manga_header_chapter">《章节和文案》隐藏</string>
     <string name="manga_check_chapter_label">《章节.》文案</string>
     <string name="manga_check_chapter">章节</string>
+    <string name="manga_check_chapter_name">章节名称</string>
     <string name="manga_header_page">《页数和文案》隐藏</string>
     <string name="manga_check_page_label">《页数.》文案</string>
     <string name="manga_check_page_number">页数</string>

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

@@ -1198,6 +1198,7 @@
     <string name="manga_header_chapter">《章节和文案》隐藏</string>
     <string name="manga_check_chapter_label">《章节.》文案</string>
     <string name="manga_check_chapter">章节</string>
+    <string name="manga_check_chapter_name">章节名称</string>
     <string name="manga_header_page">《页数和文案》隐藏</string>
     <string name="manga_check_page_label">《页数.》文案</string>
     <string name="manga_check_page_number">页数</string>

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

@@ -1194,6 +1194,7 @@ Còn </string>
     <string name="manga_header_chapter">《章节和文案》隐藏</string>
     <string name="manga_check_chapter_label">《章节.》文案</string>
     <string name="manga_check_chapter">章节</string>
+    <string name="manga_check_chapter_name">章节名称</string>
     <string name="manga_header_page">《页数和文案》隐藏</string>
     <string name="manga_check_page_label">《页数.》文案</string>
     <string name="manga_check_page_number">页数</string>

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

@@ -1195,6 +1195,7 @@
     <string name="manga_header_chapter">《章节和文案》隐藏</string>
     <string name="manga_check_chapter_label">《章节.》文案</string>
     <string name="manga_check_chapter">章节</string>
+    <string name="manga_check_chapter_name">章节名称</string>
     <string name="manga_header_page">《页数和文案》隐藏</string>
     <string name="manga_check_page_label">《页数.》文案</string>
     <string name="manga_check_page_number">页数</string>

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

@@ -1197,6 +1197,7 @@
     <string name="manga_header_chapter">《章节和文案》隐藏</string>
     <string name="manga_check_chapter_label">《章节.》文案</string>
     <string name="manga_check_chapter">章节</string>
+    <string name="manga_check_chapter_name">章节名称</string>
     <string name="manga_header_page">《页数和文案》隐藏</string>
     <string name="manga_check_page_label">《页数.》文案</string>
     <string name="manga_check_page_number">页数</string>

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

@@ -1197,6 +1197,7 @@
     <string name="manga_header_chapter">《章节和文案》隐藏</string>
     <string name="manga_check_chapter_label">《章节.》文案</string>
     <string name="manga_check_chapter">章节</string>
+    <string name="manga_check_chapter_name">章节名称</string>
     <string name="manga_header_page">《页数和文案》隐藏</string>
     <string name="manga_check_page_label">《页数.》文案</string>
     <string name="manga_check_page_number">页数</string>

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

@@ -1198,6 +1198,7 @@
     <string name="manga_header_chapter">《章节和文案》隐藏</string>
     <string name="manga_check_chapter_label">《章节.》文案</string>
     <string name="manga_check_chapter">章节</string>
+    <string name="manga_check_chapter_name">章节名称</string>
     <string name="manga_header_page">《页数和文案》隐藏</string>
     <string name="manga_check_page_label">《页数.》文案</string>
     <string name="manga_check_page_number">页数</string>