From cd70daba2421fbf9b7a7c7119be639f9bada3694 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sun, 16 Oct 2022 16:06:46 +0200 Subject: [PATCH] Link help pages in settings --- .../component/preferences/PreferenceScreen.kt | 37 ++++++++++++++++++- .../CalendarWidgetSettingsScreen.kt | 5 ++- .../clockwidget/ClockWidgetSettingsScreen.kt | 3 +- .../CustomColorSchemeSettingsScreen.kt | 1 + .../crashreporter/CrashReporterScreen.kt | 5 ++- .../musicwidget/MusicWidgetSettingsScreen.kt | 3 +- .../WeatherWidgetSettingsScreen.kt | 5 ++- .../websearch/WebSearchSettingsScreen.kt | 3 +- 8 files changed, 54 insertions(+), 8 deletions(-) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/PreferenceScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/PreferenceScreen.kt index c338c58e..4bd80e8f 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/PreferenceScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/PreferenceScreen.kt @@ -1,6 +1,9 @@ package de.mm20.launcher2.ui.component.preferences +import android.net.Uri 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.fillMaxSize 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.material.icons.Icons 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.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp @@ -24,6 +34,7 @@ fun PreferenceScreen( title: String, floatingActionButton: @Composable () -> Unit = {}, topBarActions: @Composable RowScope.() -> Unit = {}, + helpUrl: String? = null, content: LazyListScope.() -> Unit, ) { val navController = LocalNavController.current @@ -31,6 +42,10 @@ fun PreferenceScreen( systemUiController.setStatusBarColor(MaterialTheme.colorScheme.surface) systemUiController.setNavigationBarColor(Color.Black) + val context = LocalContext.current + + val colorScheme = MaterialTheme.colorScheme + val activity = LocalContext.current as? AppCompatActivity Scaffold( floatingActionButton = floatingActionButton, @@ -53,7 +68,25 @@ fun PreferenceScreen( 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( diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/calendarwidget/CalendarWidgetSettingsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/calendarwidget/CalendarWidgetSettingsScreen.kt index c6a8531c..59181dcc 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/calendarwidget/CalendarWidgetSettingsScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/calendarwidget/CalendarWidgetSettingsScreen.kt @@ -32,7 +32,10 @@ import de.mm20.launcher2.ui.component.preferences.SwitchPreference fun CalendarWidgetSettingsScreen() { val viewModel: CalendarWidgetSettingsScreenVM = viewModel() 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 { val excludeAllDayEvents by viewModel.excludeAllDayEvents.observeAsState() PreferenceCategory { diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/clockwidget/ClockWidgetSettingsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/clockwidget/ClockWidgetSettingsScreen.kt index 8856baca..63ac3f19 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/clockwidget/ClockWidgetSettingsScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/clockwidget/ClockWidgetSettingsScreen.kt @@ -28,7 +28,8 @@ import de.mm20.launcher2.ui.component.preferences.* fun ClockWidgetSettingsScreen() { val viewModel: ClockWidgetSettingsScreenVM = viewModel() 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 { PreferenceCategory { diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/colorscheme/CustomColorSchemeSettingsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/colorscheme/CustomColorSchemeSettingsScreen.kt index 7ae61ded..fbec6e7b 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/colorscheme/CustomColorSchemeSettingsScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/colorscheme/CustomColorSchemeSettingsScreen.kt @@ -22,6 +22,7 @@ fun CustomColorSchemeSettingsScreen() { PreferenceScreen( title = stringResource(R.string.preference_screen_colors), + helpUrl = "https://kvaesitso.mm20.de/docs/user-guide/customization/color-schemes", topBarActions = { var showOverflowMenu by remember { mutableStateOf(false) } IconButton(onClick = { showOverflowMenu = true }) { diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/crashreporter/CrashReporterScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/crashreporter/CrashReporterScreen.kt index a92d8dc4..97fc9634 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/crashreporter/CrashReporterScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/crashreporter/CrashReporterScreen.kt @@ -35,7 +35,10 @@ fun CrashReporterScreen() { val reports by viewModel.reports.observeAsState() val showExceptions by viewModel.showExceptions.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 { item { Row( diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/musicwidget/MusicWidgetSettingsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/musicwidget/MusicWidgetSettingsScreen.kt index 5b4e1074..f43ccf32 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/musicwidget/MusicWidgetSettingsScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/musicwidget/MusicWidgetSettingsScreen.kt @@ -25,7 +25,8 @@ fun MusicWidgetSettingsScreen() { val viewModel: MusicWidgetSettingsScreenVM = viewModel() val hasPermission by viewModel.hasPermission.observeAsState() PreferenceScreen( - stringResource(R.string.preference_screen_musicwidget) + stringResource(R.string.preference_screen_musicwidget), + helpUrl = "https://kvaesitso.mm20.de/docs/user-guide/widgets/clock" ) { item { PreferenceCategory { diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/weatherwidget/WeatherWidgetSettingsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/weatherwidget/WeatherWidgetSettingsScreen.kt index 8cc82354..53a13320 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/weatherwidget/WeatherWidgetSettingsScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/weatherwidget/WeatherWidgetSettingsScreen.kt @@ -23,7 +23,10 @@ fun WeatherWidgetSettingsScreen() { val viewModel: WeatherWidgetSettingsScreenVM = viewModel() 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 { PreferenceCategory { val weatherProvider by viewModel.weatherProvider.observeAsState() diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/websearch/WebSearchSettingsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/websearch/WebSearchSettingsScreen.kt index bb651d4b..02a132bb 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/websearch/WebSearchSettingsScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/websearch/WebSearchSettingsScreen.kt @@ -91,7 +91,8 @@ fun WebSearchSettingsScreen() { FloatingActionButton(onClick = { showNewDialog = true }) { Icon(imageVector = Icons.Rounded.Add, contentDescription = null) } - } + }, + helpUrl = "https://kvaesitso.mm20.de/docs/user-guide/search/websearches" ) { item { PreferenceCategory {