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