From b6a60201b693e8535872acf4db3b3fe3593ca772 Mon Sep 17 00:00:00 2001 From: "Cuong M. Tran" Date: Tue, 30 Jan 2024 19:54:28 +0700 Subject: [PATCH] =?UTF-8?q?Move=20source=E2=80=99s=20package=20settings=20?= =?UTF-8?q?button=20to=20SourceFeedScreen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/browse/SourceFeedScreen.kt | 18 ++++++++++++++++++ .../presentation/browse/SourcesScreen.kt | 4 ---- .../browse/components/SourceSettingsButton.kt | 16 ++++++++++++---- .../ui/browse/source/feed/SourceFeedScreen.kt | 3 +++ 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/browse/SourceFeedScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/SourceFeedScreen.kt index 0c156e352..a09fe1d71 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/SourceFeedScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/SourceFeedScreen.kt @@ -13,9 +13,11 @@ import eu.kanade.presentation.browse.components.GlobalSearchCardRow import eu.kanade.presentation.browse.components.GlobalSearchErrorResultItem import eu.kanade.presentation.browse.components.GlobalSearchLoadingResultItem import eu.kanade.presentation.browse.components.GlobalSearchResultItem +import eu.kanade.presentation.browse.components.SourceSettingsButton import eu.kanade.presentation.components.AppBarTitle import eu.kanade.presentation.components.SearchToolbar import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.source.model.FeedSavedSearch import tachiyomi.domain.source.model.SavedSearch @@ -96,6 +98,9 @@ fun SourceFeedScreen( searchQuery: String?, onSearchQueryChange: (String?) -> Unit, getMangaState: @Composable (Manga) -> State, + // KMK --> + id: Long, + // KMK <-- ) { Scaffold( topBar = { scrollBehavior -> @@ -105,6 +110,9 @@ fun SourceFeedScreen( onSearchQueryChange = onSearchQueryChange, scrollBehavior = scrollBehavior, onClickSearch = onClickSearch, + // KMK --> + id = id, + // KMK <-- ) }, floatingActionButton = { @@ -213,6 +221,9 @@ fun SourceFeedToolbar( onSearchQueryChange: (String?) -> Unit, scrollBehavior: TopAppBarScrollBehavior, onClickSearch: (String) -> Unit, + // KMK --> + id: Long + // KMK <-- ) { SearchToolbar( titleContent = { AppBarTitle(title) }, @@ -222,5 +233,12 @@ fun SourceFeedToolbar( onClickCloseSearch = { onSearchQueryChange(null) }, scrollBehavior = scrollBehavior, placeholderText = stringResource(MR.strings.action_search_hint), + // KMK --> + actions = { + persistentListOf( + SourceSettingsButton(id) + ) + } + // KMK <-- ) } diff --git a/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt index c0022f249..41b730e93 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt @@ -56,7 +56,6 @@ import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import eu.kanade.presentation.browse.components.BaseSourceItem -import eu.kanade.presentation.browse.components.SourceSettingsButton import eu.kanade.tachiyomi.ui.browse.source.SourcesScreenModel import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreenModel.Listing import eu.kanade.tachiyomi.util.system.LocaleHelper @@ -382,9 +381,6 @@ private fun SourceItem( ) } // SY <-- - // KMK --> - SourceSettingsButton(source = source) - // KMK <-- }, ) } diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/SourceSettingsButton.kt b/app/src/main/java/eu/kanade/presentation/browse/components/SourceSettingsButton.kt index ef00d4784..f549d34f8 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/SourceSettingsButton.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/SourceSettingsButton.kt @@ -4,7 +4,6 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Settings import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import cafe.adriel.voyager.navigator.LocalNavigator @@ -21,11 +20,14 @@ import tachiyomi.source.local.LocalSource // KMK --> @Composable fun SourceSettingsButton( - source: Source, + id: Long, @Suppress("UNUSED_PARAMETER") modifier: Modifier = Modifier ) { // Avoid E-Hentai & ExHentai which is built-in & not actually installed extensions - if (source.id == LocalSource.ID || source.id == EH_SOURCE_ID || source.id == EXH_SOURCE_ID) return + if (id == LocalSource.ID || id == EH_SOURCE_ID || id == EXH_SOURCE_ID) return + + // Create a fake source + val source = Source(id,"", "", supportsLatest = false, isStub = false) val navigator = LocalNavigator.currentOrThrow IconButton(onClick = { if (source.installedExtension !== null) @@ -33,9 +35,15 @@ fun SourceSettingsButton( }) { Icon( imageVector = Icons.Outlined.Settings, - tint = MaterialTheme.colorScheme.primary, contentDescription = stringResource(MR.strings.label_settings), ) } } +@Composable +fun SourceSettingsButton( + source: Source, + @Suppress("UNUSED_PARAMETER") modifier: Modifier = Modifier +) { + SourceSettingsButton(id = source.id) +} // KMK <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt index 8c7821b43..5f69323f6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt @@ -48,6 +48,9 @@ class SourceFeedScreen(val sourceId: Long) : Screen() { searchQuery = state.searchQuery, onSearchQueryChange = screenModel::search, getMangaState = { screenModel.getManga(initialManga = it) }, + // KMK --> + id = screenModel.source.id, + // KMK <-- ) val onDismissRequest = screenModel::dismissDialog