Skip to content

Commit

Permalink
refactor: 完善重复启动界面提示及弹窗交互逻辑
Browse files Browse the repository at this point in the history
  • Loading branch information
jixiaoyong committed Apr 16, 2024
1 parent b843c51 commit 3c027d2
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 82 deletions.
70 changes: 31 additions & 39 deletions src/main/kotlin/Main.kt
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@

import androidx.compose.desktop.ui.tooling.preview.Preview
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.CircularProgressIndicator
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Warning
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
Expand All @@ -22,12 +20,15 @@ import cafe.adriel.lyricist.Lyricist
import cafe.adriel.lyricist.ProvideStrings
import cafe.adriel.lyricist.rememberStrings
import cafe.adriel.lyricist.strings
import compose.icons.FontAwesomeIcons
import compose.icons.fontawesomeicons.Solid
import compose.icons.fontawesomeicons.solid.ExclamationTriangle
import io.github.jixiaoyong.beans.AppState
import io.github.jixiaoyong.i18n.Strings
import io.github.jixiaoyong.pages.App
import io.github.jixiaoyong.utils.AppProcessUtil
import io.github.jixiaoyong.utils.SettingsTool
import io.github.jixiaoyong.widgets.ButtonWidget
import io.github.jixiaoyong.widgets.PopWidget
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import java.util.*
Expand Down Expand Up @@ -73,12 +74,11 @@ fun main() =
val isAppRunning = withContext(Dispatchers.IO) {
AppProcessUtil.isDualAppRunning("ApkSigner")
}
appState =
if (isAppRunning) {
AppState.AlreadyExists
} else {
AppState.Success
}
appState = if (isAppRunning) {
AppState.AlreadyExists
} else {
AppState.Success
}
}

when (appState) {
Expand All @@ -87,9 +87,7 @@ fun main() =
}

is AppState.AlreadyExists -> {
AlreadyExistsPage {
checkDualRunning = !checkDualRunning
}
AlreadyExistsPage { checkDualRunning = !checkDualRunning }
}

