feat: add global search shortcut to SmartSearch (jobobby04/TachiyomiSY#1377)
* feat: add global search shortcut to SmartSearch * feat: add global search shortcut to SmartSearch * feat: add back button to BrowseTabWrapper (cherry picked from commit 46dea6d598a61b5b1df186be68122a9dd20285b1)
This commit is contained in:
parent
c643d8a55b
commit
69b1af8534
4 changed files with 38 additions and 39 deletions
|
|
@ -4,7 +4,6 @@ import androidx.compose.material3.SnackbarHost
|
|||
import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import eu.kanade.presentation.components.AppBar
|
||||
import eu.kanade.presentation.components.AppBarActions
|
||||
import eu.kanade.presentation.components.TabContent
|
||||
|
|
@ -12,9 +11,8 @@ import tachiyomi.presentation.core.components.material.Scaffold
|
|||
import tachiyomi.presentation.core.i18n.stringResource
|
||||
|
||||
@Composable
|
||||
fun BrowseTabWrapper(tab: TabContent) {
|
||||
fun BrowseTabWrapper(tab: TabContent, onBackPressed: (() -> Unit)? = null) {
|
||||
val snackbarHostState = remember { SnackbarHostState() }
|
||||
val navigator = LocalNavigator.current
|
||||
Scaffold(
|
||||
topBar = { scrollBehavior ->
|
||||
AppBar(
|
||||
|
|
@ -22,8 +20,8 @@ fun BrowseTabWrapper(tab: TabContent) {
|
|||
actions = {
|
||||
AppBarActions(tab.actions)
|
||||
},
|
||||
navigateUp = onBackPressed,
|
||||
scrollBehavior = scrollBehavior,
|
||||
navigateUp = { navigator?.pop() },
|
||||
)
|
||||
},
|
||||
snackbarHost = { SnackbarHost(hostState = snackbarHostState) },
|
||||
|
|
|
|||
|
|
@ -1,12 +1,15 @@
|
|||
package eu.kanade.tachiyomi.ui.browse.migration.sources
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||
import eu.kanade.presentation.browse.BrowseTabWrapper
|
||||
import eu.kanade.presentation.util.Screen
|
||||
|
||||
class MigrationSourcesScreen : Screen() {
|
||||
@Composable
|
||||
override fun Content() {
|
||||
BrowseTabWrapper(migrateSourceTab())
|
||||
val navigator = LocalNavigator.currentOrThrow
|
||||
BrowseTabWrapper(migrateSourceTab(), onBackPressed = navigator::pop)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package eu.kanade.tachiyomi.ui.browse.source
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||
import eu.kanade.presentation.browse.BrowseTabWrapper
|
||||
import eu.kanade.presentation.util.Screen
|
||||
import eu.kanade.tachiyomi.ui.manga.MangaScreen
|
||||
|
|
@ -16,7 +18,8 @@ import java.io.Serializable
|
|||
class SourcesScreen(private val smartSearchConfig: SmartSearchConfig?) : Screen() {
|
||||
@Composable
|
||||
override fun Content() {
|
||||
BrowseTabWrapper(sourcesTab(smartSearchConfig))
|
||||
val navigator = LocalNavigator.currentOrThrow
|
||||
BrowseTabWrapper(sourcesTab(smartSearchConfig), onBackPressed = navigator::pop)
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -49,39 +49,34 @@ fun Screen.sourcesTab(
|
|||
true -> MR.strings.label_sources
|
||||
false -> SYMR.strings.find_in_another_source
|
||||
},
|
||||
actions = if (smartSearchConfig == null) {
|
||||
persistentListOf(
|
||||
AppBar.Action(
|
||||
title = stringResource(MR.strings.action_global_search),
|
||||
icon = Icons.Outlined.TravelExplore,
|
||||
onClick = { navigator.push(GlobalSearchScreen()) },
|
||||
),
|
||||
// KMK -->
|
||||
AppBar.Action(
|
||||
title = stringResource(KMR.strings.action_toggle_nsfw_only),
|
||||
icon = Icons.Outlined._18UpRating,
|
||||
iconTint = if (state.nsfwOnly) MaterialTheme.colorScheme.error else LocalContentColor.current,
|
||||
onClick = { screenModel.toggleNsfwOnly() },
|
||||
),
|
||||
// KMK <--
|
||||
AppBar.Action(
|
||||
title = stringResource(MR.strings.action_filter),
|
||||
icon = Icons.Outlined.FilterList,
|
||||
onClick = { navigator.push(SourcesFilterScreen()) },
|
||||
),
|
||||
)
|
||||
} else {
|
||||
// Merge: find in another source
|
||||
persistentListOf(
|
||||
// KMK -->
|
||||
AppBar.Action(
|
||||
title = stringResource(KMR.strings.action_toggle_nsfw_only),
|
||||
icon = Icons.Outlined._18UpRating,
|
||||
iconTint = if (state.nsfwOnly) MaterialTheme.colorScheme.error else LocalContentColor.current,
|
||||
onClick = { screenModel.toggleNsfwOnly() },
|
||||
),
|
||||
// KMK <--
|
||||
)
|
||||
actions = persistentListOf(
|
||||
AppBar.Action(
|
||||
title = stringResource(MR.strings.action_global_search),
|
||||
icon = Icons.Outlined.TravelExplore,
|
||||
onClick = { navigator.push(GlobalSearchScreen(smartSearchConfig?.origTitle ?: "")) },
|
||||
),
|
||||
// KMK -->
|
||||
AppBar.Action(
|
||||
title = stringResource(KMR.strings.action_toggle_nsfw_only),
|
||||
icon = Icons.Outlined._18UpRating,
|
||||
iconTint = if (state.nsfwOnly) MaterialTheme.colorScheme.error else LocalContentColor.current,
|
||||
onClick = { screenModel.toggleNsfwOnly() },
|
||||
),
|
||||
// KMK <--
|
||||
).let {
|
||||
when (smartSearchConfig) {
|
||||
null -> {
|
||||
it.add(
|
||||
AppBar.Action(
|
||||
title = stringResource(MR.strings.action_filter),
|
||||
icon = Icons.Outlined.FilterList,
|
||||
onClick = { navigator.push(SourcesFilterScreen()) },
|
||||
),
|
||||
)
|
||||
}
|
||||
// Merge: find in another source
|
||||
else -> it
|
||||
}
|
||||
},
|
||||
// SY <--
|
||||
content = { contentPadding, snackbarHostState ->
|
||||
|
|
|
|||
Loading…
Reference in a new issue