Преглед на файлове

新增书架新章节标记与相关设置 #384

HapeLee преди 11 месеца
родител
ревизия
d51b0a3199
променени са 20 файла, в които са добавени 157 реда и са изтрити 47 реда
  1. 1 0
      app/src/main/java/io/legado/app/constant/PreferKey.kt
  2. 6 0
      app/src/main/java/io/legado/app/help/config/AppConfig.kt
  3. 5 0
      app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigBottomSheet.kt
  4. 4 0
      app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGrid.kt
  5. 3 0
      app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGridCompact.kt
  6. 3 0
      app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterGridCover.kt
  7. 2 0
      app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt
  8. 2 0
      app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterListCompact.kt
  9. 3 0
      app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGrid.kt
  10. 3 0
      app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGridCompact.kt
  11. 3 0
      app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGridCover.kt
  12. 3 0
      app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt
  13. 3 0
      app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterListCompact.kt
  14. 6 0
      app/src/main/res/layout/dialog_bookshelf_config.xml
  15. 25 10
      app/src/main/res/layout/item_bookshelf_grid.xml
  16. 29 13
      app/src/main/res/layout/item_bookshelf_grid_compact.xml
  17. 27 12
      app/src/main/res/layout/item_bookshelf_list.xml
  18. 27 12
      app/src/main/res/layout/item_bookshelf_list_compact.xml
  19. 1 0
      app/src/main/res/values-zh/strings.xml
  20. 1 0
      app/src/main/res/values/strings.xml

+ 1 - 0
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"

+ 6 - 0
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) {

+ 5 - 0
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, "")

+ 4 - 0
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()

+ 3 - 0
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
                 }

+ 3 - 0
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
                 }

+ 2 - 0
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()
                 }

+ 2 - 0
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()
                 }

+ 3 - 0
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
                     }

+ 3 - 0
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
                     }

+ 3 - 0
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
                     }

+ 3 - 0
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()
                     }

+ 3 - 0
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()
                     }

+ 6 - 0
app/src/main/res/layout/dialog_bookshelf_config.xml

@@ -48,6 +48,12 @@
                 android:layout_height="wrap_content"
                 android:text="@string/show_unread" />
 
+            <com.google.android.material.materialswitch.MaterialSwitch
+                android:id="@+id/sw_show_unread_new"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/show_unread_new" />
+
             <com.google.android.material.materialswitch.MaterialSwitch
                 android:id="@+id/sw_show_last_update_time"
                 android:layout_width="match_parent"

+ 25 - 10
app/src/main/res/layout/item_bookshelf_grid.xml

@@ -64,17 +64,32 @@
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintTop_toTopOf="parent">
 
-                    <TextView
-                        android:id="@+id/tv_unread"
-                        android:layout_width="wrap_content"
+                    <LinearLayout
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:textColor="?attr/colorOnSecondary"
-                        android:textSize="10sp"
-                        android:padding="4dp"
-                        android:textStyle="bold"
-                        android:includeFontPadding="false"
-                        tools:text="5"
-                        tools:ignore="SmallSp" />
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal">
+
+                        <com.google.android.material.circularreveal.cardview.CircularRevealCardView
+                            android:id="@+id/new_chapter"
+                            android:layout_width="8dp"
+                            android:layout_height="8dp"
+                            android:layout_marginStart="4dp"
+                            app:strokeWidth="0dp"
+                            app:cardBackgroundColor="?attr/colorSecondaryContainer" />
+
+                        <TextView
+                            android:id="@+id/tv_unread"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:textColor="?attr/colorOnSecondary"
+                            android:textSize="9sp"
+                            android:padding="4dp"
+                            android:textStyle="bold"
+                            android:includeFontPadding="false"
+                            tools:text="5"
+                            tools:ignore="SmallSp" />
+                    </LinearLayout>
 
                 </com.google.android.material.card.MaterialCardView>
 

+ 29 - 13
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">
 
