Skip to content

Commit

Permalink
refactor: 更新UI交互逻辑
Browse files Browse the repository at this point in the history
  • Loading branch information
jixiaoyong committed Apr 7, 2024
1 parent 921fb87 commit 880bd35
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 46 deletions.
23 changes: 14 additions & 9 deletions src/main/kotlin/io/github/jixiaoyong/pages/settings/Settings.kt
Original file line number Diff line number Diff line change
Expand Up @@ -70,16 +70,19 @@ fun PageSettingInfo() {
onConfirm = { viewModel.runRestConfig() }) {
Column(modifier = Modifier.widthIn(350.dp).padding(start = 30.dp)) {
Text(i18nString.confirmResetTips)
CheckBox(checked = resetConfig.resetSignInfo, title = i18nString.signConfig, onCheckedChange = {
viewModel.updateResetConfig(resetSignInfo = !resetConfig.resetSignInfo)
})
CheckBox(checked = resetConfig.resetApkTools,
CheckBox(checked = resetConfig.resetSignInfo,
title = i18nString.signConfig,
modifier = Modifier.fillMaxWidth(),
onCheckedChange = {
viewModel.updateResetConfig(resetSignInfo = !resetConfig.resetSignInfo)
})
CheckBox(checked = resetConfig.resetApkTools, modifier = Modifier.fillMaxWidth(),
title = i18nString.signToolsConfigResetTips,
onCheckedChange = { viewModel.updateResetConfig(resetApkTools = !resetConfig.resetApkTools) })
CheckBox(checked = resetConfig.resetSignTypes,
CheckBox(checked = resetConfig.resetSignTypes, modifier = Modifier.fillMaxWidth(),
title = i18nString.signType,
onCheckedChange = { viewModel.updateResetConfig(resetSignTypes = !resetConfig.resetSignTypes) })
CheckBox(checked = resetConfig.resetSignedDirectory,
CheckBox(checked = resetConfig.resetSignedDirectory, modifier = Modifier.fillMaxWidth(),
title = i18nString.signedApkOutputDir,
onCheckedChange = { viewModel.updateResetConfig(resetSignedDirectory = !resetConfig.resetSignedDirectory) })
}
Expand All @@ -95,7 +98,9 @@ fun PageSettingInfo() {
}) {
Column(modifier = Modifier.wrapContentWidth()) {
Locale.values().map { item ->
CheckBox(checked = item.code == currentLanguage, title = item.languageName,
CheckBox(checked = item.code == currentLanguage,
title = item.languageName,
modifier = Modifier.padding(start = 50.dp).fillMaxWidth(),
onCheckedChange = {
if (it) {
currentLanguage = item.code
Expand Down Expand Up @@ -249,8 +254,8 @@ fun PageSettingInfo() {
val uriHandler = LocalUriHandler.current
ClickableText(text = annotatedString, style = TextStyle(
textAlign = TextAlign.Center,
fontSize = 12.sp,
color = MaterialTheme.colors.onSecondary.copy(alpha = 0.5f)
fontSize = 11.sp,
color = MaterialTheme.colors.onSecondary
), onClick = { offset ->
annotatedString.getStringAnnotations("URL", offset, offset).firstOrNull()?.let { stringAnnotation ->
uriHandler.openUri(stringAnnotation.item)
Expand Down
60 changes: 36 additions & 24 deletions src/main/kotlin/io/github/jixiaoyong/pages/signInfos/SignInfos.kt
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,9 @@ fun PageSignInfo(viewModel: SignInfoViewModel) {
)
.border(1.dp, MaterialTheme.colors.secondary, shape = RoundedCornerShape(10.dp))
) {
uiState.signInfoList.forEach {
uiState.signInfoList.forEachIndexed { index, it ->
val isSelected = uiState.selectedSignInfo == it
val isLastOne = index == uiState.signInfoList.size - 1
val textColor = if (isSelected) MaterialTheme.colors.primary
else MaterialTheme.colors.onBackground
DropdownMenuItem(
Expand All @@ -134,31 +135,42 @@ fun PageSignInfo(viewModel: SignInfoViewModel) {
},
modifier = Modifier.widthIn(500.dp, 650.dp),
) {
Row(verticalAlignment = Alignment.CenterVertically) {
Text(
text = it.keyNickName,
modifier = Modifier.weight(3f),
maxLines = 2,
color = textColor
)
Text(
text = it.keyStorePath,
fontSize = 10.sp,
color = textColor,
lineHeight = 13.sp,
modifier = Modifier.weight(6f).padding(horizontal = 5.dp)
)
HoverableTooltip(
description = i18nStrings.deleteSignInfoTips,
alwaysShow = true
) { modifier ->
IconButton(modifier = modifier, onClick = { viewModel.removeSignInfo(it) }) {
Icon(Icons.Default.Delete, "delete", tint = MaterialTheme.colors.onBackground)
Column {
Row(verticalAlignment = Alignment.CenterVertically) {
Text(
text = it.keyNickName,
modifier = Modifier.weight(3f),
maxLines = 2,
color = textColor
)
Text(
text = it.keyStorePath,
fontSize = 10.sp,
color = textColor,
lineHeight = 13.sp,
modifier = Modifier.weight(6f).padding(horizontal = 5.dp)
)
HoverableTooltip(
description = i18nStrings.deleteSignInfoTips,
alwaysShow = true
) { modifier ->
IconButton(modifier = modifier, onClick = { viewModel.removeSignInfo(it) }) {
Icon(
Icons.Default.Delete,
"delete",
tint = MaterialTheme.colors.onBackground
)
}
}
IconButton(onClick = { viewModel.updateNewSignInfo(it) }) {
Icon(Icons.Default.Edit, "edit", tint = MaterialTheme.colors.onBackground)
}
}
IconButton(onClick = { viewModel.updateNewSignInfo(it) }) {
Icon(Icons.Default.Edit, "edit", tint = MaterialTheme.colors.onBackground)
}
if (!isLastOne) Divider(
modifier = Modifier.background(
color = MaterialTheme.colors.secondary.copy(0.65f)
)
)
}
}
}
Expand Down
14 changes: 12 additions & 2 deletions src/main/kotlin/io/github/jixiaoyong/widgets/CheckBox.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.github.jixiaoyong.widgets

import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Row
import androidx.compose.material.Checkbox
import androidx.compose.material.CheckboxDefaults
Expand All @@ -8,6 +9,7 @@ import androidx.compose.material.MaterialTheme.colors
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier

/**
* @author : jixiaoyong
Expand All @@ -17,8 +19,16 @@ import androidx.compose.ui.Alignment
* @date : 30/3/2024
*/
@Composable
fun CheckBox(checked: Boolean, title: String, onCheckedChange: (Boolean) -> Unit) {
Row(verticalAlignment = Alignment.CenterVertically) {
fun CheckBox(
modifier: Modifier = Modifier,
checked: Boolean = false,
title: String = "",
onCheckedChange: ((Boolean) -> Unit)? = null,
) {
Row(verticalAlignment = Alignment.CenterVertically,
modifier = modifier.clickable {
onCheckedChange?.invoke(!checked)
}) {
Checkbox(
checked = checked,
colors = CheckboxDefaults.colors(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ fun InfoItemWidget(
onClick: (() -> Unit)? = null,
content: @Composable (() -> Unit)? = null
) {
val rounderRadius = 10.dp
val i18nString = strings
Column(modifier = Modifier.padding(horizontal = 10.dp).padding(top = 5.dp)) {
Row(
Expand Down
16 changes: 6 additions & 10 deletions src/main/kotlin/io/github/jixiaoyong/widgets/PopWidget.kt
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package io.github.jixiaoyong.widgets

import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
Expand Down Expand Up @@ -70,19 +70,15 @@ fun PopWidget(
Column(
modifier = Modifier.weight(1f, fill = false)
.wrapContentSize().heightIn(max = 450.dp).verticalScroll(scrollable)
.padding(top = 20.dp, bottom = 30.dp)
.padding(top = 20.dp, bottom = 25.dp)
) { content() }
Row(
horizontalArrangement = Arrangement.Center,
modifier = Modifier.padding(bottom = 30.dp)
modifier = Modifier.padding(bottom = 5.dp)
) {
cancelButton?.let {
Row(modifier = Modifier.clickable {
onDismiss()
}) { it() }
}
cancelButton?.let { TextButton(onClick = onDismiss) { it() } }
confirmButton?.let {
Row(modifier = Modifier.clickable {
TextButton(onClick = {
onDismiss()
onConfirm()
}) { it() }
Expand Down Expand Up @@ -131,7 +127,7 @@ fun PopWidget(
Text(
confirmButton,
textAlign = TextAlign.Center,
style = TextStyle(color = MaterialTheme.colors.primary, fontSize = 16.sp),
style = TextStyle(fontSize = 16.sp),
modifier = Modifier.widthIn(100.dp).padding(horizontal = 5.dp)
)
},
Expand Down

0 comments on commit 880bd35

Please sign in to comment.