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 deed02a2b..658734132 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -7,6 +7,7 @@ object PreferKey { const val themeMode = "themeMode" const val userAgent = "userAgent" const val showUnread = "showUnread" + const val showUnreadNew = "showUnreadNew" const val bookGroupStyle = "bookGroupStyle" const val useDefaultCover = "useDefaultCover" const val loadCoverOnlyWifi = "loadCoverOnlyWifi" 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 3ba2cd90b..804590bea 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 showUnreadNew: Boolean + get() = appCtx.getPrefBoolean(PreferKey.showUnreadNew, true) + set(value) { + appCtx.putPrefBoolean(PreferKey.showUnreadNew, value) + } + var showLastUpdateTime: Boolean get() = appCtx.getPrefBoolean(PreferKey.showLastUpdateTime, false) 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 ef2463123..a04265ccc 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 @@ -64,6 +64,7 @@ class BookshelfConfigBottomSheet : BaseBottomSheetDialogFragment(R.layout.dialog } swShowUnread.isChecked = AppConfig.showUnread + swShowUnreadNew.isChecked = AppConfig.showUnreadNew swShowLastUpdateTime.isChecked = AppConfig.showLastUpdateTime swShowWaitUpBooks.isChecked = AppConfig.showWaitUpCount swShowBookshelfFastScroller.isChecked = AppConfig.showBookshelfFastScroller @@ -119,6 +120,10 @@ class BookshelfConfigBottomSheet : BaseBottomSheetDialogFragment(R.layout.dialog AppConfig.showUnread = swShowUnread.isChecked postEvent(EventBus.BOOKSHELF_REFRESH, "") } + if (AppConfig.showUnreadNew != swShowUnreadNew.isChecked) { + AppConfig.showUnreadNew = swShowUnreadNew.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 b97995078..18bcb0b07 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 @@ -3,6 +3,7 @@ package io.legado.app.ui.main.bookshelf.books.styleDefalut import android.content.Context import android.os.Bundle import android.view.ViewGroup +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 @@ -53,8 +54,11 @@ class BooksAdapterGrid(context: Context, private val callBack: CallBack) : if (unreadCount > 0) { binding.cdUnread.visible() binding.tvUnread.text = unreadCount.toString() + if (AppConfig.showUnreadNew) + binding.newChapter.isVisible = item.lastCheckCount > 0 } else { binding.cdUnread.gone() + binding.newChapter.gone() } } else { binding.cdUnread.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 fdaa08ea9..682ce2f5f 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 @@ -4,6 +4,7 @@ import android.content.Context import android.os.Bundle import android.view.View import android.view.ViewGroup +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 @@ -59,6 +60,8 @@ class BooksAdapterGridCompact(context: Context, private val callBack: CallBack) if (unreadCount > 0) { binding.cdUnread.visibility = View.VISIBLE binding.tvUnread.text = unreadCount.toString() + if (AppConfig.showUnreadNew) + binding.newChapter.isVisible = item.lastCheckCount > 0 } else { binding.cdUnread.visibility = View.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 fc520ddbf..ffb2400ca 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 @@ -4,6 +4,7 @@ import android.content.Context import android.os.Bundle import android.view.View import android.view.ViewGroup +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 @@ -60,6 +61,8 @@ class BooksAdapterGridCover(context: Context, private val callBack: CallBack) : if (unreadCount > 0) { binding.cdUnread.visibility = View.VISIBLE binding.tvUnread.text = unreadCount.toString() + if (AppConfig.showUnreadNew) + binding.newChapter.isVisible = item.lastCheckCount > 0 } else { binding.cdUnread.visibility = View.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 72f3dfc98..99d6961a4 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 @@ -79,6 +79,8 @@ class BooksAdapterList( if (unreadCount > 0) { binding.cdUnread.visible() binding.tvUnread.text = unreadCount.toString() + if (AppConfig.showUnreadNew) + binding.newChapter.isVisible = item.lastCheckCount > 0 } else { binding.cdUnread.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 0b6413acb..92fbcd8ba 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 @@ -83,6 +83,8 @@ class BooksAdapterListCompact( if (unreadCount > 0) { binding.cdUnread.visible() binding.tvUnread.text = unreadCount.toString() + if (AppConfig.showUnreadNew) + binding.newChapter.isVisible = item.lastCheckCount > 0 } else { binding.cdUnread.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 b820a34d8..933706618 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 @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat +import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import io.legado.app.R import io.legado.app.data.entities.Book @@ -110,6 +111,8 @@ class BooksAdapterGrid(context: Context, callBack: CallBack) : if (unreadCount > 0) { binding.cdUnread.visibility = View.VISIBLE binding.tvUnread.text = unreadCount.toString() + if (AppConfig.showUnreadNew) + binding.newChapter.isVisible = item.lastCheckCount > 0 } else { binding.cdUnread.visibility = View.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 dbe9c8fe5..2b312f84d 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 @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat +import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import io.legado.app.R import io.legado.app.data.entities.Book @@ -117,6 +118,8 @@ class BooksAdapterGridCompact(context: Context, callBack: CallBack) : if (unreadCount > 0) { binding.cdUnread.visibility = View.VISIBLE binding.tvUnread.text = unreadCount.toString() + if (AppConfig.showUnreadNew) + binding.newChapter.isVisible = item.lastCheckCount > 0 } else { binding.cdUnread.visibility = View.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 4537c0576..06ba98d1f 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 @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat +import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import io.legado.app.R import io.legado.app.data.entities.Book @@ -117,6 +118,8 @@ class BooksAdapterGridCover(context: Context, callBack: CallBack) : if (unreadCount > 0) { binding.cdUnread.visibility = View.VISIBLE binding.tvUnread.text = unreadCount.toString() + if (AppConfig.showUnreadNew) + binding.newChapter.isVisible = item.lastCheckCount > 0 } else { binding.cdUnread.visibility = View.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 58d988b88..e960f35b3 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 @@ -4,6 +4,7 @@ import android.content.Context import android.os.Bundle import android.view.ViewGroup import androidx.core.content.ContextCompat +import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import io.legado.app.R import io.legado.app.data.entities.Book @@ -131,6 +132,8 @@ class BooksAdapterList(context: Context, callBack: CallBack) : if (unreadCount > 0) { binding.cdUnread.visible() binding.tvUnread.text = unreadCount.toString() + if (AppConfig.showUnreadNew) + binding.newChapter.isVisible = item.lastCheckCount > 0 } else { binding.cdUnread.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 998e254dd..2f9b179e0 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 @@ -4,6 +4,7 @@ import android.content.Context import android.os.Bundle import android.view.ViewGroup import androidx.core.content.ContextCompat +import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import io.legado.app.R import io.legado.app.data.entities.Book @@ -129,6 +130,8 @@ class BooksAdapterListCompact(context: Context, callBack: CallBack) : if (unreadCount > 0) { binding.cdUnread.visible() binding.tvUnread.text = unreadCount.toString() + if (AppConfig.showUnreadNew) + binding.newChapter.isVisible = item.lastCheckCount > 0 } else { binding.cdUnread.gone() } diff --git a/app/src/main/res/layout/dialog_bookshelf_config.xml b/app/src/main/res/layout/dialog_bookshelf_config.xml index 60b7a6d1a..359098fa9 100644 --- a/app/src/main/res/layout/dialog_bookshelf_config.xml +++ b/app/src/main/res/layout/dialog_bookshelf_config.xml @@ -48,6 +48,12 @@ android:layout_height="wrap_content" android:text="@string/show_unread" /> + + - + android:gravity="center_vertical" + android:orientation="horizontal"> + + + + + 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 21507e1ab..96effd88d 100644 --- a/app/src/main/res/layout/item_bookshelf_grid_compact.xml +++ b/app/src/main/res/layout/item_bookshelf_grid_compact.xml @@ -48,24 +48,40 @@ android:id="@+id/cd_unread" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="top|end" android:layout_margin="4dp" android:visibility="visible" - app:cardBackgroundColor="?attr/colorSecondaryVariant" app:cardCornerRadius="4dp" - app:strokeWidth="0dp"> + app:strokeWidth="0dp" + app:cardBackgroundColor="?attr/colorSecondaryVariant" + android:layout_gravity="end|top"> - + android:gravity="center_vertical" + android:orientation="horizontal"> + + + + + + + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent"> - + android:gravity="center_vertical" + android:orientation="horizontal"> + + + + + 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 a874d654e..a03cc0ec0 100644 --- a/app/src/main/res/layout/item_bookshelf_list_compact.xml +++ b/app/src/main/res/layout/item_bookshelf_list_compact.xml @@ -64,20 +64,35 @@ app:cardCornerRadius="4dp" app:strokeWidth="0dp" app:cardBackgroundColor="?attr/colorSecondaryVariant" - app:layout_constraintTop_toTopOf="@id/iv_cover" - app:layout_constraintEnd_toEndOf="@id/iv_cover"> + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent"> - + android:gravity="center_vertical" + android:orientation="horizontal"> + + + + + diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 11498c1d3..e03c48aca 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1347,4 +1347,5 @@ 计数替换净化 渐变 显示更多分组按钮 + 显示新章节更新标志 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f3b6c0659..cdf8b9a65 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1350,4 +1350,5 @@ 计数替换净化 渐变 显示更多分组按钮 + 显示新章节更新标志