diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/BookshelfConfigBottomSheet.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/BookshelfConfigBottomSheet.kt index ef93cf823..d75debb6c 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/BookshelfConfigBottomSheet.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/BookshelfConfigBottomSheet.kt @@ -3,9 +3,7 @@ package io.legato.kazusa.ui.main.bookshelf import android.content.res.Configuration import android.os.Bundle import android.view.View -import androidx.core.view.isVisible import androidx.fragment.app.activityViewModels -import androidx.transition.TransitionManager import com.google.android.material.chip.Chip import io.legato.kazusa.R import io.legato.kazusa.base.BaseBottomSheetDialogFragment @@ -81,10 +79,6 @@ class BookshelfConfigBottomSheet : BaseBottomSheetDialogFragment(R.layout.dialog chipGrid.isChecked = isGrid chipGridCompact.isChecked = isGridCompact chipGridCover.isChecked = isGridCover - - val showSlider = isGrid || isGridCompact || isGridCover - sliderText.isVisible = showSlider - sliderGridCount.isVisible = showSlider sliderGridCount.value = columnCount.toFloat() @@ -93,16 +87,6 @@ class BookshelfConfigBottomSheet : BaseBottomSheetDialogFragment(R.layout.dialog 1 -> binding.chipGroupOrder.check(binding.chipDesc.id) } - chipGroupLayout.setOnCheckedStateChangeListener { _, checkedIds -> - val checkedId = checkedIds.firstOrNull() - val showSlider = checkedId == R.id.chip_grid || - checkedId == R.id.chip_grid_compact || - checkedId == R.id.chip_grid_cover - TransitionManager.beginDelayedTransition(root) - sliderText.isVisible = showSlider - sliderGridCount.isVisible = showSlider - } - btnOk.setOnClickListener { var notifyMain = false var recreate = false diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BooksFragment.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BooksFragment.kt index e61b81c9a..b983f92e2 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BooksFragment.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BooksFragment.kt @@ -132,13 +132,8 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), binding.refreshLayout.isRefreshing = false activityViewModel.upToc(booksAdapter.getItems()) } - if (bookshelfLayoutMode == 0 ||bookshelfLayoutMode == 4) { - binding.rvBookshelf.layoutManager = LinearLayoutManager(context) - binding.rvBookshelf.setRecycledViewPool(activityViewModel.booksListRecycledViewPool) - } else { - binding.rvBookshelf.layoutManager = GridLayoutManager(context, bookshelfLayoutGrid) - binding.rvBookshelf.setRecycledViewPool(activityViewModel.booksGridRecycledViewPool) - } + binding.rvBookshelf.layoutManager = GridLayoutManager(context, bookshelfLayoutGrid) + binding.rvBookshelf.setRecycledViewPool(activityViewModel.booksGridRecycledViewPool) booksAdapter.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY binding.rvBookshelf.adapter = booksAdapter booksAdapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() { @@ -237,7 +232,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), private fun startLastUpdateTimeJob() { upLastUpdateTimeJob?.cancel() - if (!AppConfig.showLastUpdateTime || bookshelfLayoutMode != 0 ||bookshelfLayoutMode != 4) { + if (!AppConfig.showLastUpdateTime || (bookshelfLayoutMode != 0 && bookshelfLayoutMode != 4)) { return } upLastUpdateTimeJob = lifecycleScope.launch { @@ -271,6 +266,8 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), /** * 将 RecyclerView 中的视图全部回收到 RecycledViewPool 中 */ + upLastUpdateTimeJob?.cancel() + booksFlowJob?.cancel() binding.rvBookshelf.setItemViewCacheSize(0) binding.rvBookshelf.adapter = null } diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment2.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment2.kt index 6670b2846..07563a2af 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment2.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment2.kt @@ -116,11 +116,8 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2) binding.refreshLayout.isRefreshing = false activityViewModel.upToc(books) } - if (bookshelfLayoutMode == 0 || bookshelfLayoutMode == 4) { - binding.rvBookshelf.layoutManager = LinearLayoutManager(context) - } else { - binding.rvBookshelf.layoutManager = GridLayoutManager(context, bookshelfLayoutGrid) - } + + binding.rvBookshelf.layoutManager = GridLayoutManager(context, bookshelfLayoutGrid) binding.rvBookshelf.itemAnimator = null binding.rvBookshelf.adapter = booksAdapter booksAdapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() { diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleDefalut/BaseBooksAdapter.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleDefalut/BaseBooksAdapter.kt index 8870f2c39..3920b998f 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleDefalut/BaseBooksAdapter.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleDefalut/BaseBooksAdapter.kt @@ -16,8 +16,7 @@ abstract class BaseBooksAdapter(context: Context) : object : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: Book, newItem: Book): Boolean { - return oldItem.name == newItem.name - && oldItem.author == newItem.author + return oldItem.bookUrl == newItem.bookUrl } override fun areContentsTheSame(oldItem: Book, newItem: Book): Boolean { @@ -76,7 +75,7 @@ abstract class BaseBooksAdapter(context: Context) : fun notification(bookUrl: String) { getItems().forEachIndexed { i, it -> if (it.bookUrl == bookUrl) { - notifyItemChanged(i, bundleOf(Pair("refresh", null), Pair("lastUpdateTime", null))) + notifyItemChanged(i, bundleOf("refresh" to true, "lastUpdateTime" to true)) return } } diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt index d13bb173d..eb5083c70 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt @@ -88,9 +88,10 @@ class BooksAdapterList( val time = item.latestChapterTime.toTimeAgo() if (binding.tvLastUpdateTime.text != time) { binding.tvLastUpdateTime.text = time + binding.tvLastUpdateTime.isVisible = true } } else { - binding.tvLastUpdateTime.text = "" + binding.tvLastUpdateTime.isVisible = false } } diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleDefalut/BooksAdapterListCompact.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleDefalut/BooksAdapterListCompact.kt index 741673e04..79756fd6d 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleDefalut/BooksAdapterListCompact.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleDefalut/BooksAdapterListCompact.kt @@ -92,9 +92,10 @@ class BooksAdapterListCompact( val time = item.latestChapterTime.toTimeAgo() if (binding.tvLastUpdateTime.text != time) { binding.tvLastUpdateTime.text = time + binding.tvLastUpdateTime.isVisible = true } } else { - binding.tvLastUpdateTime.text = "" + binding.tvLastUpdateTime.isVisible = false } } diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleFold/BaseBooksAdapter.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleFold/BaseBooksAdapter.kt index d9acb4c94..d7940c9fc 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleFold/BaseBooksAdapter.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleFold/BaseBooksAdapter.kt @@ -22,8 +22,7 @@ abstract class BaseBooksAdapter( override fun areItemsTheSame(oldItem: Any, newItem: Any): Boolean { return when { oldItem is Book && newItem is Book -> { - oldItem.name == newItem.name - && oldItem.author == newItem.author + oldItem.bookUrl == newItem.bookUrl } oldItem is BookGroup && newItem is BookGroup -> { diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt index ac081587f..0a7733156 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt @@ -105,9 +105,10 @@ class BooksAdapterList(context: Context, callBack: CallBack) : val time = item.latestChapterTime.toTimeAgo() if (binding.tvLastUpdateTime.text != time) { binding.tvLastUpdateTime.text = time + binding.tvLastUpdateTime.visible() } } else { - binding.tvLastUpdateTime.text = "" + binding.tvLastUpdateTime.gone() } } diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleFold/BooksAdapterListCompact.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleFold/BooksAdapterListCompact.kt index 6ef992ebc..284336140 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleFold/BooksAdapterListCompact.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/styleFold/BooksAdapterListCompact.kt @@ -103,9 +103,10 @@ class BooksAdapterListCompact(context: Context, callBack: CallBack) : val time = item.latestChapterTime.toTimeAgo() if (binding.tvLastUpdateTime.text != time) { binding.tvLastUpdateTime.text = time + binding.tvLastUpdateTime.visible() } } else { - binding.tvLastUpdateTime.text = "" + binding.tvLastUpdateTime.gone() } } diff --git a/app/src/main/res/layout/dialog_bookshelf_config.xml b/app/src/main/res/layout/dialog_bookshelf_config.xml index 81ef7c153..7a2844624 100644 --- a/app/src/main/res/layout/dialog_bookshelf_config.xml +++ b/app/src/main/res/layout/dialog_bookshelf_config.xml @@ -207,35 +207,36 @@ app:chipSpacingVertical="0dp" app:selectionRequired="true" app:singleSelection="true" /> + + + + + + + + + + + - - - - - - - - - - diff --git a/app/src/main/res/layout/item_bookshelf_list.xml b/app/src/main/res/layout/item_bookshelf_list.xml index f056ca0dd..97681c627 100644 --- a/app/src/main/res/layout/item_bookshelf_list.xml +++ b/app/src/main/res/layout/item_bookshelf_list.xml @@ -155,10 +155,7 @@ android:singleLine="true" android:text="@string/text" android:textSize="13sp" - android:textColor="?attr/colorPrimary" - app:layout_constraintBottom_toTopOf="@id/iv_last" - app:layout_constraintStart_toEndOf="@+id/iv_last" - app:layout_constraintTop_toBottomOf="@+id/iv_last" /> + android:textColor="?attr/colorPrimary" /> + android:textSize="13sp" /> 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 a31721229..6aa2850bf 100644 --- a/app/src/main/res/layout/item_bookshelf_list_compact.xml +++ b/app/src/main/res/layout/item_bookshelf_list_compact.xml @@ -140,10 +140,7 @@ android:singleLine="true" android:text="@string/text" android:textSize="13sp" - android:textColor="?attr/colorSecondary" - app:layout_constraintBottom_toTopOf="@id/iv_last" - app:layout_constraintStart_toEndOf="@+id/iv_last" - app:layout_constraintTop_toBottomOf="@+id/iv_last" /> + android:textColor="?attr/colorSecondary" /> + android:textSize="13sp" />