Add extension’s setting to source’s long click
This commit is contained in:
parent
2d42be6958
commit
3c6696d671
3 changed files with 40 additions and 10 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 <--
|
||||
|
|
|
|||
|
|
@ -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 -> {
|
||||
|
|
|
|||
Loading…
Reference in a new issue