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

* 优化

* 页脚增加章节名称配置,增加返回提示加入书架
This commit is contained in:
lhjgege
2025-02-27 10:49:50 +08:00
committed by GitHub
parent c9b4e96814
commit 95032d3c07
15 changed files with 80 additions and 7 deletions
@@ -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 {
@@ -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="",//章节名称
)
@@ -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()
@@ -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() } }
}
}
}
}
@@ -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,
)
@@ -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) {
@@ -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
@@ -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>
@@ -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>
@@ -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
View File
@@ -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>
@@ -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>
@@ -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
View File
@@ -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
View File
@@ -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>