diff --git a/app/src/main/java/com/shaarit/presentation/todo/TodoScreen.kt b/app/src/main/java/com/shaarit/presentation/todo/TodoScreen.kt index e4bc344..8000984 100644 --- a/app/src/main/java/com/shaarit/presentation/todo/TodoScreen.kt +++ b/app/src/main/java/com/shaarit/presentation/todo/TodoScreen.kt @@ -53,12 +53,14 @@ import androidx.compose.material.icons.filled.Flag import androidx.compose.material.icons.filled.Folder import androidx.compose.material.icons.filled.List import androidx.compose.material.icons.filled.Repeat +import androidx.compose.material.icons.filled.RadioButtonChecked import androidx.compose.material.icons.filled.Schedule import androidx.compose.material.icons.filled.Snooze import androidx.compose.material.icons.outlined.CheckBoxOutlineBlank import androidx.compose.material.icons.outlined.Keyboard import androidx.compose.material.icons.outlined.LocalCafe import androidx.compose.material.icons.outlined.NightsStay +import androidx.compose.material.icons.outlined.RadioButtonUnchecked import androidx.compose.material.icons.outlined.WbSunny import androidx.compose.material.icons.outlined.WbTwilight import androidx.compose.material3.AlertDialog @@ -822,49 +824,58 @@ private fun EditTodoDialog( androidx.compose.material3.Divider(color = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.5f)) // Priority - val priorityText = when(state.priority) { - "RED" -> "Urgent (Rouge)" - "YELLOW" -> "Élevée (Jaune)" - "BLUE" -> "Normale (Bleu)" - "GREEN" -> "Basse (Vert)" - else -> "Priorité normale" - } - val priorityColor = when(state.priority) { - "RED" -> androidx.compose.ui.graphics.Color.Red - "YELLOW" -> androidx.compose.ui.graphics.Color.Yellow - "BLUE" -> androidx.compose.ui.graphics.Color.Blue - "GREEN" -> androidx.compose.ui.graphics.Color.Green - else -> MaterialTheme.colorScheme.onSurfaceVariant - } - androidx.compose.foundation.layout.Box { - TaskActionRow( - icon = Icons.Default.Flag, - iconTint = priorityColor, - textTint = priorityColor, - text = priorityText, - onClick = { showPriorityMenu = true }, - isSet = state.priority != null + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + Icons.Default.Flag, + contentDescription = null, + tint = MaterialTheme.colorScheme.onSurfaceVariant ) - androidx.compose.material3.DropdownMenu( - expanded = showPriorityMenu, - onDismissRequest = { showPriorityMenu = false } - ) { - androidx.compose.material3.DropdownMenuItem( - text = { Text("Urgent (Rouge)", color = androidx.compose.ui.graphics.Color.Red) }, - onClick = { onPriorityChanged("RED"); showPriorityMenu = false } - ) - androidx.compose.material3.DropdownMenuItem( - text = { Text("Élevée (Jaune)", color = androidx.compose.ui.graphics.Color.Yellow) }, - onClick = { onPriorityChanged("YELLOW"); showPriorityMenu = false } - ) - androidx.compose.material3.DropdownMenuItem( - text = { Text("Normale (Bleu)", color = androidx.compose.ui.graphics.Color.Blue) }, - onClick = { onPriorityChanged("BLUE"); showPriorityMenu = false } - ) - androidx.compose.material3.DropdownMenuItem( - text = { Text("Basse (Vert)", color = androidx.compose.ui.graphics.Color.Green) }, - onClick = { onPriorityChanged("GREEN"); showPriorityMenu = false } - ) + Spacer(modifier = Modifier.width(16.dp)) + Text( + "Priorité", + color = MaterialTheme.colorScheme.onSurfaceVariant, + style = MaterialTheme.typography.bodyLarge, + modifier = Modifier.weight(1f) + ) + + val priorities = listOf(null, "BLUE", "YELLOW", "RED") + val priorityColors = listOf( + MaterialTheme.colorScheme.onSurfaceVariant, + androidx.compose.ui.graphics.Color(0xFF64B5F6), // Blue + androidx.compose.ui.graphics.Color(0xFFFFD54F), // Yellow + androidx.compose.ui.graphics.Color(0xFFE57373) // Red + ) + + priorities.forEachIndexed { index, p -> + val isSelected = state.priority == p + androidx.compose.foundation.layout.Box( + modifier = Modifier + .size(32.dp) + .clickable { onPriorityChanged(p) }, + contentAlignment = Alignment.Center + ) { + if (isSelected) { + Icon( + Icons.Default.RadioButtonChecked, + contentDescription = null, + tint = priorityColors[index] + ) + } else { + Icon( + Icons.Outlined.RadioButtonUnchecked, + contentDescription = null, + tint = priorityColors[index] + ) + } + } + if (index < priorities.lastIndex) { + Spacer(modifier = Modifier.width(8.dp)) + } } } @@ -1204,17 +1215,24 @@ private fun DateTimePickerBottomSheet( var selectedDateMillis by remember { mutableStateOf(initialDate) } val datePickerState = androidx.compose.material3.rememberDatePickerState( - initialSelectedDateMillis = initialDate + initialSelectedDateMillis = initialDate?.let { + val localCal = java.util.Calendar.getInstance(tz).apply { timeInMillis = it } + val utcCal = java.util.Calendar.getInstance(java.util.TimeZone.getTimeZone("UTC")).apply { + set(localCal.get(java.util.Calendar.YEAR), localCal.get(java.util.Calendar.MONTH), localCal.get(java.util.Calendar.DAY_OF_MONTH), 0, 0, 0) + set(java.util.Calendar.MILLISECOND, 0) + } + utcCal.timeInMillis + } ) LaunchedEffect(datePickerState.selectedDateMillis) { if (datePickerState.selectedDateMillis != null) { - val newDateCal = java.util.Calendar.getInstance(tz).apply { + val utcCal = java.util.Calendar.getInstance(java.util.TimeZone.getTimeZone("UTC")).apply { timeInMillis = datePickerState.selectedDateMillis!! } - calendar.set(java.util.Calendar.YEAR, newDateCal.get(java.util.Calendar.YEAR)) - calendar.set(java.util.Calendar.MONTH, newDateCal.get(java.util.Calendar.MONTH)) - calendar.set(java.util.Calendar.DAY_OF_MONTH, newDateCal.get(java.util.Calendar.DAY_OF_MONTH)) + calendar.set(java.util.Calendar.YEAR, utcCal.get(java.util.Calendar.YEAR)) + calendar.set(java.util.Calendar.MONTH, utcCal.get(java.util.Calendar.MONTH)) + calendar.set(java.util.Calendar.DAY_OF_MONTH, utcCal.get(java.util.Calendar.DAY_OF_MONTH)) selectedDateMillis = calendar.timeInMillis } }