From a78e9e73e68c3043a38e3989193e77dc4382cfde Mon Sep 17 00:00:00 2001 From: YuKongA <70465933+YuKongA@users.noreply.github.com> Date: Tue, 26 Aug 2025 11:23:56 +0800 Subject: [PATCH] manager: Fix some issues * Button in module card now display installation status * Unable to click to view template * Bottom button in long dialog is not displayed --- .../me/weishu/kernelsu/ui/component/Dialog.kt | 80 ++++++++++++------- .../ui/component/profile/TemplateConfig.kt | 5 +- .../weishu/kernelsu/ui/screen/AppProfile.kt | 1 - .../me/weishu/kernelsu/ui/screen/Module.kt | 2 +- 4 files changed, 54 insertions(+), 34 deletions(-) diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/component/Dialog.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/component/Dialog.kt index 0c7cb6829561..c66afcf415ee 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/component/Dialog.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/component/Dialog.kt @@ -10,12 +10,16 @@ import android.view.ViewGroup import android.widget.TextView import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState @@ -29,6 +33,7 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.layout.Layout import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp @@ -411,42 +416,59 @@ private fun ConfirmDialog( showDialog: MutableState ) { SuperDialog( + modifier = Modifier.windowInsetsPadding(WindowInsets.systemBars.only(WindowInsetsSides.Top)), show = showDialog, title = visuals.title, onDismissRequest = { showDialog.value = false }, content = { - Column { - visuals.content?.let { - if (visuals.isMarkdown) { - MarkdownContent(content = visuals.content!!) - } else { - Text(text = visuals.content!!) + Layout( + content = { + visuals.content?.let { + if (visuals.isMarkdown) { + MarkdownContent(content = visuals.content!!) + } else { + Text(text = visuals.content!!) + } + } + Row( + horizontalArrangement = Arrangement.SpaceBetween, + modifier = Modifier.padding(top = 12.dp) + ) { + TextButton( + text = visuals.dismiss ?: stringResource(id = android.R.string.cancel), + onClick = { + dismiss() + showDialog.value = false + }, + modifier = Modifier.weight(1f) + ) + Spacer(Modifier.width(20.dp)) + TextButton( + text = visuals.confirm ?: stringResource(id = android.R.string.ok), + onClick = { + confirm() + showDialog.value = false + }, + modifier = Modifier.weight(1f), + colors = ButtonDefaults.textButtonColorsPrimary() + ) } } - Row( - horizontalArrangement = Arrangement.SpaceBetween, - modifier = Modifier.padding(top = 12.dp) - ) { - TextButton( - text = visuals.dismiss ?: stringResource(id = android.R.string.cancel), - onClick = { - dismiss() - showDialog.value = false - }, - modifier = Modifier.weight(1f) - ) - Spacer(Modifier.width(20.dp)) - TextButton( - text = visuals.confirm ?: stringResource(id = android.R.string.ok), - onClick = { - confirm() - showDialog.value = false - }, - modifier = Modifier.weight(1f), - colors = ButtonDefaults.textButtonColorsPrimary() - ) + ) { measurables, constraints -> + if (measurables.size != 2) { + val button = measurables[0].measure(constraints) + layout(constraints.maxWidth, button.height) { + button.place(0, 0) + } + } else { + val button = measurables[1].measure(constraints) + val lazyList = measurables[0].measure(constraints.copy(maxHeight = constraints.maxHeight - button.height)) + layout(constraints.maxWidth, lazyList.height + button.height) { + lazyList.place(0, 0) + button.place(0, lazyList.height) + } } } } diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/component/profile/TemplateConfig.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/component/profile/TemplateConfig.kt index 4224eb35dfa1..bd0544cb822c 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/component/profile/TemplateConfig.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/component/profile/TemplateConfig.kt @@ -36,9 +36,6 @@ fun TemplateConfig( onProfileChange: (Natives.Profile) -> Unit ) { var expanded by remember { mutableStateOf(false) } - var template by rememberSaveable { - mutableStateOf(profile.rootTemplate ?: "") - } val profileTemplates = listAppProfileTemplates() val noTemplates = profileTemplates.isEmpty() @@ -56,6 +53,8 @@ fun TemplateConfig( onClick = onManageTemplate, ) } else { + var template by rememberSaveable { mutableStateOf(profile.rootTemplate ?: profileTemplates[0]) } + Column { SuperDropdown( title = stringResource(R.string.profile_template), diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/AppProfile.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/AppProfile.kt index 2639bbac9c4b..c512bf9ff08e 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/AppProfile.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/AppProfile.kt @@ -256,7 +256,6 @@ private fun AppProfileInner( Column( modifier = Modifier.padding(bottom = 12.dp) ) { - //SmallTitle(text = stringResource(R.string.profile)) if (current) { val initialMode = if (profile.rootUseDefault) { Mode.Default diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Module.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Module.kt index ee70eee1b936..83f55d657929 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Module.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Module.kt @@ -673,7 +673,7 @@ fun ModuleItem( ) } Switch( - modifier = Modifier, + enabled = !module.update, checked = module.enabled, onCheckedChange = onCheckChanged )