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 e2150152a..9c475d438 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 @@ -7,6 +7,7 @@ import androidx.work.WorkInfo import coil.ImageLoader import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding import org.koitharu.kotatsu.R +import org.koitharu.kotatsu.core.ui.image.TrimTransformation import org.koitharu.kotatsu.core.util.ext.disposeImageRequest import org.koitharu.kotatsu.core.util.ext.enqueueWith import org.koitharu.kotatsu.core.util.ext.newImageRequest @@ -53,6 +54,7 @@ fun downloadItemAD( fallback(R.drawable.ic_placeholder) error(R.drawable.ic_error_placeholder) allowRgb565(true) + transformations(TrimTransformation()) source(item.manga.source) enqueueWith(coil) } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadsViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadsViewModel.kt index f4add9ac5..af02a056d 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadsViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/download/ui/list/DownloadsViewModel.kt @@ -32,6 +32,7 @@ import org.koitharu.kotatsu.list.ui.model.LoadingState import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.util.mapToSet import java.util.Date +import java.util.LinkedList import java.util.UUID import java.util.concurrent.TimeUnit import javax.inject.Inject @@ -181,16 +182,34 @@ class DownloadsViewModel @Inject constructor( if (isEmpty()) { return emptyStateList() } - val destination = ArrayList((size * 1.4).toInt()) + val queued = LinkedList() + val running = LinkedList() + val destination = ArrayDeque((size * 1.4).toInt()) var prevDate: DateTimeAgo? = null for (item in this) { - val date = timeAgo(item.timestamp) - if (prevDate != date) { - destination += ListHeader(date) + when (item.workState) { + WorkInfo.State.RUNNING -> running += item + WorkInfo.State.BLOCKED, + WorkInfo.State.ENQUEUED -> queued += item + + else -> { + val date = timeAgo(item.timestamp) + if (prevDate != date) { + destination += ListHeader(date) + } + prevDate = date + destination += item + } } - prevDate = date - destination += item } + if (running.isNotEmpty()) { + running.addFirst(ListHeader(R.string.in_progress)) + } + destination.addAll(0, running) + if (queued.isNotEmpty()) { + queued.addFirst(ListHeader(R.string.queued)) + } + destination.addAll(0, queued) return destination } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dbe15c23f..bfe0baeff 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -471,4 +471,5 @@ %s requires a captcha to be resolved to work properly Languages Unknown + In progress