diff --git a/app/src/main/java/de/jeanlucmakiola/calendula/ui/CalendarHost.kt b/app/src/main/java/de/jeanlucmakiola/calendula/ui/CalendarHost.kt index e0ce981..3e66a43 100644 --- a/app/src/main/java/de/jeanlucmakiola/calendula/ui/CalendarHost.kt +++ b/app/src/main/java/de/jeanlucmakiola/calendula/ui/CalendarHost.kt @@ -284,6 +284,7 @@ fun CalendarHost( CalendarView.Week -> WeekScreen( selectedView = currentView, onSelectView = onSelectView, + onOpenDay = onOpenDay, onEventClick = onEventClick, onOpenSettings = onOpenSettings, onOpenSearch = onOpenSearch, @@ -315,6 +316,7 @@ fun CalendarHost( CalendarView.Agenda -> AgendaScreen( selectedView = currentView, onSelectView = onSelectView, + onOpenDay = onOpenDay, onEventClick = onEventClick, onOpenSettings = onOpenSettings, onOpenSearch = onOpenSearch, diff --git a/app/src/main/java/de/jeanlucmakiola/calendula/ui/agenda/AgendaScreen.kt b/app/src/main/java/de/jeanlucmakiola/calendula/ui/agenda/AgendaScreen.kt index 8286ee8..06c462a 100644 --- a/app/src/main/java/de/jeanlucmakiola/calendula/ui/agenda/AgendaScreen.kt +++ b/app/src/main/java/de/jeanlucmakiola/calendula/ui/agenda/AgendaScreen.kt @@ -93,6 +93,7 @@ private val zone = TimeZone.currentSystemDefault() fun AgendaScreen( selectedView: CalendarView, onSelectView: (CalendarView) -> Unit, + onOpenDay: (LocalDate) -> Unit, onEventClick: (EventInstance) -> Unit, onOpenSettings: () -> Unit, onOpenSearch: () -> Unit, @@ -191,6 +192,7 @@ fun AgendaScreen( pastDisplay = pastDisplay, onRetry = viewModel::goToToday, onEventClick = onEventClick, + onOpenDay = onOpenDay, modifier = Modifier .weight(1f) .fillMaxWidth(), @@ -289,6 +291,7 @@ private fun AgendaContent( pastDisplay: PastEventDisplay, onRetry: () -> Unit, onEventClick: (EventInstance) -> Unit, + onOpenDay: (LocalDate) -> Unit, modifier: Modifier = Modifier, ) { when (state) { @@ -318,6 +321,7 @@ private fun AgendaContent( dimPast = pastDisplay == PastEventDisplay.DIM, now = now, onEventClick = onEventClick, + onOpenDay = onOpenDay, modifier = modifier, ) } @@ -333,6 +337,7 @@ private fun AgendaList( dimPast: Boolean, now: Instant, onEventClick: (EventInstance) -> Unit, + onOpenDay: (LocalDate) -> Unit, modifier: Modifier = Modifier, ) { LazyColumn( @@ -342,7 +347,7 @@ private fun AgendaList( ) { days.forEach { day -> stickyHeader(key = "header-${day.date}") { - AgendaDayHeader(date = day.date, today = today) + AgendaDayHeader(date = day.date, today = today, onOpenDay = onOpenDay) } itemsIndexed( items = day.events, @@ -362,10 +367,16 @@ private fun AgendaList( } @Composable -private fun AgendaDayHeader(date: LocalDate, today: LocalDate) { +private fun AgendaDayHeader( + date: LocalDate, + today: LocalDate, + onOpenDay: (LocalDate) -> Unit, +) { Surface( color = MaterialTheme.colorScheme.surface, - modifier = Modifier.fillMaxWidth(), + modifier = Modifier + .fillMaxWidth() + .clickable { onOpenDay(date) }, ) { Text( text = agendaDayLabel(date, today), diff --git a/app/src/main/java/de/jeanlucmakiola/calendula/ui/week/WeekScreen.kt b/app/src/main/java/de/jeanlucmakiola/calendula/ui/week/WeekScreen.kt index c40ab29..3af71f0 100644 --- a/app/src/main/java/de/jeanlucmakiola/calendula/ui/week/WeekScreen.kt +++ b/app/src/main/java/de/jeanlucmakiola/calendula/ui/week/WeekScreen.kt @@ -128,6 +128,7 @@ private fun WeekUiState.Success.allDayStripHeight(): Dp { fun WeekScreen( selectedView: CalendarView, onSelectView: (CalendarView) -> Unit, + onOpenDay: (LocalDate) -> Unit, onEventClick: (EventInstance) -> Unit, onOpenSettings: () -> Unit, onOpenSearch: () -> Unit, @@ -249,6 +250,7 @@ fun WeekScreen( onSwipePrev = goPrev, onRetry = jumpToToday, onEventClick = onEventClick, + onOpenDay = onOpenDay, onCreateAt = { d, minutes -> onCreateEvent(d, minutes) }, modifier = Modifier .padding(innerPadding) @@ -268,6 +270,7 @@ private fun WeekContent( onSwipePrev: () -> Unit, onRetry: () -> Unit, onEventClick: (EventInstance) -> Unit, + onOpenDay: (LocalDate) -> Unit, onCreateAt: (LocalDate, Int) -> Unit, modifier: Modifier = Modifier, ) { @@ -342,6 +345,7 @@ private fun WeekContent( scrollState = scrollState, allDayHeight = allDayHeight, onEventClick = onEventClick, + onOpenDay = onOpenDay, onCreateAt = onCreateAt, ) } @@ -355,6 +359,7 @@ private fun WeekSuccess( scrollState: ScrollState, allDayHeight: Dp, onEventClick: (EventInstance) -> Unit, + onOpenDay: (LocalDate) -> Unit, onCreateAt: (LocalDate, Int) -> Unit, ) { Column(modifier = Modifier.fillMaxSize()) { @@ -363,7 +368,7 @@ private fun WeekSuccess( .fillMaxWidth() .background(topSectionColor), ) { - WeekDayHeader(days = state.days, today = state.today) + WeekDayHeader(days = state.days, today = state.today, onOpenDay = onOpenDay) AllDayStrip(state = state, height = allDayHeight, onEventClick = onEventClick) } // Breathing room between the (colour-shifting) top section and the @@ -427,7 +432,11 @@ private fun WeekTopBar( } @Composable -private fun WeekDayHeader(days: List, today: LocalDate) { +private fun WeekDayHeader( + days: List, + today: LocalDate, + onOpenDay: (LocalDate) -> Unit, +) { val locale = currentLocale() val weekStart = days.first() val weekNumber = remember(weekStart) { @@ -453,7 +462,10 @@ private fun WeekDayHeader(days: List, today: LocalDate) { val javaDow = java.time.DayOfWeek.of(date.dayOfWeek.ordinal + 1) val isToday = date == today Column( - modifier = Modifier.weight(1f), + modifier = Modifier + .weight(1f) + .clip(RoundedCornerShape(12.dp)) + .clickable { onOpenDay(date) }, horizontalAlignment = Alignment.CenterHorizontally, ) { Text(