Tune favourite categories list ui

pull/163/head
Koitharu 4 years ago
parent 334e08730e
commit 2595c11686
No known key found for this signature in database
GPG Key ID: 8E861F8CE6E7CE27

@ -3,6 +3,8 @@ package org.koitharu.kotatsu.favourites.ui.categories
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.transition.Fade
import android.transition.TransitionManager
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View 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.core.model.FavouriteCategory
import org.koitharu.kotatsu.databinding.ActivityCategoriesBinding import org.koitharu.kotatsu.databinding.ActivityCategoriesBinding
import org.koitharu.kotatsu.favourites.ui.FavouritesActivity 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.favourites.ui.categories.edit.FavouritesCategoryEditActivity
import org.koitharu.kotatsu.list.ui.adapter.ListStateHolderListener import org.koitharu.kotatsu.list.ui.adapter.ListStateHolderListener
import org.koitharu.kotatsu.list.ui.model.ListModel import org.koitharu.kotatsu.list.ui.model.ListModel
@ -144,6 +147,10 @@ class FavouriteCategoriesActivity :
} }
private fun onReorderModeChanged(isReorderMode: Boolean) { 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?.attachToRecyclerView(null)
reorderHelper = if (isReorderMode) { reorderHelper = if (isReorderMode) {
selectionController.clear() selectionController.clear()

@ -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.lifecycle.LifecycleOwner
import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.DiffUtil
import coil.ImageLoader import coil.ImageLoader
import com.hannesdorfmann.adapterdelegates4.AsyncListDifferDelegationAdapter import com.hannesdorfmann.adapterdelegates4.AsyncListDifferDelegationAdapter
import org.koitharu.kotatsu.favourites.ui.categories.adapter.CategoryListModel import org.koitharu.kotatsu.favourites.ui.categories.FavouriteCategoriesListListener
import org.koitharu.kotatsu.favourites.ui.categories.adapter.categoryAD
import org.koitharu.kotatsu.list.ui.adapter.ListStateHolderListener import org.koitharu.kotatsu.list.ui.adapter.ListStateHolderListener
import org.koitharu.kotatsu.list.ui.adapter.emptyStateListAD import org.koitharu.kotatsu.list.ui.adapter.emptyStateListAD
import org.koitharu.kotatsu.list.ui.adapter.loadingStateAD import org.koitharu.kotatsu.list.ui.adapter.loadingStateAD
@ -43,7 +42,11 @@ class CategoriesAdapter(
override fun getChangePayload(oldItem: ListModel, newItem: ListModel): Any? { override fun getChangePayload(oldItem: ListModel, newItem: ListModel): Any? {
return when { return when {
oldItem is CategoryListModel && newItem is CategoryListModel -> { 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 Unit
} else { } else {
super.getChangePayload(oldItem, newItem) super.getChangePayload(oldItem, newItem)

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

Loading…
Cancel
Save