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:
Tim Schneeberger 2025-01-21 20:30:28 +01:00 committed by Cuong-Tran
parent c643d8a55b
commit 69b1af8534
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
4 changed files with 38 additions and 39 deletions

View file

@ -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) },

View file

@ -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)
}
}

View file

@ -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)
}
/**

View file

@ -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 ->