From 4fc8a623741df410f16b20c504ff453e56b05a3a Mon Sep 17 00:00:00 2001 From: tiann Date: Sun, 1 Jan 2023 20:55:25 +0800 Subject: [PATCH] manager: Add settings screen --- manager/app/build.gradle.kts | 1 + .../java/me/weishu/kernelsu/ui/screen/Home.kt | 26 ------- .../me/weishu/kernelsu/ui/screen/Settings.kt | 71 +++++++++++++++++-- manager/app/src/main/res/values/strings.xml | 3 + 4 files changed, 70 insertions(+), 31 deletions(-) diff --git a/manager/app/build.gradle.kts b/manager/app/build.gradle.kts index 2343272e..7a298b5b 100644 --- a/manager/app/build.gradle.kts +++ b/manager/app/build.gradle.kts @@ -77,6 +77,7 @@ dependencies { implementation("me.zhanghai.android.appiconloader:appiconloader-coil:1.5.0") implementation("com.github.topjohnwu.libsu:core:5.0.3") + implementation("com.github.alorma:compose-settings-ui-m3:0.15.0") ksp("io.github.raamcosta.compose-destinations:ksp:$composeDestinationsVersion") diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Home.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Home.kt index 068458d5..0827d4be 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Home.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Home.kt @@ -63,7 +63,6 @@ fun HomeScreen(navigator: DestinationsNavigator) { StatusCard(kernelVersion, ksuVersion) InfoCard() - SupportCard() Spacer(Modifier) } } @@ -253,28 +252,3 @@ private fun StatusCardPreview() { StatusCard(KernelVersion(4, 10, 101), null) } } - -@Preview -@Composable -private fun SupportCard() { - ElevatedCard { - Column( - modifier = Modifier - .fillMaxWidth() - .padding(24.dp) - ) { - Text( - text = stringResource(R.string.home_support), - fontWeight = FontWeight.SemiBold, - style = MaterialTheme.typography.titleMedium - ) - Spacer(Modifier.height(8.dp)) - CompositionLocalProvider(LocalTextStyle provides MaterialTheme.typography.bodyMedium) { - LinkifyText("Author: weishu") - LinkifyText("Github: https://github.com/tiann/KernelSU") - LinkifyText("Telegram: https://t.me/KernelSU") - LinkifyText("QQ: https://pd.qq.com/s/8lipl1brp") - } - } - } -} diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Settings.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Settings.kt index fcad169c..7fabed14 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Settings.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Settings.kt @@ -1,16 +1,21 @@ package me.weishu.kernelsu.ui.screen -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.filled.Info import androidx.compose.material3.* -import androidx.compose.runtime.Composable +import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.alorma.compose.settings.ui.* import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.navigation.DestinationsNavigator import me.weishu.kernelsu.R +import me.weishu.kernelsu.ui.util.LinkifyText /** * @author weishu @@ -21,7 +26,7 @@ import me.weishu.kernelsu.R @Composable fun SettingScreen(navigator: DestinationsNavigator) { - Scaffold ( + Scaffold( topBar = { TopBar(onBack = { navigator.popBackStack() @@ -29,8 +34,48 @@ fun SettingScreen(navigator: DestinationsNavigator) { } ) { paddingValues -> + var openDialog by remember { mutableStateOf(false) } + + if (openDialog) { + AlertDialog( + onDismissRequest = { + openDialog = false + }, + title = { + Text(text = stringResource(id = R.string.about)) + }, + text = { + SupportCard() + }, + confirmButton = { + TextButton( + onClick = { + openDialog = false + } + ) { + Text(stringResource(id = android.R.string.ok)) + } + }, + ) + } + Column(modifier = Modifier.padding(paddingValues)) { - Text(text = stringResource(id = R.string.settings)) + + SettingsSwitch( + title = { + Text(stringResource(id = R.string.settings_system_rw)) + }, + subtitle = { + Text(stringResource(id = R.string.settings_system_rw_summary)) + } + ) + SettingsMenuLink(title = { + Text(stringResource(id = R.string.about)) + }, + onClick = { + openDialog = true + } + ) } } } @@ -46,4 +91,20 @@ private fun TopBar(onBack: () -> Unit = {}) { ) { Icon(Icons.Filled.ArrowBack, contentDescription = null) } }, ) +} + +@Preview +@Composable +private fun SupportCard() { + Column( + modifier = Modifier + .fillMaxWidth() + ) { + CompositionLocalProvider(LocalTextStyle provides MaterialTheme.typography.bodyMedium) { + LinkifyText("Author: weishu") + LinkifyText("Github: https://github.com/tiann/KernelSU") + LinkifyText("Telegram: https://t.me/KernelSU") + LinkifyText("QQ: https://pd.qq.com/s/8lipl1brp") + } + } } \ No newline at end of file diff --git a/manager/app/src/main/res/values/strings.xml b/manager/app/src/main/res/values/strings.xml index bcf9a360..80c12719 100644 --- a/manager/app/src/main/res/values/strings.xml +++ b/manager/app/src/main/res/values/strings.xml @@ -28,4 +28,7 @@ Reboot to Bootloader Reboot to Download Reboot to EDL + Make system writable + Use overlayfs to make system partition writable, reboot to take effect. + About