diff --git a/core/src/main/kotlin/plus/rua/project/CalendarViewModel.kt b/core/src/main/kotlin/plus/rua/project/CalendarViewModel.kt index 9f838bd..12b12b4 100644 --- a/core/src/main/kotlin/plus/rua/project/CalendarViewModel.kt +++ b/core/src/main/kotlin/plus/rua/project/CalendarViewModel.kt @@ -186,6 +186,13 @@ class CalendarViewModel( } } + /** + * 切换法定调休角标显示。 + */ + fun toggleShowLegalHoliday() { + _showLegalHoliday.value = !_showLegalHoliday.value + } + /** * 从年视图选择月份后返回月视图。 */ diff --git a/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthView.kt b/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthView.kt index 4982e39..a117ea9 100644 --- a/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthView.kt +++ b/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthView.kt @@ -388,6 +388,19 @@ fun CalendarMonthView( color = MaterialTheme.colorScheme.outlineVariant, modifier = Modifier.padding(horizontal = 8.dp) ) + MenuItem( + text = "显示调休", + selected = showLegalHoliday, + onClick = { + isMenuExpanded = false + viewModel.toggleShowLegalHoliday() + } + ) + HorizontalDivider( + thickness = 1.dp, + color = MaterialTheme.colorScheme.outlineVariant, + modifier = Modifier.padding(horizontal = 8.dp) + ) MenuItem( text = "关于", selected = false, diff --git a/core/src/main/kotlin/plus/rua/project/ui/DayCell.kt b/core/src/main/kotlin/plus/rua/project/ui/DayCell.kt index 1c4791a..6d1990d 100644 --- a/core/src/main/kotlin/plus/rua/project/ui/DayCell.kt +++ b/core/src/main/kotlin/plus/rua/project/ui/DayCell.kt @@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -244,6 +245,12 @@ fun DayCell( } else { Modifier.padding(top = 1.dp, end = 2.dp) } + val shiftBackground = if (showLegalHoliday) { + Modifier.background( + shiftAccentColor.copy(alpha = shiftAlpha), + RoundedCornerShape(4.dp) + ) + } else Modifier Text( text = shiftLabel, color = shiftFgColor.copy(alpha = shiftAlpha), @@ -253,9 +260,9 @@ fun DayCell( modifier = Modifier .align(shiftAlignment) .zIndex(1f) - .background(MaterialTheme.colorScheme.background) + .then(shiftBackground) .then(shiftPadding) - .padding(horizontal = 2.dp) + .padding(horizontal = 3.dp, vertical = 1.dp) ) } if (showLegalHoliday && holidayBadge != null) {