Link help pages in settings
This commit is contained in:
parent
a4b9a7260a
commit
cd70daba24
@ -1,6 +1,9 @@
|
|||||||
package de.mm20.launcher2.ui.component.preferences
|
package de.mm20.launcher2.ui.component.preferences
|
||||||
|
|
||||||
|
import android.net.Uri
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.browser.customtabs.CustomTabColorSchemeParams
|
||||||
|
import androidx.browser.customtabs.CustomTabsIntent
|
||||||
import androidx.compose.foundation.layout.RowScope
|
import androidx.compose.foundation.layout.RowScope
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
@ -8,10 +11,17 @@ import androidx.compose.foundation.lazy.LazyColumn
|
|||||||
import androidx.compose.foundation.lazy.LazyListScope
|
import androidx.compose.foundation.lazy.LazyListScope
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.rounded.ArrowBack
|
import androidx.compose.material.icons.rounded.ArrowBack
|
||||||
import androidx.compose.material3.*
|
import androidx.compose.material.icons.rounded.HelpOutline
|
||||||
|
import androidx.compose.material3.CenterAlignedTopAppBar
|
||||||
|
import androidx.compose.material3.Icon
|
||||||
|
import androidx.compose.material3.IconButton
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.Scaffold
|
||||||
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.graphics.toArgb
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
@ -24,6 +34,7 @@ fun PreferenceScreen(
|
|||||||
title: String,
|
title: String,
|
||||||
floatingActionButton: @Composable () -> Unit = {},
|
floatingActionButton: @Composable () -> Unit = {},
|
||||||
topBarActions: @Composable RowScope.() -> Unit = {},
|
topBarActions: @Composable RowScope.() -> Unit = {},
|
||||||
|
helpUrl: String? = null,
|
||||||
content: LazyListScope.() -> Unit,
|
content: LazyListScope.() -> Unit,
|
||||||
) {
|
) {
|
||||||
val navController = LocalNavController.current
|
val navController = LocalNavController.current
|
||||||
@ -31,6 +42,10 @@ fun PreferenceScreen(
|
|||||||
systemUiController.setStatusBarColor(MaterialTheme.colorScheme.surface)
|
systemUiController.setStatusBarColor(MaterialTheme.colorScheme.surface)
|
||||||
systemUiController.setNavigationBarColor(Color.Black)
|
systemUiController.setNavigationBarColor(Color.Black)
|
||||||
|
|
||||||
|
val context = LocalContext.current
|
||||||
|
|
||||||
|
val colorScheme = MaterialTheme.colorScheme
|
||||||
|
|
||||||
val activity = LocalContext.current as? AppCompatActivity
|
val activity = LocalContext.current as? AppCompatActivity
|
||||||
Scaffold(
|
Scaffold(
|
||||||
floatingActionButton = floatingActionButton,
|
floatingActionButton = floatingActionButton,
|
||||||
@ -53,7 +68,25 @@ fun PreferenceScreen(
|
|||||||
Icon(imageVector = Icons.Rounded.ArrowBack, contentDescription = "Back")
|
Icon(imageVector = Icons.Rounded.ArrowBack, contentDescription = "Back")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
actions = topBarActions
|
actions = {
|
||||||
|
if (helpUrl != null) {
|
||||||
|
IconButton(onClick = {
|
||||||
|
CustomTabsIntent.Builder()
|
||||||
|
.setDefaultColorSchemeParams(CustomTabColorSchemeParams.Builder()
|
||||||
|
.setToolbarColor(colorScheme.primaryContainer.toArgb())
|
||||||
|
.setSecondaryToolbarColor(colorScheme.secondaryContainer.toArgb())
|
||||||
|
.build()
|
||||||
|
)
|
||||||
|
.build().launchUrl(context, Uri.parse(helpUrl))
|
||||||
|
}) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Rounded.HelpOutline,
|
||||||
|
contentDescription = "Help"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
topBarActions()
|
||||||
|
}
|
||||||
)
|
)
|
||||||
}) {
|
}) {
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
|
|||||||
@ -32,7 +32,10 @@ import de.mm20.launcher2.ui.component.preferences.SwitchPreference
|
|||||||
fun CalendarWidgetSettingsScreen() {
|
fun CalendarWidgetSettingsScreen() {
|
||||||
val viewModel: CalendarWidgetSettingsScreenVM = viewModel()
|
val viewModel: CalendarWidgetSettingsScreenVM = viewModel()
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
PreferenceScreen(title = stringResource(R.string.preference_screen_calendarwidget)) {
|
PreferenceScreen(
|
||||||
|
title = stringResource(R.string.preference_screen_calendarwidget),
|
||||||
|
helpUrl = "https://kvaesitso.mm20.de/docs/user-guide/widgets/calendar-widget"
|
||||||
|
) {
|
||||||
item {
|
item {
|
||||||
val excludeAllDayEvents by viewModel.excludeAllDayEvents.observeAsState()
|
val excludeAllDayEvents by viewModel.excludeAllDayEvents.observeAsState()
|
||||||
PreferenceCategory {
|
PreferenceCategory {
|
||||||
|
|||||||
@ -28,7 +28,8 @@ import de.mm20.launcher2.ui.component.preferences.*
|
|||||||
fun ClockWidgetSettingsScreen() {
|
fun ClockWidgetSettingsScreen() {
|
||||||
val viewModel: ClockWidgetSettingsScreenVM = viewModel()
|
val viewModel: ClockWidgetSettingsScreenVM = viewModel()
|
||||||
PreferenceScreen(
|
PreferenceScreen(
|
||||||
title = stringResource(R.string.preference_screen_clockwidget)
|
title = stringResource(R.string.preference_screen_clockwidget),
|
||||||
|
helpUrl = "https://kvaesitso.mm20.de/docs/user-guide/widgets/clock"
|
||||||
) {
|
) {
|
||||||
item {
|
item {
|
||||||
PreferenceCategory {
|
PreferenceCategory {
|
||||||
|
|||||||
@ -22,6 +22,7 @@ fun CustomColorSchemeSettingsScreen() {
|
|||||||
|
|
||||||
PreferenceScreen(
|
PreferenceScreen(
|
||||||
title = stringResource(R.string.preference_screen_colors),
|
title = stringResource(R.string.preference_screen_colors),
|
||||||
|
helpUrl = "https://kvaesitso.mm20.de/docs/user-guide/customization/color-schemes",
|
||||||
topBarActions = {
|
topBarActions = {
|
||||||
var showOverflowMenu by remember { mutableStateOf(false) }
|
var showOverflowMenu by remember { mutableStateOf(false) }
|
||||||
IconButton(onClick = { showOverflowMenu = true }) {
|
IconButton(onClick = { showOverflowMenu = true }) {
|
||||||
|
|||||||
@ -35,7 +35,10 @@ fun CrashReporterScreen() {
|
|||||||
val reports by viewModel.reports.observeAsState()
|
val reports by viewModel.reports.observeAsState()
|
||||||
val showExceptions by viewModel.showExceptions.observeAsState(true)
|
val showExceptions by viewModel.showExceptions.observeAsState(true)
|
||||||
val showCrashes by viewModel.showCrashes.observeAsState(true)
|
val showCrashes by viewModel.showCrashes.observeAsState(true)
|
||||||
PreferenceScreen(title = stringResource(R.string.preference_crash_reporter)) {
|
PreferenceScreen(
|
||||||
|
title = stringResource(R.string.preference_crash_reporter),
|
||||||
|
helpUrl = "https://kvaesitso.mm20.de/docs/user-guide/troubleshooting/crashreporter"
|
||||||
|
) {
|
||||||
reports?.let {
|
reports?.let {
|
||||||
item {
|
item {
|
||||||
Row(
|
Row(
|
||||||
|
|||||||
@ -25,7 +25,8 @@ fun MusicWidgetSettingsScreen() {
|
|||||||
val viewModel: MusicWidgetSettingsScreenVM = viewModel()
|
val viewModel: MusicWidgetSettingsScreenVM = viewModel()
|
||||||
val hasPermission by viewModel.hasPermission.observeAsState()
|
val hasPermission by viewModel.hasPermission.observeAsState()
|
||||||
PreferenceScreen(
|
PreferenceScreen(
|
||||||
stringResource(R.string.preference_screen_musicwidget)
|
stringResource(R.string.preference_screen_musicwidget),
|
||||||
|
helpUrl = "https://kvaesitso.mm20.de/docs/user-guide/widgets/clock"
|
||||||
) {
|
) {
|
||||||
item {
|
item {
|
||||||
PreferenceCategory {
|
PreferenceCategory {
|
||||||
|
|||||||
@ -23,7 +23,10 @@ fun WeatherWidgetSettingsScreen() {
|
|||||||
val viewModel: WeatherWidgetSettingsScreenVM = viewModel()
|
val viewModel: WeatherWidgetSettingsScreenVM = viewModel()
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
|
|
||||||
PreferenceScreen(title = stringResource(R.string.preference_screen_weatherwidget)) {
|
PreferenceScreen(
|
||||||
|
title = stringResource(R.string.preference_screen_weatherwidget),
|
||||||
|
helpUrl = "https://kvaesitso.mm20.de/docs/user-guide/widgets/weather-widget"
|
||||||
|
) {
|
||||||
item {
|
item {
|
||||||
PreferenceCategory {
|
PreferenceCategory {
|
||||||
val weatherProvider by viewModel.weatherProvider.observeAsState()
|
val weatherProvider by viewModel.weatherProvider.observeAsState()
|
||||||
|
|||||||
@ -91,7 +91,8 @@ fun WebSearchSettingsScreen() {
|
|||||||
FloatingActionButton(onClick = { showNewDialog = true }) {
|
FloatingActionButton(onClick = { showNewDialog = true }) {
|
||||||
Icon(imageVector = Icons.Rounded.Add, contentDescription = null)
|
Icon(imageVector = Icons.Rounded.Add, contentDescription = null)
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
helpUrl = "https://kvaesitso.mm20.de/docs/user-guide/search/websearches"
|
||||||
) {
|
) {
|
||||||
item {
|
item {
|
||||||
PreferenceCategory {
|
PreferenceCategory {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user