From 0a8ae914092c369b6761a6bda5ea0a49baa32e0f Mon Sep 17 00:00:00 2001 From: jjangddu Date: Thu, 30 Apr 2026 15:27:13 +0900 Subject: [PATCH] =?UTF-8?q?UX:=20UI=20=EC=A0=95=EB=A6=AC=20=E2=80=94=20?= =?UTF-8?q?=EB=8B=A8=EC=9C=84=20=EB=B0=B0=EC=B9=98,=20=EB=B2=84=ED=8A=BC?= =?UTF-8?q?=20=ED=85=8D=EC=8A=A4=ED=8A=B8,=20LED=20OFF,=20Delete=20Pairing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 도넛차트: - InfoCard: ml/% 단위를 숫자 오른쪽에 배치 (기존 아래 → 옆) - Void/Catheterize: 글자 크기 통일 (11+13sp → 12sp 균일) - Disconnect → "Delete Pairing" 텍스트 변경 Placement: - 화면 벗어날 때 LED OFF (DisposableEffect onDispose → sendLedMode(0)) - LATERAL 디버그 로그 추가 (CH4/CH5 len + symmetry) - 대칭 기준 0.7 유지 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../views/monitoring/PiezoMonitoringView.kt | 21 ++++++++++++------- .../ui/views/monitoring/PlacementGuideView.kt | 6 ++++++ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt index d8225a6..934d511 100644 --- a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt +++ b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt @@ -772,8 +772,8 @@ fun PiezoMonitoringView(appState: AppState) { colors = ButtonDefaults.buttonColors(containerColor = MlPrimary.copy(alpha = 0.1f)) ) { Column(horizontalAlignment = Alignment.CenterHorizontally) { - Text("Void /", fontSize = 11.sp, color = MlPrimary) - Text("Catheterize", fontSize = 13.sp, fontWeight = FontWeight.SemiBold, color = MlPrimary) + Text("Void /", fontSize = 12.sp, fontWeight = FontWeight.SemiBold, color = MlPrimary) + Text("Catheterize", fontSize = 12.sp, fontWeight = FontWeight.SemiBold, color = MlPrimary) } } @@ -1011,18 +1011,18 @@ fun PiezoMonitoringView(appState: AppState) { ) { Icon(Icons.Default.LinkOff, null, tint = Color.Red, modifier = Modifier.size(16.dp)) Spacer(modifier = Modifier.width(6.dp)) - Text("Disconnect", fontSize = 13.sp, fontWeight = FontWeight.SemiBold, color = Color.Red) + Text("Delete Pairing", fontSize = 13.sp, fontWeight = FontWeight.SemiBold, color = Color.Red) } if (showDisconnectConfirm) { AlertDialog( onDismissRequest = { showDisconnectConfirm = false }, - title = { Text("Disconnect Device") }, + title = { Text("Delete Pairing") }, text = { Text("기기 연결을 해제하고 페어링 정보를 삭제합니다.") }, confirmButton = { TextButton(onClick = { showDisconnectConfirm = false; showSettings = false bleManager.disconnectAndUnbond(); appState.goHome() - }) { Text("Disconnect", color = Color.Red) } + }) { Text("Delete", color = Color.Red) } }, dismissButton = { TextButton(onClick = { showDisconnectConfirm = false }) { Text("Cancel") } } ) @@ -1469,10 +1469,15 @@ private fun InfoCard(title: String, value: String, unit: String, color: Color, m Column( modifier = Modifier.padding(vertical = 14.dp).fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(6.dp) + verticalArrangement = Arrangement.spacedBy(4.dp) ) { - Text(value, fontSize = 20.sp, fontWeight = FontWeight.Bold, color = Color(0xFF1C1B1F)) - Text(unit.ifEmpty { " " }, fontSize = 11.sp, color = MlSecondaryText) + Row(verticalAlignment = Alignment.Bottom) { + Text(value, fontSize = 20.sp, fontWeight = FontWeight.Bold, color = Color(0xFF1C1B1F)) + if (unit.isNotEmpty()) { + Spacer(modifier = Modifier.width(3.dp)) + Text(unit, fontSize = 12.sp, color = MlSecondaryText, modifier = Modifier.padding(bottom = 2.dp)) + } + } Text(title, fontSize = 11.sp, fontWeight = FontWeight.SemiBold, color = MlSecondaryText) } } diff --git a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt index b8380e6..7866793 100644 --- a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt +++ b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt @@ -87,6 +87,11 @@ fun PlacementGuideView(appState: AppState) { for (i in 0 until 6) { channelDetected[i] = false; channelUrineLen[i] = 0 } } + // 화면 벗어날 때 LED OFF + androidx.compose.runtime.DisposableEffect(Unit) { + onDispose { bleManager.sendLedMode(0) } + } + val detectedCount = channelDetected.count { it } val isGreenZone = isLocked || placementScore >= 70 @@ -990,6 +995,7 @@ private fun computePlacementGuide( val lrMax = maxOf(len4, len5, 1) val lrSymmetry = 1.0 - kotlin.math.abs(len4 - len5).toDouble() / lrMax + android.util.Log.d("PlacementGuide", "LATERAL ch4=$ch4(len=$len4) ch5=$ch5(len=$len5) sym=${"%.2f".format(lrSymmetry)}") if (lrSymmetry >= 0.7) { return PlacementGuideResult(