From 540ce1d2c3634e9386763edef6a463ecb099a8b0 Mon Sep 17 00:00:00 2001 From: rifsxd Date: Wed, 21 May 2025 23:42:05 +0600 Subject: [PATCH] manager: redesign/rearrange home infocard --- .../java/com/rifsxd/ksunext/ui/screen/Home.kt | 195 ++++++++++-------- 1 file changed, 106 insertions(+), 89 deletions(-) diff --git a/manager/app/src/main/java/com/rifsxd/ksunext/ui/screen/Home.kt b/manager/app/src/main/java/com/rifsxd/ksunext/ui/screen/Home.kt index 8e5678a9..82e603df 100644 --- a/manager/app/src/main/java/com/rifsxd/ksunext/ui/screen/Home.kt +++ b/manager/app/src/main/java/com/rifsxd/ksunext/ui/screen/Home.kt @@ -409,110 +409,127 @@ private fun InfoCard() { .fillMaxWidth() .padding(start = 24.dp, top = 24.dp, end = 24.dp, bottom = 16.dp) ) { - val contents = StringBuilder() - val uname = Os.uname() + var expanded by rememberSaveable { mutableStateOf(false) } @Composable fun InfoCardItem(label: String, content: String, icon: Any? = null) { - Row(verticalAlignment = Alignment.CenterVertically) { - if (icon != null) { - when (icon) { - is ImageVector -> Icon( - imageVector = icon, - contentDescription = null, - modifier = Modifier.padding(end = 20.dp) - ) + Row(verticalAlignment = Alignment.CenterVertically) { + if (icon != null) { + when (icon) { + is ImageVector -> Icon( + imageVector = icon, + contentDescription = null, + modifier = Modifier.padding(end = 20.dp) + ) + is Painter -> Icon( + painter = icon, + contentDescription = null, + modifier = Modifier.padding(end = 20.dp) + ) + } + } + Column { + Text( + text = label, + style = MaterialTheme.typography.bodyLarge + ) + Text( + text = content, + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.padding(top = 4.dp) + ) + } + } + } - is Painter -> Icon( - painter = icon, - contentDescription = null, - modifier = Modifier.padding(end = 20.dp) - ) - } - } - Column { - Text( - text = label, - style = MaterialTheme.typography.bodyLarge - ) - Text( - text = content, - style = MaterialTheme.typography.bodyMedium, - modifier = Modifier.padding(top = 4.dp) - ) - } + Column { + val managerVersion = getManagerVersion(context) + InfoCardItem( + label = stringResource(R.string.home_manager_version), + content = "${managerVersion.first} (${managerVersion.second})", + icon = painterResource(R.drawable.ic_ksu_next), + ) + + if (Natives.version >= Natives.MINIMAL_SUPPORTED_HOOK_MODE) { + Spacer(Modifier.height(16.dp)) + InfoCardItem( + label = stringResource(R.string.hook_mode), + content = Natives.getHookMode() ?: stringResource(R.string.unavailable), + icon = Icons.Filled.Phishing, + ) } - } - - - InfoCardItem( - label = stringResource(R.string.home_kernel), - content = "${uname.release} (${uname.machine})", - icon = painterResource(R.drawable.ic_linux), - ) - - if (Natives.version >= Natives.MINIMAL_SUPPORTED_HOOK_MODE) { Spacer(Modifier.height(16.dp)) InfoCardItem( - label = stringResource(R.string.hook_mode), - content = Natives.getHookMode() ?: stringResource(R.string.unavailable), - icon = Icons.Filled.Phishing, + label = stringResource(R.string.home_mount_system), + content = currentMountSystem().ifEmpty { stringResource(R.string.unavailable) }, + icon = Icons.Filled.SettingsSuggest, ) + + val suSFS = getSuSFS() + if (suSFS == "Supported") { + val isSUS_SU = getSuSFSFeatures() == "CONFIG_KSU_SUSFS_SUS_SU" + val susSUMode = if (isSUS_SU) { + val mode = susfsSUS_SU_Mode() + val modeString = + if (mode == "2") stringResource(R.string.enabled) else stringResource(R.string.disabled) + "| SuS SU: $modeString" + } else "" + Spacer(Modifier.height(16.dp)) + InfoCardItem( + label = stringResource(R.string.home_susfs_version), + content = "${getSuSFSVersion()} (${getSuSFSVariant()}) $susSUMode", + icon = painterResource(R.drawable.ic_sus), + ) + } } - Spacer(Modifier.height(16.dp)) - InfoCardItem( - label = stringResource(R.string.home_android), - content = "${Build.VERSION.RELEASE} (${Build.VERSION.SDK_INT})", - icon = Icons.Filled.Android, + if (!expanded) { + Spacer(Modifier.height(12.dp)) + Row( + modifier = Modifier + .fillMaxWidth() + .clickable { expanded = true }, + horizontalArrangement = Arrangement.Center + ) { + Icon( + imageVector = Icons.Filled.KeyboardArrowDown, + contentDescription = "Show more" + ) + } + } - ) + AnimatedVisibility(visible = expanded) { + val uname = Os.uname() + Column { + Spacer(Modifier.height(16.dp)) + InfoCardItem( + label = stringResource(R.string.home_kernel), + content = "${uname.release} (${uname.machine})", + icon = painterResource(R.drawable.ic_linux), + ) - Spacer(Modifier.height(16.dp)) - val managerVersion = getManagerVersion(context) - InfoCardItem( - label = stringResource(R.string.home_manager_version), - content = "${managerVersion.first} (${managerVersion.second})", - icon = painterResource(R.drawable.ic_ksu_next), - ) + Spacer(Modifier.height(16.dp)) + InfoCardItem( + label = stringResource(R.string.home_android), + content = "${Build.VERSION.RELEASE} (${Build.VERSION.SDK_INT})", + icon = Icons.Filled.Android, + ) - Spacer(Modifier.height(16.dp)) - InfoCardItem( - label = stringResource(R.string.home_abi), - content = Build.SUPPORTED_ABIS.joinToString(", "), - icon = Icons.Filled.Memory, - ) + Spacer(Modifier.height(16.dp)) + InfoCardItem( + label = stringResource(R.string.home_abi), + content = Build.SUPPORTED_ABIS.joinToString(", "), + icon = Icons.Filled.Memory, + ) - Spacer(Modifier.height(16.dp)) - InfoCardItem( - label = stringResource(R.string.home_selinux_status), - content = getSELinuxStatus(), - icon = Icons.Filled.Security, - ) - - Spacer(Modifier.height(16.dp)) - InfoCardItem( - label = stringResource(R.string.home_mount_system), - content = currentMountSystem().ifEmpty { stringResource(R.string.unavailable) }, - icon = Icons.Filled.SettingsSuggest, - ) - - val suSFS = getSuSFS() - if (suSFS == "Supported") { - val isSUS_SU = getSuSFSFeatures() == "CONFIG_KSU_SUSFS_SUS_SU" - val susSUMode = if (isSUS_SU) { - val mode = susfsSUS_SU_Mode() - val modeString = - if (mode == "2") stringResource(R.string.enabled) else stringResource(R.string.disabled) - "| SuS SU: $modeString" - } else "" - Spacer(Modifier.height(16.dp)) - InfoCardItem( - label = stringResource(R.string.home_susfs_version), - content = "${getSuSFSVersion()} (${getSuSFSVariant()}) $susSUMode", - icon = painterResource(R.drawable.ic_sus), - ) + Spacer(Modifier.height(16.dp)) + InfoCardItem( + label = stringResource(R.string.home_selinux_status), + content = getSELinuxStatus(), + icon = Icons.Filled.Security, + ) + } } } }