From d51b0a3199922b1011262ec7a400114d3288d253 Mon Sep 17 00:00:00 2001
From: HapeLee <1321903405@qq.com>
Date: Thu, 27 Nov 2025 00:00:13 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B9=A6=E6=9E=B6=E6=96=B0?=
=?UTF-8?q?=E7=AB=A0=E8=8A=82=E6=A0=87=E8=AE=B0=E4=B8=8E=E7=9B=B8=E5=85=B3?=
=?UTF-8?q?=E8=AE=BE=E7=BD=AE=20#384?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/io/legado/app/constant/PreferKey.kt | 1 +
.../io/legado/app/help/config/AppConfig.kt | 6 +++
.../bookshelf/BookshelfConfigBottomSheet.kt | 5 +++
.../books/styleDefalut/BooksAdapterGrid.kt | 4 ++
.../styleDefalut/BooksAdapterGridCompact.kt | 3 ++
.../styleDefalut/BooksAdapterGridCover.kt | 3 ++
.../books/styleDefalut/BooksAdapterList.kt | 2 +
.../styleDefalut/BooksAdapterListCompact.kt | 2 +
.../books/styleFold/BooksAdapterGrid.kt | 3 ++
.../styleFold/BooksAdapterGridCompact.kt | 3 ++
.../books/styleFold/BooksAdapterGridCover.kt | 3 ++
.../books/styleFold/BooksAdapterList.kt | 3 ++
.../styleFold/BooksAdapterListCompact.kt | 3 ++
.../res/layout/dialog_bookshelf_config.xml | 6 +++
.../main/res/layout/item_bookshelf_grid.xml | 35 +++++++++++-----
.../layout/item_bookshelf_grid_compact.xml | 42 +++++++++++++------
.../main/res/layout/item_bookshelf_list.xml | 39 +++++++++++------
.../layout/item_bookshelf_list_compact.xml | 39 +++++++++++------
app/src/main/res/values-zh/strings.xml | 1 +
app/src/main/res/values/strings.xml | 1 +
20 files changed, 157 insertions(+), 47 deletions(-)
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 @@
计数替换净化
渐变
显示更多分组按钮
+ 显示新章节更新标志