Tune favourite categories list ui

This commit is contained in:
Koitharu
2022-07-13 10:43:51 +03:00
parent 334e08730e
commit 2595c11686
3 changed files with 19 additions and 7 deletions

View File

@@ -3,6 +3,8 @@ package org.koitharu.kotatsu.favourites.ui.categories
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.transition.Fade
import android.transition.TransitionManager
import android.view.Menu
import android.view.MenuItem
import android.view.View
@@ -22,6 +24,7 @@ import org.koitharu.kotatsu.base.ui.list.ListSelectionController
import org.koitharu.kotatsu.core.model.FavouriteCategory
import org.koitharu.kotatsu.databinding.ActivityCategoriesBinding
import org.koitharu.kotatsu.favourites.ui.FavouritesActivity
import org.koitharu.kotatsu.favourites.ui.categories.adapter.CategoriesAdapter
import org.koitharu.kotatsu.favourites.ui.categories.edit.FavouritesCategoryEditActivity
import org.koitharu.kotatsu.list.ui.adapter.ListStateHolderListener
import org.koitharu.kotatsu.list.ui.model.ListModel
@@ -144,6 +147,10 @@ class FavouriteCategoriesActivity :
}
private fun onReorderModeChanged(isReorderMode: Boolean) {
val transition = Fade().apply {
duration = resources.getInteger(android.R.integer.config_shortAnimTime).toLong()
}
TransitionManager.beginDelayedTransition(binding.toolbar, transition)
reorderHelper?.attachToRecyclerView(null)
reorderHelper = if (isReorderMode) {
selectionController.clear()

View File

@@ -1,11 +1,10 @@
package org.koitharu.kotatsu.favourites.ui.categories
package org.koitharu.kotatsu.favourites.ui.categories.adapter
import androidx.lifecycle.LifecycleOwner
import androidx.recyclerview.widget.DiffUtil
import coil.ImageLoader
import com.hannesdorfmann.adapterdelegates4.AsyncListDifferDelegationAdapter
import org.koitharu.kotatsu.favourites.ui.categories.adapter.CategoryListModel
import org.koitharu.kotatsu.favourites.ui.categories.adapter.categoryAD
import org.koitharu.kotatsu.favourites.ui.categories.FavouriteCategoriesListListener
import org.koitharu.kotatsu.list.ui.adapter.ListStateHolderListener
import org.koitharu.kotatsu.list.ui.adapter.emptyStateListAD
import org.koitharu.kotatsu.list.ui.adapter.loadingStateAD
@@ -43,7 +42,11 @@ class CategoriesAdapter(
override fun getChangePayload(oldItem: ListModel, newItem: ListModel): Any? {
return when {
oldItem is CategoryListModel && newItem is CategoryListModel -> {
if (oldItem.isReorderMode != newItem.isReorderMode) {
if (oldItem.category == newItem.category &&
oldItem.mangaCount == newItem.mangaCount &&
oldItem.covers == newItem.covers &&
oldItem.isReorderMode != newItem.isReorderMode
) {
Unit
} else {
super.getChangePayload(oldItem, newItem)

View File

@@ -57,9 +57,12 @@ fun categoryAD(
itemView.setOnLongClickListener(eventListener)
itemView.setOnTouchListener(eventListener)
bind {
imageRequests.forEach { it?.dispose() }
bind { payloads ->
binding.imageViewHandle.isVisible = item.isReorderMode
if (payloads.isNotEmpty()) {
return@bind
}
imageRequests.forEach { it?.dispose() }
binding.textViewTitle.text = item.category.title
binding.textViewSubtitle.text = if (item.mangaCount == 0) {
getString(R.string.empty)
@@ -73,7 +76,6 @@ fun categoryAD(
repeat(coverViews.size) { i ->
imageRequests[i] = coverViews[i].newImageRequest(item.covers.getOrNull(i))
.placeholder(R.drawable.ic_placeholder)
.crossfade(crossFadeDuration * (i + 1))
.fallback(fallback)
.error(R.drawable.ic_placeholder)
.allowRgb565(isLowRamDevice(context))