diff --git a/app/src/main/java/eu/kanade/presentation/components/ChapterDownloadIndicator.kt b/app/src/main/java/eu/kanade/presentation/components/ChapterDownloadIndicator.kt index fd817fc257..e17fe46759 100644 --- a/app/src/main/java/eu/kanade/presentation/components/ChapterDownloadIndicator.kt +++ b/app/src/main/java/eu/kanade/presentation/components/ChapterDownloadIndicator.kt @@ -43,26 +43,41 @@ enum class ChapterDownloadAction { @Composable fun ChapterDownloadIndicator( + enabled: Boolean, modifier: Modifier = Modifier, downloadStateProvider: () -> Download.State, downloadProgressProvider: () -> Int, onClick: (ChapterDownloadAction) -> Unit, ) { when (val downloadState = downloadStateProvider()) { - Download.State.NOT_DOWNLOADED -> NotDownloadedIndicator(modifier = modifier, onClick = onClick) + Download.State.NOT_DOWNLOADED -> NotDownloadedIndicator( + enabled = enabled, + modifier = modifier, + onClick = onClick, + ) Download.State.QUEUE, Download.State.DOWNLOADING -> DownloadingIndicator( + enabled = enabled, modifier = modifier, downloadState = downloadState, downloadProgressProvider = downloadProgressProvider, onClick = onClick, ) - Download.State.DOWNLOADED -> DownloadedIndicator(modifier = modifier, onClick = onClick) - Download.State.ERROR -> ErrorIndicator(modifier = modifier, onClick = onClick) + Download.State.DOWNLOADED -> DownloadedIndicator( + enabled = enabled, + modifier = modifier, + onClick = onClick, + ) + Download.State.ERROR -> ErrorIndicator( + enabled = enabled, + modifier = modifier, + onClick = onClick, + ) } } @Composable private fun NotDownloadedIndicator( + enabled: Boolean, modifier: Modifier = Modifier, onClick: (ChapterDownloadAction) -> Unit, ) { @@ -70,6 +85,7 @@ private fun NotDownloadedIndicator( modifier = modifier .size(IconButtonTokens.StateLayerSize) .commonClickable( + enabled = enabled, onLongClick = { onClick(ChapterDownloadAction.START_NOW) }, onClick = { onClick(ChapterDownloadAction.START) }, ) @@ -87,6 +103,7 @@ private fun NotDownloadedIndicator( @Composable private fun DownloadingIndicator( + enabled: Boolean, modifier: Modifier = Modifier, downloadState: Download.State, downloadProgressProvider: () -> Int, @@ -97,6 +114,7 @@ private fun DownloadingIndicator( modifier = modifier .size(IconButtonTokens.StateLayerSize) .commonClickable( + enabled = enabled, onLongClick = { onClick(ChapterDownloadAction.CANCEL) }, onClick = { isMenuExpanded = true }, ), @@ -158,6 +176,7 @@ private fun DownloadingIndicator( @Composable private fun DownloadedIndicator( + enabled: Boolean, modifier: Modifier = Modifier, onClick: (ChapterDownloadAction) -> Unit, ) { @@ -166,6 +185,7 @@ private fun DownloadedIndicator( modifier = modifier .size(IconButtonTokens.StateLayerSize) .commonClickable( + enabled = enabled, onLongClick = { onClick(ChapterDownloadAction.DELETE) }, onClick = { isMenuExpanded = true }, ), @@ -191,6 +211,7 @@ private fun DownloadedIndicator( @Composable private fun ErrorIndicator( + enabled: Boolean, modifier: Modifier = Modifier, onClick: (ChapterDownloadAction) -> Unit, ) { @@ -198,6 +219,7 @@ private fun ErrorIndicator( modifier = modifier .size(IconButtonTokens.StateLayerSize) .commonClickable( + enabled = enabled, onLongClick = { onClick(ChapterDownloadAction.START) }, onClick = { onClick(ChapterDownloadAction.START) }, ), @@ -213,10 +235,12 @@ private fun ErrorIndicator( } private fun Modifier.commonClickable( + enabled: Boolean, onLongClick: () -> Unit, onClick: () -> Unit, ) = composed { this.combinedClickable( + enabled = enabled, onLongClick = onLongClick, onClick = onClick, role = Role.Button, diff --git a/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt b/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt index 452e8ae1db..4747306b58 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt @@ -354,6 +354,7 @@ private fun MangaScreenSmallImpl( contentType = MangaScreenItem.CHAPTER_HEADER, ) { ChapterHeader( + enabled = chapters.fastAll { !it.selected }, chapterCount = chapters.size, onClick = onFilterClicked, ) @@ -553,6 +554,7 @@ fun MangaScreenLargeImpl( contentType = MangaScreenItem.CHAPTER_HEADER, ) { ChapterHeader( + enabled = chapters.fastAll { !it.selected }, chapterCount = chapters.size, onClick = onFilterButtonClicked, ) @@ -634,6 +636,7 @@ private fun LazyListScope.sharedChapterItems( read = chapterItem.chapter.read, bookmark = chapterItem.chapter.bookmark, selected = chapterItem.selected, + downloadIndicatorEnabled = chapters.fastAll { !it.selected }, downloadStateProvider = { chapterItem.downloadState }, downloadProgressProvider = { chapterItem.downloadProgress }, onLongClick = { diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/ChapterHeader.kt b/app/src/main/java/eu/kanade/presentation/manga/components/ChapterHeader.kt index 103864f257..edb10131ed 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/ChapterHeader.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/ChapterHeader.kt @@ -16,13 +16,17 @@ import eu.kanade.tachiyomi.R @Composable fun ChapterHeader( + enabled: Boolean, chapterCount: Int?, onClick: () -> Unit, ) { Row( modifier = Modifier .fillMaxWidth() - .clickable(onClick = onClick) + .clickable( + enabled = enabled, + onClick = onClick, + ) .padding(horizontal = 16.dp, vertical = 4.dp), verticalAlignment = Alignment.CenterVertically, ) { diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaChapterListItem.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaChapterListItem.kt index 3a0760a28d..d07a74d9dc 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaChapterListItem.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaChapterListItem.kt @@ -46,6 +46,7 @@ fun MangaChapterListItem( read: Boolean, bookmark: Boolean, selected: Boolean, + downloadIndicatorEnabled: Boolean, downloadStateProvider: () -> Download.State, downloadProgressProvider: () -> Int, onLongClick: () -> Unit, @@ -129,6 +130,7 @@ fun MangaChapterListItem( // Download view if (onDownloadClick != null) { ChapterDownloadIndicator( + enabled = downloadIndicatorEnabled, modifier = Modifier.padding(start = 4.dp), downloadStateProvider = downloadStateProvider, downloadProgressProvider = downloadProgressProvider, diff --git a/app/src/main/java/eu/kanade/presentation/updates/UpdatesUiItem.kt b/app/src/main/java/eu/kanade/presentation/updates/UpdatesUiItem.kt index d67f737190..b339d026d0 100644 --- a/app/src/main/java/eu/kanade/presentation/updates/UpdatesUiItem.kt +++ b/app/src/main/java/eu/kanade/presentation/updates/UpdatesUiItem.kt @@ -135,6 +135,7 @@ fun LazyListScope.updatesUiItems( onDownloadChapter = { if (selectionMode.not()) onDownloadChapter(listOf(updatesItem), it) }, + downloadIndicatorEnabled = selectionMode.not(), downloadStateProvider = updatesItem.downloadStateProvider, downloadProgressProvider = updatesItem.downloadProgressProvider, ) @@ -153,6 +154,7 @@ fun UpdatesUiItem( onClickCover: () -> Unit, onDownloadChapter: (ChapterDownloadAction) -> Unit, // Download Indicator + downloadIndicatorEnabled: Boolean, downloadStateProvider: () -> Download.State, downloadProgressProvider: () -> Int, ) { @@ -225,6 +227,7 @@ fun UpdatesUiItem( } } ChapterDownloadIndicator( + enabled = downloadIndicatorEnabled, modifier = Modifier.padding(start = 4.dp), downloadStateProvider = downloadStateProvider, downloadProgressProvider = downloadProgressProvider,