feat: Add option to show manga from download queue item

close #116
This commit is contained in:
Cuong-Tran 2024-07-22 19:21:43 +07:00 committed by Tran M. Cuong
parent c0147da7a7
commit a1dbcc022d
3 changed files with 28 additions and 1 deletions

View file

@ -70,7 +70,13 @@ object DownloadQueueScreen : Screen() {
override fun Content() {
val navigator = LocalNavigator.currentOrThrow
val scope = rememberCoroutineScope()
val screenModel = rememberScreenModel { DownloadQueueScreenModel() }
val screenModel = rememberScreenModel {
DownloadQueueScreenModel(
// KMK -->
navigator = navigator
// KMK <--
)
}
val downloadList by screenModel.state.collectAsState()
val downloadCount by remember {
derivedStateOf { downloadList.sumOf { it.subItems.size } }

View file

@ -3,11 +3,13 @@ package eu.kanade.tachiyomi.ui.download
import android.view.MenuItem
import cafe.adriel.voyager.core.model.ScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
import cafe.adriel.voyager.navigator.Navigator
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.databinding.DownloadListBinding
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.ui.manga.MangaScreen
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow
@ -26,6 +28,9 @@ import uy.kohesive.injekt.api.get
class DownloadQueueScreenModel(
private val downloadManager: DownloadManager = Injekt.get(),
// KMK -->
private val navigator: Navigator? = null,
// KMK <--
) : ScreenModel {
private val _state = MutableStateFlow(emptyList<DownloadHeaderItem>())
@ -110,6 +115,12 @@ class DownloadQueueScreenModel(
cancel(allDownloadsForSeries)
}
}
// KMK -->
R.id.show_manga -> {
val mangaId = item.download.manga.id
showManga(mangaId = mangaId)
}
// KMK <--
}
}
}
@ -165,6 +176,12 @@ class DownloadQueueScreenModel(
downloadManager.cancelQueuedDownloads(downloads)
}
// KMK -->
fun showManga(mangaId: Long) {
navigator?.push(MangaScreen(mangaId))
}
// KMK <--
fun <R : Comparable<R>> reorderQueue(selector: (DownloadItem) -> R, reverse: Boolean = false) {
val adapter = adapter ?: return
val newDownloads = mutableListOf<Download>()

View file

@ -25,4 +25,8 @@
android:id="@+id/cancel_series"
android:title="@string/cancel_all_for_series" />
<item
android:id="@+id/show_manga"
android:title="@string/action_show_manga" />
</menu>