You've already forked KernelSU-Next
mirror of
https://github.com/KernelSU-Next/KernelSU-Next.git
synced 2025-08-27 23:46:34 +00:00
manager: UI improvements to BottomBar, HomeScreen and ModuleScreen
This commit is contained in:
@@ -20,7 +20,7 @@ enum class BottomBarDestination(
|
|||||||
val rootRequired: Boolean,
|
val rootRequired: Boolean,
|
||||||
) {
|
) {
|
||||||
Home(HomeScreenDestination, R.string.home, Icons.Filled.Home, Icons.Outlined.Home, false),
|
Home(HomeScreenDestination, R.string.home, Icons.Filled.Home, Icons.Outlined.Home, false),
|
||||||
SuperUser(SuperUserScreenDestination, R.string.superuser, Icons.Filled.Security, Icons.Outlined.Security, true),
|
SuperUser(SuperUserScreenDestination, R.string.superuser, Icons.Filled.AdminPanelSettings, Icons.Outlined.AdminPanelSettings, true),
|
||||||
Module(ModuleScreenDestination, R.string.module, Icons.Filled.Layers, Icons.Outlined.Layers, true),
|
Module(ModuleScreenDestination, R.string.module, Icons.Filled.Layers, Icons.Outlined.Layers, true),
|
||||||
Settings(SettingScreenDestination, R.string.settings, Icons.Filled.Settings, Icons.Outlined.Settings, true)
|
Settings(SettingScreenDestination, R.string.settings, Icons.Filled.Settings, Icons.Outlined.Settings, true)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,12 +11,8 @@ import androidx.compose.foundation.layout.*
|
|||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.Archive
|
import androidx.compose.material.icons.filled.*
|
||||||
import androidx.compose.material.icons.filled.Refresh
|
import androidx.compose.material.icons.outlined.*
|
||||||
import androidx.compose.material.icons.filled.Settings
|
|
||||||
import androidx.compose.material.icons.outlined.Block
|
|
||||||
import androidx.compose.material.icons.outlined.CheckCircle
|
|
||||||
import androidx.compose.material.icons.outlined.Warning
|
|
||||||
import androidx.compose.material3.*
|
import androidx.compose.material3.*
|
||||||
import androidx.compose.runtime.*
|
import androidx.compose.runtime.*
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
@@ -40,6 +36,7 @@ import me.weishu.kernelsu.R
|
|||||||
import me.weishu.kernelsu.ui.component.rememberConfirmDialog
|
import me.weishu.kernelsu.ui.component.rememberConfirmDialog
|
||||||
import me.weishu.kernelsu.ui.util.*
|
import me.weishu.kernelsu.ui.util.*
|
||||||
import me.weishu.kernelsu.ui.util.module.LatestVersionInfo
|
import me.weishu.kernelsu.ui.util.module.LatestVersionInfo
|
||||||
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Destination<RootGraph>(start = true)
|
@Destination<RootGraph>(start = true)
|
||||||
@@ -341,29 +338,59 @@ private fun InfoCard() {
|
|||||||
val uname = Os.uname()
|
val uname = Os.uname()
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun InfoCardItem(label: String, content: String) {
|
fun InfoCardItem(label: String, content: String, icon: ImageVector? = null) {
|
||||||
contents.appendLine(label).appendLine(content).appendLine()
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
Text(text = label, style = MaterialTheme.typography.bodyLarge)
|
if (icon != null) {
|
||||||
Text(text = content, style = MaterialTheme.typography.bodyMedium)
|
Icon(
|
||||||
|
imageVector = icon,
|
||||||
|
contentDescription = null,
|
||||||
|
modifier = Modifier
|
||||||
|
.padding(end = 8.dp)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Column {
|
||||||
|
Text(
|
||||||
|
text = label,
|
||||||
|
style = MaterialTheme.typography.bodyLarge
|
||||||
|
)
|
||||||
|
Text(
|
||||||
|
text = content,
|
||||||
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
|
modifier = Modifier.padding(top = 4.dp)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
InfoCardItem(stringResource(R.string.home_kernel), uname.release)
|
|
||||||
|
InfoCardItem(stringResource(R.string.home_kernel),
|
||||||
|
uname.release,
|
||||||
|
icon = Icons.Filled.Memory,
|
||||||
|
)
|
||||||
|
|
||||||
Spacer(Modifier.height(16.dp))
|
Spacer(Modifier.height(16.dp))
|
||||||
InfoCardItem(
|
InfoCardItem(
|
||||||
stringResource(R.string.home_android),
|
stringResource(R.string.home_android),
|
||||||
"${Build.VERSION.RELEASE} (${Build.VERSION.SDK_INT})"
|
"${Build.VERSION.RELEASE} (${Build.VERSION.SDK_INT})",
|
||||||
|
icon = Icons.Filled.Android,
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
Spacer(Modifier.height(16.dp))
|
Spacer(Modifier.height(16.dp))
|
||||||
val managerVersion = getManagerVersion(context)
|
val managerVersion = getManagerVersion(context)
|
||||||
InfoCardItem(
|
InfoCardItem(
|
||||||
stringResource(R.string.home_manager_version),
|
stringResource(R.string.home_manager_version),
|
||||||
"${managerVersion.first}-next (${managerVersion.second})"
|
"${managerVersion.first}-next (${managerVersion.second})",
|
||||||
|
icon = Icons.Filled.Article,
|
||||||
)
|
)
|
||||||
|
|
||||||
Spacer(Modifier.height(16.dp))
|
Spacer(Modifier.height(16.dp))
|
||||||
InfoCardItem(stringResource(R.string.home_selinux_status), getSELinuxStatus())
|
InfoCardItem(
|
||||||
|
label = stringResource(R.string.home_selinux_status),
|
||||||
|
content = getSELinuxStatus(),
|
||||||
|
icon = Icons.Filled.Security,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -469,26 +469,6 @@ fun ModuleItem(
|
|||||||
|
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.run {
|
|
||||||
if (module.hasWebUi) {
|
|
||||||
toggleable(
|
|
||||||
value = isChecked,
|
|
||||||
interactionSource = interactionSource,
|
|
||||||
role = Role.Button,
|
|
||||||
indication = indication,
|
|
||||||
onValueChange = { onClick(module) }
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
toggleable(
|
|
||||||
value = isChecked,
|
|
||||||
interactionSource = interactionSource,
|
|
||||||
role = Role.Switch,
|
|
||||||
indication = indication,
|
|
||||||
onValueChange = onCheckChanged,
|
|
||||||
enabled = !module.update
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.padding(22.dp, 18.dp, 22.dp, 12.dp)
|
.padding(22.dp, 18.dp, 22.dp, 12.dp)
|
||||||
) {
|
) {
|
||||||
Row(
|
Row(
|
||||||
|
|||||||
Reference in New Issue
Block a user