-                <TextView
-                    android:id="@+id/tv_unread"
-                    android:layout_width="wrap_content"
+                <LinearLayout
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:includeFontPadding="false"
-                    android:padding="4dp"
-                    android:textColor="?attr/colorOnSecondary"
-                    android:textSize="10sp"
-                    android:textStyle="bold"
-                    tools:ignore="SmallSp"
-                    tools:text="5" />
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal">
+
+                    <com.google.android.material.circularreveal.cardview.CircularRevealCardView
+                        android:id="@+id/new_chapter"
+                        android:layout_width="8dp"
+                        android:layout_height="8dp"
+                        android:layout_marginStart="4dp"
+                        app:strokeWidth="0dp"
+                        app:cardBackgroundColor="?attr/colorSecondaryContainer" />
+
+                    <TextView
+                        android:id="@+id/tv_unread"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textColor="?attr/colorOnSecondary"
+                        android:textSize="9sp"
+                        android:padding="4dp"
+                        android:textStyle="bold"
+                        android:includeFontPadding="false"
+                        tools:text="5"
+                        tools:ignore="SmallSp" />
+                </LinearLayout>
+
             </com.google.android.material.card.MaterialCardView>
 
             <TextView

+ 27 - 12
app/src/main/res/layout/item_bookshelf_list.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">
 
-                    <TextView
-                        android:id="@+id/tv_unread"
-                        android:layout_width="wrap_content"
+                    <LinearLayout
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:textColor="?attr/colorOnSecondary"
-                        android:textSize="10sp"
-                        android:padding="4dp"
-                        android:textStyle="bold"
-                        android:includeFontPadding="false"
-                        tools:text="5"
-                        tools:ignore="SmallSp" />
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal">
+
+                        <com.google.android.material.circularreveal.cardview.CircularRevealCardView
+                            android:id="@+id/new_chapter"
+                            android:layout_width="8dp"
+                            android:layout_height="8dp"
+                            android:layout_marginStart="4dp"
+                            app:strokeWidth="0dp"
+                            app:cardBackgroundColor="?attr/colorSecondaryContainer" />
+
+                        <TextView
+                            android:id="@+id/tv_unread"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:textColor="?attr/colorOnSecondary"
+                            android:textSize="9sp"
+                            android:padding="4dp"
+                            android:textStyle="bold"
+                            android:includeFontPadding="false"
+                            tools:text="5"
+                            tools:ignore="SmallSp" />
+                    </LinearLayout>
 
                 </com.google.android.material.card.MaterialCardView>
 

+ 27 - 12
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">
 
-                    <TextView
-                        android:id="@+id/tv_unread"
-                        android:layout_width="wrap_content"
+                    <LinearLayout
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:textColor="?attr/colorOnSecondary"
-                        android:textSize="9sp"
-                        android:padding="3dp"
-                        android:textStyle="bold"
-                        android:includeFontPadding="false"
-                        tools:text="5"
-                        tools:ignore="SmallSp" />
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal">
+
+                        <com.google.android.material.circularreveal.cardview.CircularRevealCardView
+                            android:id="@+id/new_chapter"
+                            android:layout_width="8dp"
+                            android:layout_height="8dp"
+                            android:layout_marginStart="4dp"
+                            app:strokeWidth="0dp"
+                            app:cardBackgroundColor="?attr/colorSecondaryContainer" />
+
+                        <TextView
+                            android:id="@+id/tv_unread"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:textColor="?attr/colorOnSecondary"
+                            android:textSize="9sp"
+                            android:padding="4dp"
+                            android:textStyle="bold"
+                            android:includeFontPadding="false"
+                            tools:text="5"
+                            tools:ignore="SmallSp" />
+                    </LinearLayout>
 
                 </com.google.android.material.card.MaterialCardView>
 

+ 1 - 0
app/src/main/res/values-zh/strings.xml

@@ -1347,4 +1347,5 @@
     <string name="replace_purify_badge">计数替换净化</string>
     <string name="page_anim_fade">渐变</string>
     <string name="show_bookshelf_tab_menu">显示更多分组按钮</string>
+    <string name="show_unread_new">显示新章节更新标志</string>
 </resources>

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -1350,4 +1350,5 @@
     <string name="replace_purify_badge">计数替换净化</string>
     <string name="page_anim_fade">渐变</string>
     <string name="show_bookshelf_tab_menu">显示更多分组按钮</string>
+    <string name="show_unread_new">显示新章节更新标志</string>
 </resources>