[新增] 添加书籍的类型的标识 #414

This commit is contained in:
HapeLee
2025-12-05 01:04:18 +08:00
parent 8df2f009a9
commit a4ee58c6d5
21 changed files with 255 additions and 33 deletions
@@ -226,4 +226,6 @@ object PreferKey {
const val exploreLayoutState = "exploreLayoutState"
const val defaultSourceChangeAll = "defaultSourceChangeAll"
const val showTip = "showTip"
}
@@ -90,6 +90,22 @@ val Book.archiveName: String
return origin.substringAfter("::").substringAfterLast("/")
}
fun Book.getBookTypeName(): String {
return when {
isLocalTxt -> "TXT"
isEpub -> "EPUB"
isUmd -> "UMD"
isPdf -> "PDF"
isMobi -> "MOBI"
isAudio -> "有声书"
isImage -> "漫画"
isOnLineTxt -> "小说"
isWebFile -> "网页文件"
else -> "未知类型"
}
}
fun Book.contains(word: String?): Boolean {
if (word.isNullOrEmpty()) {
return true
@@ -157,6 +157,12 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
appCtx.putPrefBoolean(PreferKey.showUnread, value)
}
var showTip: Boolean
get() = appCtx.getPrefBoolean(PreferKey.showTip, false)
set(value) {
appCtx.putPrefBoolean(PreferKey.showTip, value)
}
var showUnreadNew: Boolean
get() = appCtx.getPrefBoolean(PreferKey.showUnreadNew, true)
set(value) {
@@ -65,6 +65,7 @@ class BookshelfConfigBottomSheet : BaseBottomSheetDialogFragment(R.layout.dialog
swShowUnread.isChecked = AppConfig.showUnread
swShowUnreadNew.isChecked = AppConfig.showUnreadNew
swShowTip.isChecked = AppConfig.showTip
swShowLastUpdateTime.isChecked = AppConfig.showLastUpdateTime
swShowWaitUpBooks.isChecked = AppConfig.showWaitUpCount
swShowBookshelfFastScroller.isChecked = AppConfig.showBookshelfFastScroller
@@ -124,6 +125,10 @@ class BookshelfConfigBottomSheet : BaseBottomSheetDialogFragment(R.layout.dialog
AppConfig.showUnreadNew = swShowUnreadNew.isChecked
postEvent(EventBus.BOOKSHELF_REFRESH, "")
}
if (AppConfig.showTip != swShowTip.isChecked) {
AppConfig.showTip = swShowTip.isChecked
postEvent(EventBus.BOOKSHELF_REFRESH, "")
}
if (AppConfig.showLastUpdateTime != swShowLastUpdateTime.isChecked) {
AppConfig.showLastUpdateTime = swShowLastUpdateTime.isChecked
postEvent(EventBus.BOOKSHELF_REFRESH, "")
@@ -7,6 +7,7 @@ import androidx.core.view.isVisible
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.data.entities.Book
import io.legado.app.databinding.ItemBookshelfGridBinding
import io.legado.app.help.book.getBookTypeName
import io.legado.app.help.book.isLocal
import io.legado.app.help.config.AppConfig
import io.legado.app.utils.gone
@@ -46,6 +47,7 @@ class BooksAdapterGrid(context: Context, private val callBack: CallBack) :
private fun upRefresh(binding: ItemBookshelfGridBinding, item: Book) {
if (!item.isLocal && callBack.isUpdate(item.bookUrl)) {
binding.cdUnread.gone()
binding.cdTip.visible()
binding.rlLoading.visible()
} else {
binding.rlLoading.gone()
@@ -63,6 +65,12 @@ class BooksAdapterGrid(context: Context, private val callBack: CallBack) :
} else {
binding.cdUnread.gone()
}
if (AppConfig.showTip){
binding.cdTip.visible()
binding.tvTip.text = item.getBookTypeName()
} else {
binding.cdTip.gone()
}
}
}
@@ -8,9 +8,11 @@ import androidx.core.view.isVisible
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.data.entities.Book
import io.legado.app.databinding.ItemBookshelfGridCompactBinding
import io.legado.app.help.book.getBookTypeName
import io.legado.app.help.book.isLocal
import io.legado.app.help.config.AppConfig
import io.legado.app.utils.gone
import io.legado.app.utils.visible
class BooksAdapterGridCompact(context: Context, private val callBack: CallBack) :
BaseBooksAdapter<ItemBookshelfGridCompactBinding>(context) {
@@ -70,6 +72,12 @@ class BooksAdapterGridCompact(context: Context, private val callBack: CallBack)
} else {
binding.cdUnread.visibility = View.GONE
}
if (AppConfig.showTip){
binding.cdTip.visible()
binding.tvTip.text = item.getBookTypeName()
} else {
binding.cdTip.gone()
}
}
}
@@ -8,9 +8,11 @@ import androidx.core.view.isVisible
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.data.entities.Book
import io.legado.app.databinding.ItemBookshelfGridCompactBinding
import io.legado.app.help.book.getBookTypeName
import io.legado.app.help.book.isLocal
import io.legado.app.help.config.AppConfig
import io.legado.app.utils.gone
import io.legado.app.utils.visible
class BooksAdapterGridCover(context: Context, private val callBack: CallBack) :
BaseBooksAdapter<ItemBookshelfGridCompactBinding>(context) {
@@ -70,6 +72,12 @@ class BooksAdapterGridCover(context: Context, private val callBack: CallBack) :
} else {
binding.cdUnread.visibility = View.GONE
}
if (AppConfig.showTip){
binding.cdTip.visible()
binding.tvTip.text = item.getBookTypeName()
} else {
binding.cdTip.gone()
}
}
}
@@ -9,6 +9,7 @@ import androidx.lifecycle.Lifecycle
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.data.entities.Book
import io.legado.app.databinding.ItemBookshelfListBinding
import io.legado.app.help.book.getBookTypeName
import io.legado.app.help.book.isLocal
import io.legado.app.help.config.AppConfig
import io.legado.app.utils.gone
@@ -88,6 +89,12 @@ class BooksAdapterList(
} else {
binding.cdUnread.gone()
}
if (AppConfig.showTip){
binding.cdTip.visible()
binding.tvTip.text = item.getBookTypeName()
} else {
binding.cdTip.gone()
}
}
}
@@ -10,6 +10,7 @@ import io.legado.app.R
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.data.entities.Book
import io.legado.app.databinding.ItemBookshelfListCompactBinding
import io.legado.app.help.book.getBookTypeName
import io.legado.app.help.book.isLocal
import io.legado.app.help.config.AppConfig
import io.legado.app.utils.gone
@@ -92,6 +93,12 @@ class BooksAdapterListCompact(
} else {
binding.cdUnread.gone()
}
if (AppConfig.showTip){
binding.cdTip.visible()
binding.tvTip.text = item.getBookTypeName()
} else {
binding.cdTip.gone()
}
}
}
@@ -12,9 +12,11 @@ import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookGroup
import io.legado.app.databinding.ItemBookshelfGridBinding
import io.legado.app.databinding.ItemBookshelfGridGroupBinding
import io.legado.app.help.book.getBookTypeName
import io.legado.app.help.book.isLocal
import io.legado.app.help.config.AppConfig
import io.legado.app.utils.gone
import io.legado.app.utils.visible
import splitties.views.onLongClick
@Suppress("UNUSED_PARAMETER")
@@ -119,6 +121,12 @@ class BooksAdapterGrid(context: Context, callBack: CallBack) :
} else {
binding.cdUnread.visibility = View.GONE
}
if (AppConfig.showTip){
binding.cdTip.visible()
binding.tvTip.text = item.getBookTypeName()
} else {
binding.cdTip.gone()
}
}
}
@@ -12,9 +12,11 @@ import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookGroup
import io.legado.app.databinding.ItemBookshelfGridCompactBinding
import io.legado.app.databinding.ItemBookshelfGridCompactGroupBinding
import io.legado.app.help.book.getBookTypeName
import io.legado.app.help.book.isLocal
import io.legado.app.help.config.AppConfig
import io.legado.app.utils.gone
import io.legado.app.utils.visible
import splitties.views.onLongClick
@Suppress("UNUSED_PARAMETER")
@@ -126,6 +128,12 @@ class BooksAdapterGridCompact(context: Context, callBack: CallBack) :
} else {
binding.cdUnread.visibility = View.GONE
}
if (AppConfig.showTip){
binding.cdTip.visible()
binding.tvTip.text = item.getBookTypeName()
} else {
binding.cdTip.gone()
}
}
}
@@ -12,9 +12,11 @@ import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookGroup
import io.legado.app.databinding.ItemBookshelfGridCompactBinding
import io.legado.app.databinding.ItemBookshelfGridCompactGroupBinding
import io.legado.app.help.book.getBookTypeName
import io.legado.app.help.book.isLocal
import io.legado.app.help.config.AppConfig
import io.legado.app.utils.gone
import io.legado.app.utils.visible
import splitties.views.onLongClick
@Suppress("UNUSED_PARAMETER")
@@ -126,6 +128,12 @@ class BooksAdapterGridCover(context: Context, callBack: CallBack) :
} else {
binding.cdUnread.visibility = View.GONE
}
if (AppConfig.showTip){
binding.cdTip.visible()
binding.tvTip.text = item.getBookTypeName()
} else {
binding.cdTip.gone()
}
}
}
@@ -11,6 +11,7 @@ import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookGroup
import io.legado.app.databinding.ItemBookshelfListBinding
import io.legado.app.databinding.ItemBookshelfListGroupBinding
import io.legado.app.help.book.getBookTypeName
import io.legado.app.help.book.isLocal
import io.legado.app.help.config.AppConfig
import io.legado.app.utils.gone
@@ -140,6 +141,12 @@ class BooksAdapterList(context: Context, callBack: CallBack) :
} else {
binding.cdUnread.gone()
}
if (AppConfig.showTip){
binding.cdTip.visible()
binding.tvTip.text = item.getBookTypeName()
} else {
binding.cdTip.gone()
}
}
}
@@ -11,6 +11,7 @@ import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookGroup
import io.legado.app.databinding.ItemBookshelfListCompactBinding
import io.legado.app.databinding.ItemBookshelfListCompactGroupBinding
import io.legado.app.help.book.getBookTypeName
import io.legado.app.help.book.isLocal
import io.legado.app.help.config.AppConfig
import io.legado.app.utils.gone
@@ -138,6 +139,12 @@ class BooksAdapterListCompact(context: Context, callBack: CallBack) :
} else {
binding.cdUnread.gone()
}
if (AppConfig.showTip){
binding.cdTip.visible()
binding.tvTip.text = item.getBookTypeName()
} else {
binding.cdTip.gone()
}
}
}