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 e6546b2..245524a 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 @@ -730,7 +730,7 @@ fun PiezoMonitoringView(appState: AppState) { .background(urgency.backgroundColor) ) { // Top bar - val hPad = if (isCompact) 12.dp else 24.dp + val hPad = (screenWidth * 0.05f).dp Row( modifier = Modifier .fillMaxWidth() @@ -854,7 +854,7 @@ fun PiezoMonitoringView(appState: AppState) { verticalArrangement = if (appState.isDevMode) Arrangement.spacedBy(if (isCompact) 12.dp else 20.dp) else - Arrangement.spacedBy(if (isCompact) 32.dp else 40.dp) + Arrangement.spacedBy((screenWidth * 0.08f).dp.coerceIn(20.dp, 48.dp)) ) { // Status badge (항상 urgency 메시지) @@ -871,12 +871,16 @@ fun PiezoMonitoringView(appState: AppState) { .padding(horizontal = 20.dp, vertical = 8.dp) ) - // Donut chart with Bladdy - val donutSize = if (appState.isDevMode) { - if (isCompact) 220.dp else 280.dp - } else { - if (isCompact) 300.dp else 360.dp // 일반 모드: 화면 거의 가득 - } + // Donut chart with Bladdy — 화면 비율 기반 + val screenWidthDp = screenWidth.dp + val donutRatio = if (appState.isDevMode) 0.65f else 0.85f + val donutSize = screenWidthDp * donutRatio + val lineWidthRatio = if (appState.isDevMode) 0.07f else 0.08f + val donutLineWidth = donutSize * lineWidthRatio + val bladdyRatio = if (appState.isDevMode) 0.30f else 0.55f + val bladdySize = donutSize * bladdyRatio + val volFontSize = if (appState.isDevMode) 18.sp else (screenWidth * 0.06f).sp + val maxVolumeForDonut = appState.piezoSettings.maxVolume.toDouble() val donutProgress = if (maxVolumeForDonut > 0 && maxVolumeMl > 0) (maxVolumeMl / maxVolumeForDonut).coerceIn(0.0, 1.0) else 0.0 @@ -885,7 +889,7 @@ fun PiezoMonitoringView(appState: AppState) { if (!appState.isDevMode) { Box( modifier = Modifier - .size(donutSize - 50.dp) + .size(donutSize * 0.85f) .clip(CircleShape) .background(Color.White.copy(alpha = 0.5f)) ) @@ -893,11 +897,7 @@ fun PiezoMonitoringView(appState: AppState) { DonutChartView( progress = donutProgress, urgency = urgency, - lineWidth = if (appState.isDevMode) { - if (isCompact) 22.dp else 30.dp - } else { - if (isCompact) 26.dp else 34.dp - }, + lineWidth = donutLineWidth, size = donutSize ) // Bladdy + 볼륨 (정중앙) @@ -906,14 +906,8 @@ fun PiezoMonitoringView(appState: AppState) { verticalArrangement = Arrangement.Center, modifier = Modifier.matchParentSize() ) { - val bladdySize = if (appState.isDevMode) { - if (isCompact) 80.dp else 110.dp - } else { - if (isCompact) 180.dp else 220.dp - } BladdyRiveView(urgency = urgency, size = bladdySize) Spacer(modifier = Modifier.height(4.dp)) - val volFontSize = if (appState.isDevMode) 18.sp else 24.sp Text( if (displayMaxVolumeMl > 0) "${"%.0f".format(displayMaxVolumeMl)} mL" else "${appState.estimatedVolume} mL", fontSize = volFontSize, @@ -940,7 +934,7 @@ fun PiezoMonitoringView(appState: AppState) { } // Control buttons: Void/Catheterize / Auto / Spot - val btnHeight = if (appState.isDevMode) 56.dp else 62.dp + val btnHeight = (screenWidth * 0.15f).dp.coerceIn(50.dp, 70.dp) Row(horizontalArrangement = Arrangement.spacedBy(if (appState.isDevMode) 8.dp else 10.dp)) { // Void / Catheterize — 즉시 카테터 1개 감소 + 기록 Button(