diff --git a/app/src/main/java/io/legado/app/constant/PreferKey.kt b/app/src/main/java/io/legado/app/constant/PreferKey.kt index 271bcdfc0..583db0577 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -226,4 +226,6 @@ object PreferKey { const val exploreLayoutState = "exploreLayoutState" const val defaultSourceChangeAll = "defaultSourceChangeAll" + + const val showTip = "showTip" } diff --git a/app/src/main/java/io/legado/app/help/book/BookExtensions.kt b/app/src/main/java/io/legado/app/help/book/BookExtensions.kt index 47d088651..d97b2b937 100644 --- a/app/src/main/java/io/legado/app/help/book/BookExtensions.kt +++ b/app/src/main/java/io/legado/app/help/book/BookExtensions.kt @@ -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 diff --git a/app/src/main/java/io/legado/app/help/config/AppConfig.kt b/app/src/main/java/io/legado/app/help/config/AppConfig.kt index 1f5702901..03837015c 100644 --- a/app/src/main/java/io/legado/app/help/config/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/AppConfig.kt @@ -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) { diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigBottomSheet.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigBottomSheet.kt index a04265ccc..03be5771e 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigBottomSheet.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigBottomSheet.kt @@ -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, "") diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGrid.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGrid.kt index 18bcb0b07..53c8e8b80 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGrid.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGrid.kt @@ -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() + } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGridCompact.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGridCompact.kt index 4a922983c..1fd375e23 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGridCompact.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGridCompact.kt @@ -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(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() + } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGridCover.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGridCover.kt index 0470d154b..6c0aec437 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGridCover.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGridCover.kt @@ -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(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() + } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt index 35833c937..62ffc85b9 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt @@ -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() + } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterListCompact.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterListCompact.kt index 0303d61a2..f101827b8 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterListCompact.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterListCompact.kt @@ -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() + } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGrid.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGrid.kt index 933706618..ab126977c 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGrid.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGrid.kt @@ -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() + } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGridCompact.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGridCompact.kt index 2b312f84d..9a95801f6 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGridCompact.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGridCompact.kt @@ -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() + } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGridCover.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGridCover.kt index 06ba98d1f..91ea13d2f 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGridCover.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGridCover.kt @@ -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() + } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt index e960f35b3..671dab6d8 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt @@ -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() + } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterListCompact.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterListCompact.kt index 2f9b179e0..dc7c6b952 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterListCompact.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterListCompact.kt @@ -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() + } } } diff --git a/app/src/main/res/layout/dialog_bookshelf_config.xml b/app/src/main/res/layout/dialog_bookshelf_config.xml index 359098fa9..c04792218 100644 --- a/app/src/main/res/layout/dialog_bookshelf_config.xml +++ b/app/src/main/res/layout/dialog_bookshelf_config.xml @@ -54,6 +54,12 @@ android:layout_height="wrap_content" android:text="@string/show_unread_new" /> + + + + + + + + diff --git a/app/src/main/res/layout/item_bookshelf_grid_compact.xml b/app/src/main/res/layout/item_bookshelf_grid_compact.xml index cdabbc76b..b79210a12 100644 --- a/app/src/main/res/layout/item_bookshelf_grid_compact.xml +++ b/app/src/main/res/layout/item_bookshelf_grid_compact.xml @@ -7,23 +7,22 @@ app:cardBackgroundColor="@android:color/transparent" app:strokeWidth="0dp"> - + android:clickable="true" + android:focusable="true" + android:layout_marginHorizontal="8dp" + android:layout_marginTop="2dp" + android:layout_marginBottom="12dp" + app:cardBackgroundColor="@android:color/transparent" + app:cardCornerRadius="6dp" + app:strokeWidth="0dp"> - + android:layout_height="match_parent"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + android:visibility="invisible" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + app:strokeWidth="0dp" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toEndOf="parent"> @@ -65,8 +69,8 @@ android:id="@+id/new_chapter" android:layout_width="6dp" android:layout_height="6dp" - android:visibility="gone" android:layout_marginStart="6dp" + android:visibility="gone" app:strokeWidth="0dp" app:cardBackgroundColor="?attr/colorSecondaryContainer" /> @@ -74,9 +78,9 @@ android:id="@+id/tv_unread" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:padding="4dp" android:textColor="?attr/colorOnSecondary" android:textSize="9sp" - android:padding="4dp" android:textStyle="bold" android:includeFontPadding="false" tools:text="5" @@ -85,25 +89,52 @@ + + + + + + - + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> - + + + - diff --git a/app/src/main/res/layout/item_bookshelf_list.xml b/app/src/main/res/layout/item_bookshelf_list.xml index bc20389df..96f85cd39 100644 --- a/app/src/main/res/layout/item_bookshelf_list.xml +++ b/app/src/main/res/layout/item_bookshelf_list.xml @@ -98,6 +98,32 @@ + + + + + + diff --git a/app/src/main/res/layout/item_bookshelf_list_compact.xml b/app/src/main/res/layout/item_bookshelf_list_compact.xml index 8582cbca1..5f514dcf1 100644 --- a/app/src/main/res/layout/item_bookshelf_list_compact.xml +++ b/app/src/main/res/layout/item_bookshelf_list_compact.xml @@ -98,6 +98,32 @@ + + + + + + diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index e68790bf6..3b5a438e1 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1350,4 +1350,5 @@ 显示新章节更新标志 换源按钮默认弹出整书换源 反之则默认弹出单章换源 + 显示书籍类型 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3a7e96d30..9d95e3c75 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1353,4 +1353,5 @@ 显示新章节更新标志 换源按钮默认弹出整书换源 反之则默认弹出单章换源 + 显示书籍类型