Add advanced web search action options

This commit is contained in:
MM20 2022-11-19 21:23:48 +01:00
parent 3d6af207ad
commit b1077fad12
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
2 changed files with 51 additions and 6 deletions

View File

@ -90,6 +90,7 @@ import de.mm20.launcher2.ui.R
import de.mm20.launcher2.ui.component.BottomSheetDialog import de.mm20.launcher2.ui.component.BottomSheetDialog
import de.mm20.launcher2.ui.component.ExperimentalBadge import de.mm20.launcher2.ui.component.ExperimentalBadge
import de.mm20.launcher2.ui.component.SearchActionIcon import de.mm20.launcher2.ui.component.SearchActionIcon
import de.mm20.launcher2.ui.component.preferences.ListPreference
import de.mm20.launcher2.ui.ktx.toPixels import de.mm20.launcher2.ui.ktx.toPixels
@Composable @Composable
@ -442,14 +443,20 @@ fun CustomizeWebSearch(viewModel: EditSearchActionSheetVM) {
.padding(vertical = 4.dp) .padding(vertical = 4.dp)
.clickable { .clickable {
CustomTabsIntent.Builder() CustomTabsIntent
.Builder()
.setDefaultColorSchemeParams( .setDefaultColorSchemeParams(
CustomTabColorSchemeParams.Builder() CustomTabColorSchemeParams
.setToolbarColor(colorScheme.primaryContainer.toArgb()) .Builder()
.setSecondaryToolbarColor(colorScheme.secondaryContainer.toArgb()) .setToolbarColor(colorScheme.primaryContainer.toArgb())
.build() .setSecondaryToolbarColor(colorScheme.secondaryContainer.toArgb())
.build()
)
.build()
.launchUrl(
context,
Uri.parse("https://kvaesitso.mm20.de/docs/user-guide/search/quickactions#web-search")
) )
.build().launchUrl(context, Uri.parse("https://kvaesitso.mm20.de/docs/user-guide/search/quickactions#web-search"))
}, },
color = MaterialTheme.colorScheme.secondary, color = MaterialTheme.colorScheme.secondary,
style = LocalTextStyle.current.copy(textDecoration = TextDecoration.Underline) style = LocalTextStyle.current.copy(textDecoration = TextDecoration.Underline)
@ -475,6 +482,34 @@ fun CustomizeWebSearch(viewModel: EditSearchActionSheetVM) {
}, OffsetMapping.Identity) }, OffsetMapping.Identity)
} }
) )
var showAdvanced by remember {
mutableStateOf(false)
}
AnimatedVisibility(!showAdvanced) {
TextButton(
modifier = Modifier.padding(top = 16.dp),
onClick = { showAdvanced = true }) {
Text(stringResource(id = R.string.websearch_dialog_advanced))
}
}
AnimatedVisibility(showAdvanced) {
ListPreference(
title = stringResource(R.string.websearch_dialog_query_encoding),
items = listOf(
stringResource(id = R.string.websearch_dialog_query_encoding_url) to WebsearchActionBuilder.QueryEncoding.UrlEncode,
stringResource(id = R.string.websearch_dialog_query_encoding_form) to WebsearchActionBuilder.QueryEncoding.FormData,
stringResource(id = R.string.websearch_dialog_query_encoding_none) to WebsearchActionBuilder.QueryEncoding.None,
),
value = (searchAction as WebsearchActionBuilder).encoding,
onValueChanged = {
viewModel.setQueryEncoding(it)
},
iconPadding = false
)
}
} }
} }
} }

View File

@ -457,6 +457,16 @@ class EditSearchActionSheetVM : ViewModel(), KoinComponent {
else -> action else -> action
} }
} }
fun setQueryEncoding(encoding: WebsearchActionBuilder.QueryEncoding) {
val action = searchAction.value ?: return
searchAction.value = when(action) {
is WebsearchActionBuilder -> action.copy(
encoding = encoding
)
else -> action
}
}
} }
enum class EditSearchActionPage { enum class EditSearchActionPage {