From 577eb9f63d4ca195fa2eab9c56eed45c91c0b7bc Mon Sep 17 00:00:00 2001 From: HagaDalpintoGinting Date: Fri, 7 Nov 2025 20:28:46 +0700 Subject: [PATCH] update --- .../java/com/example/tiptime/MainActivity.kt | 336 ++++-------------- app/src/main/res/drawable/ic_female.png | Bin 0 -> 13326 bytes app/src/main/res/drawable/ic_male.png | Bin 0 -> 14322 bytes 3 files changed, 60 insertions(+), 276 deletions(-) create mode 100644 app/src/main/res/drawable/ic_female.png create mode 100644 app/src/main/res/drawable/ic_male.png diff --git a/app/src/main/java/com/example/tiptime/MainActivity.kt b/app/src/main/java/com/example/tiptime/MainActivity.kt index e5b2273..1d607a4 100644 --- a/app/src/main/java/com/example/tiptime/MainActivity.kt +++ b/app/src/main/java/com/example/tiptime/MainActivity.kt @@ -1,298 +1,82 @@ -package com.example.tiptime - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.activity.enableEdgeToEdge import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.shape.CircleShape -import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.* -import androidx.compose.runtime.* -import androidx.compose.runtime.getValue -import androidx.compose.runtime.setValue +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.semantics.error import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import com.example.tiptime.ui.theme.TipTimeTheme - -class MainActivity : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - enableEdgeToEdge() - super.onCreate(savedInstanceState) - setContent { - TipTimeTheme { - Surface( - modifier = Modifier.fillMaxSize(), - color = MaterialTheme.colorScheme.background - ) { - NavigationController() - } - } - } - } -} - -// Enum dan NavigationController tetap sama -private sealed class Screen { - object Start : Screen() - object Main : Screen() -} +// --- Composable InputWithImage DIPERBARUI dengan Batas Karakter --- @Composable -private fun NavigationController() { - var currentScreen by remember { mutableStateOf(Screen.Start) } - - when (currentScreen) { - is Screen.Start -> { - StartScreen(onNavigateToMain = { currentScreen = Screen.Main }) - } - is Screen.Main -> { - BMICalculatorScreen() - } - } -} - - -// --- INI ADALAH TAMPILAN BARU YANG LEBIH MENARIK --- -@Composable -fun BMICalculatorScreen() { - var heightInput by remember { mutableStateOf("") } - var weightInput by remember { mutableStateOf("") } - var useMetric by remember { mutableStateOf(true) } - - val height = heightInput.toDoubleOrNull() ?: 0.0 - val weight = weightInput.toDoubleOrNull() ?: 0.0 - - val bmiValue = calculateBMI(height, weight, useMetric) - val bmiCategory = bmiCategory(bmiValue) - val bmiCategoryColor = getBmiCategoryColor(bmiCategory) - - Column( - modifier = Modifier - .fillMaxSize() - .verticalScroll(rememberScrollState()) - .safeDrawingPadding() - .padding(16.dp), - horizontalAlignment = Alignment.CenterHorizontally - ) { - Text( - text = stringResource(R.string.bmi_calculator), - style = MaterialTheme.typography.headlineMedium, - fontWeight = FontWeight.Bold, - modifier = Modifier.padding(vertical = 16.dp) - ) - - // --- KARTU HASIL BMI --- - Card( - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 16.dp), - elevation = CardDefaults.cardElevation(defaultElevation = 8.dp), - colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surfaceVariant) - ) { - Column( - modifier = Modifier - .fillMaxWidth() - .padding(24.dp), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center - ) { - Text( - text = stringResource(id = R.string.your_bmi_is), - style = MaterialTheme.typography.titleMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant - ) - Text( - text = "%.1f".format(bmiValue), - fontSize = 52.sp, - fontWeight = FontWeight.Bold, - color = bmiCategoryColor - ) - Spacer(modifier = Modifier.height(8.dp)) - Text( - text = bmiCategory, - fontSize = 20.sp, - fontWeight = FontWeight.SemiBold, - color = bmiCategoryColor - ) - Spacer(modifier = Modifier.height(16.dp)) - BmiIndicatorBar(category = bmiCategory) - } - } - - // --- KARTU INPUT DATA --- - Card( - modifier = Modifier - .fillMaxWidth() - .padding(top = 16.dp), - elevation = CardDefaults.cardElevation(defaultElevation = 4.dp) - ) { - Column( - modifier = Modifier.padding(24.dp), - horizontalAlignment = Alignment.CenterHorizontally - ) { - UnitSwitchRow( - isMetric = useMetric, - onUnitChanged = { useMetric = it } - ) - Spacer(modifier = Modifier.height(24.dp)) - - val heightLabel = if (useMetric) R.string.height_cm else R.string.height_in - EditNumberField( - label = heightLabel, - leadingIcon = R.drawable.ic_height, - value = heightInput, - onValueChanged = { heightInput = it }, - imeAction = ImeAction.Next - ) - - Spacer(modifier = Modifier.height(16.dp)) - - val weightLabel = if (useMetric) R.string.weight_kg else R.string.weight_lbs - EditNumberField( - label = weightLabel, - leadingIcon = R.drawable.ic_weight, - value = weightInput, - onValueChanged = { weightInput = it }, - imeAction = ImeAction.Done - ) - } - } - } -} - -@Composable -fun BmiIndicatorBar(category: String) { - val categories = listOf("Underweight", "Normal", "Overweight", "Obese") - Row( - modifier = Modifier - .fillMaxWidth() - .clip(CircleShape) - .background(MaterialTheme.colorScheme.surface) - .padding(2.dp) - ) { - categories.forEach { cat -> - Box( - modifier = Modifier - .weight(1f) - .height(12.dp) - .background( - if (cat == category) getBmiCategoryColor(cat) else Color.LightGray.copy(alpha = 0.5f) - ) - ) { - if (cat == category) { - Text( - text = cat, - color = Color.White, - fontSize = 8.sp, // Ukuran font sangat kecil - textAlign = TextAlign.Center, - modifier = Modifier.align(Alignment.Center) - ) - } - } - } - } -} - -@Composable -fun EditNumberField( +fun InputWithImage( + @DrawableRes imageRes: Int, @StringRes label: Int, - @DrawableRes leadingIcon: Int, value: String, onValueChanged: (String) -> Unit, - imeAction: ImeAction + isError: Boolean, + errorMessage: String, + imeAction: ImeAction, + maxLength: Int, // Parameter baru untuk batas maksimal karakter + keyboardActions: KeyboardActions = KeyboardActions.Default, + modifier: Modifier = Modifier ) { - OutlinedTextField( - value = value, - onValueChange = onValueChanged, - label = { Text(stringResource(label)) }, - leadingIcon = { Icon(painter = painterResource(id = leadingIcon), contentDescription = null) }, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Number, - imeAction = imeAction - ), - singleLine = true, - modifier = Modifier.fillMaxWidth() - ) -} - -@Composable -fun UnitSwitchRow(isMetric: Boolean, onUnitChanged: (Boolean) -> Unit) { Row( - modifier = Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.SpaceBetween + modifier = modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically ) { - Text(text = stringResource(R.string.unit_system)) - Row(verticalAlignment = Alignment.CenterVertically) { - Text("Imperial", style = MaterialTheme.typography.bodyMedium) - Switch( - checked = isMetric, - onCheckedChange = onUnitChanged, - modifier = Modifier.padding(horizontal = 8.dp) + Image( + painter = painterResource(id = imageRes), + contentDescription = stringResource(label), + modifier = Modifier.size(64.dp), + contentScale = ContentScale.Fit + ) + Spacer(modifier = Modifier.width(16.dp)) + + Column(modifier = Modifier.weight(1f)) { + OutlinedTextField( + value = value, + onValueChange = { + // LOGIKA BARU UNTUK MEMBATASI INPUT + if (it.length <= maxLength) { + onValueChanged(it) + } + }, + label = { Text(stringResource(label)) }, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Number, + imeAction = imeAction + ), + singleLine = true, + modifier = Modifier.fillMaxWidth(), + isError = isError, + keyboardActions = keyboardActions ) - Text("Metric", style = MaterialTheme.typography.bodyMedium) + if (isError) { + Text( + text = errorMessage, + color = MaterialTheme.colorScheme.error, + style = MaterialTheme.typography.bodySmall, + modifier = Modifier.padding(start = 16.dp, top = 4.dp) + ) + } } } } - -// --- FUNGSI LOGIKA (HELPER) --- - -private fun calculateBMI(height: Double, weight: Double, isMetric: Boolean): Double { - if (height <= 0 || weight <= 0) return 0.0 - - return if (isMetric) { - val heightInMeters = height / 100 - weight / (heightInMeters * heightInMeters) - } else { - 703 * weight / (height * height) - } -} - -private fun bmiCategory(bmi: Double): String { - return when { - bmi == 0.0 -> "..." - bmi < 18.5 -> "Underweight" - bmi < 25.0 -> "Normal" - bmi < 30.0 -> "Overweight" - else -> "Obese" - } -} - -@Composable -private fun getBmiCategoryColor(category: String): Color { - return when (category) { - "Underweight" -> Color(0xFF8AB4F8) // Biru - "Normal" -> Color(0xFF5BB974) // Hijau - "Overweight" -> Color(0xFFFDD663) // Kuning - "Obese" -> Color(0xFFE57373) // Merah - else -> MaterialTheme.colorScheme.onSurface - } -} - -// --- PREVIEW --- - -@Preview(showBackground = true, name = "New BMI Calculator") -@Composable -fun BMICalculatorScreenPreview() { - TipTimeTheme { - BMICalculatorScreen() - } -} diff --git a/app/src/main/res/drawable/ic_female.png b/app/src/main/res/drawable/ic_female.png new file mode 100644 index 0000000000000000000000000000000000000000..359d244e3b8ce84186c9b2c3ed9cb8b40825a0a9 GIT binary patch literal 13326 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_male.png b/app/src/main/res/drawable/ic_male.png new file mode 100644 index 0000000000000000000000000000000000000000..6d7995622c8cc2501f8363adbedf4e5488a63085 GIT binary patch literal 14322 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