Improve downloads list

pull/446/head
Koitharu 3 years ago
parent e7ee261680
commit 8b6a0a8c87
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -7,6 +7,7 @@ import androidx.work.WorkInfo
import coil.ImageLoader import coil.ImageLoader
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
import org.koitharu.kotatsu.R 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.disposeImageRequest
import org.koitharu.kotatsu.core.util.ext.enqueueWith import org.koitharu.kotatsu.core.util.ext.enqueueWith
import org.koitharu.kotatsu.core.util.ext.newImageRequest import org.koitharu.kotatsu.core.util.ext.newImageRequest
@ -53,6 +54,7 @@ fun downloadItemAD(
fallback(R.drawable.ic_placeholder) fallback(R.drawable.ic_placeholder)
error(R.drawable.ic_error_placeholder) error(R.drawable.ic_error_placeholder)
allowRgb565(true) allowRgb565(true)
transformations(TrimTransformation())
source(item.manga.source) source(item.manga.source)
enqueueWith(coil) enqueueWith(coil)
} }

@ -32,6 +32,7 @@ import org.koitharu.kotatsu.list.ui.model.LoadingState
import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.util.mapToSet import org.koitharu.kotatsu.parsers.util.mapToSet
import java.util.Date import java.util.Date
import java.util.LinkedList
import java.util.UUID import java.util.UUID
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import javax.inject.Inject import javax.inject.Inject
@ -181,9 +182,17 @@ class DownloadsViewModel @Inject constructor(
if (isEmpty()) { if (isEmpty()) {
return emptyStateList() return emptyStateList()
} }
val destination = ArrayList<ListModel>((size * 1.4).toInt()) val queued = LinkedList<ListModel>()
val running = LinkedList<ListModel>()
val destination = ArrayDeque<ListModel>((size * 1.4).toInt())
var prevDate: DateTimeAgo? = null var prevDate: DateTimeAgo? = null
for (item in this) { for (item in this) {
when (item.workState) {
WorkInfo.State.RUNNING -> running += item
WorkInfo.State.BLOCKED,
WorkInfo.State.ENQUEUED -> queued += item
else -> {
val date = timeAgo(item.timestamp) val date = timeAgo(item.timestamp)
if (prevDate != date) { if (prevDate != date) {
destination += ListHeader(date) destination += ListHeader(date)
@ -191,6 +200,16 @@ class DownloadsViewModel @Inject constructor(
prevDate = date prevDate = date
destination += item 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 return destination
} }

@ -471,4 +471,5 @@
<string name="captcha_required_summary">%s requires a captcha to be resolved to work properly</string> <string name="captcha_required_summary">%s requires a captcha to be resolved to work properly</string>
<string name="languages">Languages</string> <string name="languages">Languages</string>
<string name="unknown">Unknown</string> <string name="unknown">Unknown</string>
<string name="in_progress">In progress</string>
</resources> </resources>

Loading…
Cancel
Save