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 f8ac03289..1797cba78 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt @@ -59,10 +59,10 @@ import eu.kanade.presentation.components.VerticalFastScroller import eu.kanade.presentation.manga.components.ChapterHeader import eu.kanade.presentation.manga.components.ExpandableMangaDescription import eu.kanade.presentation.manga.components.MangaActionRow -import eu.kanade.presentation.manga.components.MangaAppBar import eu.kanade.presentation.manga.components.MangaChapterListItem import eu.kanade.presentation.manga.components.MangaInfoBox import eu.kanade.presentation.manga.components.MangaInfoButtons +import eu.kanade.presentation.manga.components.MangaToolbar import eu.kanade.presentation.manga.components.PagePreviews import eu.kanade.presentation.manga.components.SearchMetadataChips import eu.kanade.presentation.util.isScrolledToEnd @@ -150,7 +150,7 @@ fun MangaScreen( onWebViewClicked = onWebViewClicked, onTrackingClicked = onTrackingClicked, onTagClicked = onTagClicked, - onFilterButtonClicked = onFilterButtonClicked, + onFilterClicked = onFilterButtonClicked, onRefresh = onRefresh, onContinueReading = onContinueReading, onSearch = onSearch, @@ -228,7 +228,7 @@ private fun MangaScreenSmallImpl( onWebViewClicked: (() -> Unit)?, onTrackingClicked: (() -> Unit)?, onTagClicked: (String) -> Unit, - onFilterButtonClicked: () -> Unit, + onFilterClicked: () -> Unit, onRefresh: () -> Unit, onContinueReading: () -> Unit, onSearch: (query: String, global: Boolean) -> Unit, @@ -294,25 +294,24 @@ private fun MangaScreenSmallImpl( val animatedBgAlpha by animateFloatAsState( if (firstVisibleItemIndex > 0 || firstVisibleItemScrollOffset > 0) 1f else 0f, ) - MangaAppBar( + MangaToolbar( title = state.manga.title, titleAlphaProvider = { animatedTitleAlpha }, backgroundAlphaProvider = { animatedBgAlpha }, + hasFilters = state.manga.chaptersFiltered(), incognitoMode = state.isIncognitoMode, downloadedOnlyMode = state.isDownloadedOnlyMode, onBackClicked = internalOnBackPressed, - onShareClicked = onShareClicked, - onDownloadClicked = onDownloadActionClicked, - onEditCategoryClicked = onEditCategoryClicked, - onMigrateClicked = onMigrateClicked, + onClickFilter = onFilterClicked, + onClickShare = onShareClicked, + onClickDownload = onDownloadActionClicked, + onClickEditCategory = onEditCategoryClicked, + onClickMigrate = onMigrateClicked, // SY --> - showEditInfo = state.manga.favorite, - onEditInfoClicked = onEditInfoClicked, - showRecommends = state.showRecommendationsInOverflow, - onRecommendClicked = onRecommendClicked, - showMergeSettings = state.manga.source == MERGED_SOURCE_ID, - onMergedSettingsClicked = onMergedSettingsClicked, - onMergeClicked = onMergeClicked.takeIf { state.showMergeInOverflow }, + onClickEditInfo = onEditInfoClicked.takeIf { state.manga.favorite }, + onClickRecommend = onRecommendClicked.takeIf { state.showRecommendationsInOverflow }, + onClickMergedSettings = onMergedSettingsClicked.takeIf { state.manga.source == MERGED_SOURCE_ID }, + onClickMerge = onMergeClicked.takeIf { state.showMergeInOverflow }, // SY <-- actionModeCounter = chapters.count { it.selected }, onSelectAll = { onAllChapterSelected(true) }, @@ -474,8 +473,7 @@ private fun MangaScreenSmallImpl( ) { ChapterHeader( chapterCount = chapters.size, - isChapterFiltered = state.manga.chaptersFiltered(), - onFilterButtonClicked = onFilterButtonClicked, + onClick = onFilterClicked, ) } @@ -572,26 +570,25 @@ fun MangaScreenLargeImpl( Scaffold( modifier = Modifier.padding(insetPadding), topBar = { - MangaAppBar( + MangaToolbar( modifier = Modifier.onSizeChanged { onTopBarHeightChanged(it.height) }, title = state.manga.title, titleAlphaProvider = { if (chapters.any { it.selected }) 1f else 0f }, backgroundAlphaProvider = { 1f }, + hasFilters = state.manga.chaptersFiltered(), incognitoMode = state.isIncognitoMode, downloadedOnlyMode = state.isDownloadedOnlyMode, onBackClicked = internalOnBackPressed, - onShareClicked = onShareClicked, - onDownloadClicked = onDownloadActionClicked, - onEditCategoryClicked = onEditCategoryClicked, - onMigrateClicked = onMigrateClicked, + onClickFilter = onFilterButtonClicked, + onClickShare = onShareClicked, + onClickDownload = onDownloadActionClicked, + onClickEditCategory = onEditCategoryClicked, + onClickMigrate = onMigrateClicked, // SY --> - showEditInfo = state.manga.favorite, - onEditInfoClicked = onEditInfoClicked, - showRecommends = state.showRecommendationsInOverflow, - onRecommendClicked = onRecommendClicked, - showMergeSettings = state.manga.source == MERGED_SOURCE_ID, - onMergedSettingsClicked = onMergedSettingsClicked, - onMergeClicked = onMergeClicked.takeIf { state.showMergeInOverflow }, + onClickEditInfo = onEditInfoClicked.takeIf { state.manga.favorite }, + onClickRecommend = onRecommendClicked.takeIf { state.showRecommendationsInOverflow }, + onClickMergedSettings = onMergedSettingsClicked.takeIf { state.manga.source == MERGED_SOURCE_ID }, + onClickMerge = onMergeClicked.takeIf { state.showMergeInOverflow }, // SY <-- actionModeCounter = chapters.count { it.selected }, onSelectAll = { onAllChapterSelected(true) }, @@ -728,8 +725,7 @@ fun MangaScreenLargeImpl( ) { ChapterHeader( chapterCount = chapters.size, - isChapterFiltered = state.manga.chaptersFiltered(), - onFilterButtonClicked = onFilterButtonClicked, + onClick = onFilterButtonClicked, ) } 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 92d141958..103864f25 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 @@ -4,32 +4,25 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.FilterList -import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.util.system.getResourceColor @Composable fun ChapterHeader( chapterCount: Int?, - isChapterFiltered: Boolean, - onFilterButtonClicked: () -> Unit, + onClick: () -> Unit, ) { Row( modifier = Modifier .fillMaxWidth() - .clickable(onClick = onFilterButtonClicked) + .clickable(onClick = onClick) .padding(horizontal = 16.dp, vertical = 4.dp), verticalAlignment = Alignment.CenterVertically, ) { @@ -43,14 +36,5 @@ fun ChapterHeader( modifier = Modifier.weight(1f), color = MaterialTheme.colorScheme.onBackground, ) - Icon( - imageVector = Icons.Default.FilterList, - contentDescription = stringResource(R.string.action_filter), - tint = if (isChapterFiltered) { - Color(LocalContext.current.getResourceColor(R.attr.colorFilterActive)) - } else { - MaterialTheme.colorScheme.onBackground - }, - ) } } diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaAppBar.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt similarity index 77% rename from app/src/main/java/eu/kanade/presentation/manga/components/MangaAppBar.kt rename to app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt index cf55d635a..823e18c55 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaAppBar.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt @@ -11,10 +11,11 @@ import androidx.compose.material.icons.filled.FlipToBack import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material.icons.filled.SelectAll import androidx.compose.material.icons.outlined.Download -import androidx.compose.material.icons.outlined.Share +import androidx.compose.material.icons.outlined.FilterList import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.Icon import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalContentColor import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar @@ -31,29 +32,29 @@ import androidx.compose.ui.unit.dp import eu.kanade.presentation.components.AppStateBanners import eu.kanade.presentation.components.DropdownMenu import eu.kanade.presentation.manga.DownloadAction +import eu.kanade.presentation.theme.active import eu.kanade.tachiyomi.R @Composable -fun MangaAppBar( +fun MangaToolbar( modifier: Modifier = Modifier, title: String, titleAlphaProvider: () -> Float, backgroundAlphaProvider: () -> Float = titleAlphaProvider, + hasFilters: Boolean, incognitoMode: Boolean, downloadedOnlyMode: Boolean, onBackClicked: () -> Unit, - onShareClicked: (() -> Unit)?, - onDownloadClicked: ((DownloadAction) -> Unit)?, - onEditCategoryClicked: (() -> Unit)?, - onMigrateClicked: (() -> Unit)?, + onClickFilter: () -> Unit, + onClickShare: (() -> Unit)?, + onClickDownload: ((DownloadAction) -> Unit)?, + onClickEditCategory: (() -> Unit)?, + onClickMigrate: (() -> Unit)?, // SY --> - showEditInfo: Boolean, - onEditInfoClicked: () -> Unit, - showRecommends: Boolean, - onRecommendClicked: () -> Unit, - onMergeClicked: (() -> Unit)?, - showMergeSettings: Boolean, - onMergedSettingsClicked: () -> Unit, + onClickEditInfo: (() -> Unit)?, + onClickRecommend: (() -> Unit)?, + onClickMerge: (() -> Unit)?, + onClickMergedSettings: (() -> Unit)?, // SY <-- // For action mode actionModeCounter: Int, @@ -96,16 +97,7 @@ fun MangaAppBar( ) } } else { - if (onShareClicked != null) { - IconButton(onClick = onShareClicked) { - Icon( - imageVector = Icons.Outlined.Share, - contentDescription = stringResource(R.string.action_share), - ) - } - } - - if (onDownloadClicked != null) { + if (onClickDownload != null) { val (downloadExpanded, onDownloadExpanded) = remember { mutableStateOf(false) } Box { IconButton(onClick = { onDownloadExpanded(!downloadExpanded) }) { @@ -122,42 +114,42 @@ fun MangaAppBar( DropdownMenuItem( text = { Text(text = stringResource(R.string.download_1)) }, onClick = { - onDownloadClicked(DownloadAction.NEXT_1_CHAPTER) + onClickDownload(DownloadAction.NEXT_1_CHAPTER) onDismissRequest() }, ) DropdownMenuItem( text = { Text(text = stringResource(R.string.download_5)) }, onClick = { - onDownloadClicked(DownloadAction.NEXT_5_CHAPTERS) + onClickDownload(DownloadAction.NEXT_5_CHAPTERS) onDismissRequest() }, ) DropdownMenuItem( text = { Text(text = stringResource(R.string.download_10)) }, onClick = { - onDownloadClicked(DownloadAction.NEXT_10_CHAPTERS) + onClickDownload(DownloadAction.NEXT_10_CHAPTERS) onDismissRequest() }, ) DropdownMenuItem( text = { Text(text = stringResource(R.string.download_custom)) }, onClick = { - onDownloadClicked(DownloadAction.CUSTOM) + onClickDownload(DownloadAction.CUSTOM) onDismissRequest() }, ) DropdownMenuItem( text = { Text(text = stringResource(R.string.download_unread)) }, onClick = { - onDownloadClicked(DownloadAction.UNREAD_CHAPTERS) + onClickDownload(DownloadAction.UNREAD_CHAPTERS) onDismissRequest() }, ) DropdownMenuItem( text = { Text(text = stringResource(R.string.download_all)) }, onClick = { - onDownloadClicked(DownloadAction.ALL_CHAPTERS) + onClickDownload(DownloadAction.ALL_CHAPTERS) onDismissRequest() }, ) @@ -165,7 +157,12 @@ fun MangaAppBar( } } - if (onEditCategoryClicked != null || onMigrateClicked != null || showEditInfo || showRecommends || showMergeSettings) { + val filterTint = if (hasFilters) MaterialTheme.colorScheme.active else LocalContentColor.current + IconButton(onClick = onClickFilter) { + Icon(Icons.Outlined.FilterList, contentDescription = stringResource(R.string.action_filter), tint = filterTint) + } + + if (listOfNotNull(onClickShare, onClickEditCategory, onClickMigrate, onClickEditInfo, onClickRecommend, onClickMergedSettings).isNotEmpty()) { val (moreExpanded, onMoreExpanded) = remember { mutableStateOf(false) } Box { IconButton(onClick = { onMoreExpanded(!moreExpanded) }) { @@ -179,56 +176,65 @@ fun MangaAppBar( expanded = moreExpanded, onDismissRequest = onDismissRequest, ) { - if (onEditCategoryClicked != null) { + if (onClickShare != null) { + DropdownMenuItem( + text = { Text(text = stringResource(R.string.action_share)) }, + onClick = { + onClickShare() + onDismissRequest() + }, + ) + } + if (onClickEditCategory != null) { DropdownMenuItem( text = { Text(text = stringResource(R.string.action_edit_categories)) }, onClick = { - onEditCategoryClicked() + onClickEditCategory() onDismissRequest() }, ) } - if (onMigrateClicked != null) { + if (onClickMigrate != null) { DropdownMenuItem( text = { Text(text = stringResource(R.string.action_migrate)) }, onClick = { - onMigrateClicked() + onClickMigrate() onDismissRequest() }, ) } - if (onMergeClicked != null) { + if (onClickMerge != null) { DropdownMenuItem( text = { Text(text = stringResource(R.string.merge)) }, onClick = { - onMergeClicked() + onClickMerge() onDismissRequest() }, ) } - if (showEditInfo) { + if (onClickEditInfo != null) { DropdownMenuItem( text = { Text(text = stringResource(R.string.action_edit_info)) }, onClick = { - onEditInfoClicked() + onClickEditInfo() onDismissRequest() }, ) } - if (showRecommends) { + if (onClickRecommend != null) { DropdownMenuItem( text = { Text(text = stringResource(R.string.az_recommends)) }, onClick = { - onRecommendClicked() + onClickRecommend() onDismissRequest() }, ) } - if (showMergeSettings) { + if (onClickMergedSettings != null) { DropdownMenuItem( text = { Text(text = stringResource(R.string.merge_settings)) }, onClick = { - onMergedSettingsClicked() + onClickMergedSettings() onDismissRequest() }, ) diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index d59f70dc0..24200c407 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -6,9 +6,6 @@ @color/surface_amoled @color/background_amoled - - - @color/filter_dark diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 5dd1b4e3c..83a8df519 100755 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -12,8 +12,6 @@ - - diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 4bde2670c..8d9183d75 100755 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -19,9 +19,6 @@ #000001 #000000 - #FFC107 - #FFEB3B - #202125 diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index a357c496c..d26fad69e 100755 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -84,9 +84,6 @@ @style/Widget.Tachiyomi.Slider @style/Widget.Material3.CardView.Elevated - - @color/filter_light - ?attr/textAppearanceBodyLarge @style/TextAppearance.Tachiyomi.Preference.Secondary