From 3c6696d671c362f0d09ba2e98a9a1d90bf8725b2 Mon Sep 17 00:00:00 2001 From: "Cuong M. Tran" Date: Sun, 11 Feb 2024 02:46:01 +0700 Subject: [PATCH] =?UTF-8?q?Add=20extension=E2=80=99s=20setting=20to=20sour?= =?UTF-8?q?ce=E2=80=99s=20long=20click?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/browse/SourcesScreen.kt | 19 +++++++++++++++++ .../browse/components/SourceSettingsButton.kt | 21 ++++++++++--------- .../tachiyomi/ui/browse/source/SourcesTab.kt | 10 +++++++++ 3 files changed, 40 insertions(+), 10 deletions(-) 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 9ed791d13..10c894f73 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt @@ -55,10 +55,13 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import eu.kanade.domain.source.model.installedExtension import eu.kanade.presentation.browse.components.BaseSourceItem 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 +import exh.source.EH_SOURCE_ID +import exh.source.EXH_SOURCE_ID import kotlinx.collections.immutable.ImmutableList import tachiyomi.domain.source.model.Pin import tachiyomi.domain.source.model.Source @@ -76,6 +79,7 @@ import tachiyomi.presentation.core.util.clearFocusOnSoftKeyboardHide import tachiyomi.presentation.core.util.plus import tachiyomi.presentation.core.util.runOnEnterKeyPressed import tachiyomi.presentation.core.util.secondaryItemAlpha +import tachiyomi.source.local.LocalSource import tachiyomi.source.local.isLocal @Composable @@ -418,6 +422,9 @@ fun SourceOptionsDialog( onClickToggleDataSaver: (() -> Unit)?, // SY <-- onDismiss: () -> Unit, + // KMK --> + onClickSettings: (() -> Unit)? = null, + // KMK <-- ) { AlertDialog( title = { @@ -466,6 +473,18 @@ fun SourceOptionsDialog( ) } // SY <-- + // KMK --> + if (onClickSettings != null && source.installedExtension !== null && + !(source.id == LocalSource.ID || source.id == EH_SOURCE_ID || source.id == EXH_SOURCE_ID)) { + Text( + text = stringResource(MR.strings.label_extension_info), + modifier = Modifier + .clickable(onClick = onClickSettings) + .fillMaxWidth() + .padding(vertical = 16.dp), + ) + } + // KMK <-- } }, onDismissRequest = onDismiss, 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 f549d34f8..bed5bddac 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 @@ -23,11 +23,19 @@ fun SourceSettingsButton( id: Long, @Suppress("UNUSED_PARAMETER") modifier: Modifier = Modifier ) { - // Avoid E-Hentai & ExHentai which is built-in & not actually installed extensions - 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) + SourceSettingsButton(source = source) +} + +@Composable +fun SourceSettingsButton( + source: Source, + @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 + val navigator = LocalNavigator.currentOrThrow IconButton(onClick = { if (source.installedExtension !== null) @@ -39,11 +47,4 @@ fun SourceSettingsButton( ) } } -@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/SourcesTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt index 9714d27f3..0d5fda4f7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt @@ -14,11 +14,13 @@ import cafe.adriel.voyager.core.model.rememberScreenModel import cafe.adriel.voyager.core.screen.Screen import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.currentOrThrow +import eu.kanade.domain.source.model.installedExtension import eu.kanade.presentation.browse.SourceCategoriesDialog import eu.kanade.presentation.browse.SourceOptionsDialog import eu.kanade.presentation.browse.SourcesScreen import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.TabContent +import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreen import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen.SmartSearchConfig import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreen import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreenModel.Listing @@ -113,7 +115,15 @@ fun Screen.sourcesTab( screenModel.toggleExcludeFromDataSaver(source) screenModel.closeDialog() }.takeIf { state.dataSaverEnabled }, + // SY <-- onDismiss = screenModel::closeDialog, + // KMK --> + onClickSettings = { + if (source.installedExtension !== null) + navigator.push(ExtensionDetailsScreen(source.installedExtension!!.pkgName)) + screenModel.closeDialog() + }, + // KMK <-- ) } is SourcesScreenModel.Dialog.SourceCategories -> {