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() {