From fca53eee7ae531f59a8e211cdaaa3c3a64d93245 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 18 Oct 2023 09:40:31 +0300 Subject: [PATCH] Improve downloads list --- .../kotatsu/download/ui/list/DownloadItemAD.kt | 6 ++++++ .../download/ui/list/DownloadItemModel.kt | 18 ++++++------------ app/src/main/res/layout/item_download.xml | 13 ++++++++++--- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadItemAD.kt b/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadItemAD.kt index 1cc1d10cd..1bd21fa6e 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadItemAD.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadItemAD.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.download.ui.list +import android.transition.TransitionManager import android.view.View import androidx.core.content.ContextCompat import androidx.core.view.isVisible @@ -14,12 +15,14 @@ import org.koitharu.kotatsu.core.ui.BaseListAdapter import org.koitharu.kotatsu.core.ui.image.TrimTransformation import org.koitharu.kotatsu.core.util.ext.drawableEnd import org.koitharu.kotatsu.core.util.ext.enqueueWith +import org.koitharu.kotatsu.core.util.ext.isAnimationsEnabled import org.koitharu.kotatsu.core.util.ext.newImageRequest import org.koitharu.kotatsu.core.util.ext.source import org.koitharu.kotatsu.core.util.ext.textAndVisible import org.koitharu.kotatsu.databinding.ItemDownloadBinding import org.koitharu.kotatsu.download.ui.list.chapters.DownloadChapter import org.koitharu.kotatsu.download.ui.list.chapters.downloadChapterAD +import org.koitharu.kotatsu.list.ui.ListModelDiffCallback import org.koitharu.kotatsu.list.ui.adapter.ListItemType import org.koitharu.kotatsu.list.ui.model.ListModel import org.koitharu.kotatsu.parsers.util.format @@ -60,6 +63,9 @@ fun downloadItemAD( binding.recyclerViewChapters.adapter = chaptersAdapter bind { payloads -> + if (ListModelDiffCallback.PAYLOAD_CHECKED_CHANGED in payloads && context.isAnimationsEnabled) { + TransitionManager.beginDelayedTransition(binding.constraintLayout) + } binding.textViewTitle.text = item.manga.title binding.imageViewCover.newImageRequest(lifecycleOwner, item.manga.coverUrl)?.apply { placeholder(R.drawable.ic_placeholder) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadItemModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadItemModel.kt index 8cad3b244..5ec1aa784 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadItemModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadItemModel.kt @@ -3,6 +3,7 @@ package org.koitharu.kotatsu.download.ui.list import android.text.format.DateUtils import androidx.work.WorkInfo import org.koitharu.kotatsu.download.ui.list.chapters.DownloadChapter +import org.koitharu.kotatsu.list.ui.ListModelDiffCallback import org.koitharu.kotatsu.list.ui.model.ListModel import org.koitharu.kotatsu.parsers.model.Manga import java.util.Date @@ -57,17 +58,10 @@ data class DownloadItemModel( return other is DownloadItemModel && other.id == id } - override fun getChangePayload(previousState: ListModel): Any? { - return when (previousState) { - is DownloadItemModel -> { - if (workState == previousState.workState) { - Unit - } else { - null - } - } - - else -> super.getChangePayload(previousState) - } + override fun getChangePayload(previousState: ListModel): Any? = when { + previousState !is DownloadItemModel -> super.getChangePayload(previousState) + workState != previousState.workState -> null + isExpanded != previousState.isExpanded -> ListModelDiffCallback.PAYLOAD_CHECKED_CHANGED + else -> ListModelDiffCallback.PAYLOAD_ANYTHING_CHANGED } } diff --git a/app/src/main/res/layout/item_download.xml b/app/src/main/res/layout/item_download.xml index f9f060cb3..d74911047 100644 --- a/app/src/main/res/layout/item_download.xml +++ b/app/src/main/res/layout/item_download.xml @@ -8,6 +8,7 @@ android:layout_height="wrap_content"> @@ -106,10 +107,12 @@ @@ -117,8 +120,12 @@ + android:layout_height="match_parent" + android:orientation="vertical" + android:scrollbars="vertical" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" + tools:itemCount="200" + tools:listitem="@layout/item_chapter_download" />