From 0165ac5dc8493aec95ac0f6f3b9d49fe1f5da67f Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Tue, 24 May 2022 20:11:37 +0200 Subject: [PATCH] Always show the next event in the calendar widget --- i18n/src/main/res/values/strings.xml | 2 ++ .../ui/launcher/widgets/calendar/CalendarWidget.kt | 13 +++++++++++++ .../launcher/widgets/calendar/CalendarWidgetVM.kt | 7 +++++++ 3 files changed, 22 insertions(+) diff --git a/i18n/src/main/res/values/strings.xml b/i18n/src/main/res/values/strings.xml index eb48badb..f8f0c64c 100644 --- a/i18n/src/main/res/values/strings.xml +++ b/i18n/src/main/res/values/strings.xml @@ -275,6 +275,8 @@ Tomorrow Upcoming + + Next event No events today Open calendar app New event diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt index 6e93476d..19b2a782 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt @@ -131,6 +131,19 @@ fun CalendarWidget() { } ) } + val nextEvents by viewModel.nextEvents.observeAsState(emptyList()) + if (nextEvents.isNotEmpty()) { + Text( + stringResource(R.string.calendar_widget_next_events), + modifier = Modifier.padding(start = 4.dp, end = 4.dp, top = 8.dp, bottom = 4.dp), + style = MaterialTheme.typography.titleMedium + ) + SearchResultList( + nextEvents, + modifier = Modifier + .fillMaxWidth() + ) + } val pinnedEvents by viewModel.pinnedCalendarEvents.observeAsState(emptyList()) if (pinnedEvents.size > 0) { Text( diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidgetVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidgetVM.kt index edbe1d53..45eedfe9 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidgetVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidgetVM.kt @@ -31,6 +31,7 @@ class CalendarWidgetVM : ViewModel(), KoinComponent { val calendarEvents = MutableLiveData>(emptyList()) val pinnedCalendarEvents = favoritesRepository.getPinnedCalendarEvents().asLiveData(viewModelScope.coroutineContext) + val nextEvents = MutableLiveData>(emptyList()) var availableDates = listOf(LocalDate.now()) private val permissionsManager: PermissionsManager by inject() @@ -133,6 +134,12 @@ class CalendarWidgetVM : ViewModel(), KoinComponent { } calendarEvents.postValue(events) + val e = this.upcomingEvents + if (events.isEmpty() && e.isNotEmpty()) { + nextEvents.postValue(listOf(e[0])) + } else { + nextEvents.postValue(emptyList()) + } } suspend fun onActive() {