AppState.Success -> {
Expand All @@ -115,32 +113,26 @@ fun LoadingPage() {

@Composable
fun AlreadyExistsPage(tryAgainFunc: () -> Unit) {
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center,
) {
Column(
modifier = Modifier.widthIn(300.dp).heightIn(200.dp).background(
MaterialTheme.colors.surface.copy(0.8f),
RoundedCornerShape(10.dp),
),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
) {
Icon(
Icons.Default.Warning,
tint = MaterialTheme.colors.error,
contentDescription = "already exists",
modifier = Modifier.size(50.dp),
)
Text(strings.alreadyRunning, Modifier.padding(vertical = 20.dp))
Row {
ButtonWidget(onClick = { exitProcess(0) }) {
Text(strings.exit)
}
ButtonWidget(onClick = tryAgainFunc) {
Text(strings.retry)
}

Box(modifier = Modifier.background(color = MaterialTheme.colors.background).fillMaxSize()) {
PopWidget(title = "",
show = true,
confirmButton = strings.retry,
cancelButton = strings.exit,
onDismiss = { exitProcess(0) },
onConfirm = { tryAgainFunc() }) {
Column(
modifier = Modifier.wrapContentSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
) {
Icon(
FontAwesomeIcons.Solid.ExclamationTriangle,
tint = MaterialTheme.colors.error,
contentDescription = "already exists",
modifier = Modifier.size(50.dp),
)
Text(strings.alreadyRunning, Modifier.padding(top = 20.dp))
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/kotlin/io/github/jixiaoyong/pages/MainPage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,9 @@ fun App() {

Row(
modifier = Modifier.weight(1f).padding(horizontal = 1.dp)
.background(backgroundColor, RoundedCornerShape(5.dp)).clickable {
viewModel.changePage(route.third)
}.padding(vertical = 15.dp),
.background(backgroundColor, RoundedCornerShape(5.dp))
.clickable { viewModel.changePage(route.third) }
.padding(vertical = 15.dp),
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically,
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,10 @@ fun PageSettingInfo() {
PopWidget(title = i18nString.confirmReset,
show = resetConfig.showResetDialog,
onDismiss = { viewModel.toggleResetDialog() },
onConfirm = { viewModel.runRestConfig() }) {
onConfirm = {
viewModel.runRestConfig()
viewModel.toggleResetDialog()
}) {
Column(modifier = Modifier.widthIn(350.dp).padding(start = 30.dp)) {
Text(i18nString.confirmResetTips)
CheckBox(checked = resetConfig.resetSignInfo,
Expand Down Expand Up @@ -101,6 +104,7 @@ fun PageSettingInfo() {
onConfirm = {
lyricist.languageTag = currentLanguage
viewModel.changeLanguage(currentLanguage)
viewModel.toggleLanguageDialog()
}) {
Column(modifier = Modifier.wrapContentWidth()) {
Locale.values().map { item ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,8 @@ fun PageSignInfo(viewModel: SignInfoViewModel) {
HoverableTooltip(
description = i18nStrings.deleteSignInfoTips,
alwaysShow = true
) { modifier ->
IconButton(modifier = modifier, onClick = { viewModel.removeSignInfo(it) }) {
) {
IconButton(modifier = Modifier, onClick = { viewModel.removeSignInfo(it) }) {
Icon(
Icons.Default.Delete,
"delete",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ fun PageSignApp(
showChangeButton = false
) {
Row {
SignType.ALL_SIGN_TYPES.forEachIndexed { index, item ->
SignType.ALL_SIGN_TYPES.forEach { item ->
val isSelected = uiState.apkSignType.contains(item.type)
Row(verticalAlignment = Alignment.CenterVertically) {
CheckBox(
Expand Down
44 changes: 9 additions & 35 deletions src/main/kotlin/io/github/jixiaoyong/widgets/HoverableToolTip.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package io.github.jixiaoyong.widgets
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.TooltipArea
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
Expand All @@ -12,17 +11,11 @@ import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Info
import androidx.compose.runtime.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.input.pointer.PointerEventType
import androidx.compose.ui.input.pointer.onPointerEvent
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.layout.positionInParent
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.dp

/**
Expand All @@ -34,29 +27,8 @@ import androidx.compose.ui.unit.dp
*/
@OptIn(ExperimentalComposeUiApi::class, ExperimentalFoundationApi::class)
@Composable
fun HoverableTooltip(tooltip: @Composable () -> Unit, content: @Composable (modifier: Modifier) -> Unit) {
var isHovered by remember { mutableStateOf(false) }
var iconOffset by remember { mutableStateOf(Offset.Zero) }
var iconSize by remember { mutableStateOf(IntSize.Zero) }
Box(
Modifier.onPointerEvent(
PointerEventType.Move
) {
}
.onPointerEvent(PointerEventType.Enter) {
isHovered = true
}
.onPointerEvent(PointerEventType.Exit) {
isHovered = false
}
) {
TooltipArea(tooltip) {
content(Modifier.onGloballyPositioned {
iconOffset = it.positionInParent()
iconSize = it.size
})
}
}
fun HoverableTooltip(tooltip: @Composable () -> Unit, content: @Composable () -> Unit) {
TooltipArea(tooltip, delayMillis = 100) { content() }
}


Expand All @@ -68,10 +40,10 @@ fun HoverableTooltip(tooltip: @Composable () -> Unit, content: @Composable (modi
fun HoverableTooltip(
description: String?,
alwaysShow: Boolean = false,
content: @Composable (modifier: Modifier) -> Unit
content: @Composable () -> Unit
) {
if (description.isNullOrBlank()) {
if (alwaysShow) content(Modifier)
if (alwaysShow) content()
} else {
HoverableTooltip(
tooltip = {
Expand All @@ -92,13 +64,15 @@ fun HoverableTooltip(
}
}

/**
* [imageVector]使用默认的❓图标,鼠标悬浮在其上时展示提示[description]
*/
@Composable
fun HoverableTooltip(description: String?, imageVector: ImageVector = Icons.Default.Info, alwaysShow: Boolean = false) {
HoverableTooltip(description = description, alwaysShow = alwaysShow) { modifier ->
HoverableTooltip(description = description, alwaysShow = alwaysShow) {
Icon(
imageVector,
contentDescription = description,
modifier = modifier,
tint = MaterialTheme.colors.onSecondary
)
}
Expand Down
1 change: 0 additions & 1 deletion src/main/kotlin/io/github/jixiaoyong/widgets/PopWidget.kt
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ fun PopWidget(
cancelButton?.let { TextButton(onClick = onDismiss) { it() } }
confirmButton?.let {
TextButton(onClick = {
onDismiss()
onConfirm()
}) { it() }
}
Expand Down

0 comments on commit 3c027d2

Please sign in to comment.