Show permission banner in calendar widget if calendar permission is not granted
This commit is contained in:
parent
b8304f1c1c
commit
09bb040e9a
@ -11,6 +11,8 @@ import androidx.lifecycle.viewModelScope
|
|||||||
import de.mm20.launcher2.calendar.CalendarRepository
|
import de.mm20.launcher2.calendar.CalendarRepository
|
||||||
import de.mm20.launcher2.favorites.FavoritesRepository
|
import de.mm20.launcher2.favorites.FavoritesRepository
|
||||||
import de.mm20.launcher2.ktx.tryStartActivity
|
import de.mm20.launcher2.ktx.tryStartActivity
|
||||||
|
import de.mm20.launcher2.permissions.PermissionGroup
|
||||||
|
import de.mm20.launcher2.permissions.PermissionsManager
|
||||||
import de.mm20.launcher2.search.data.CalendarEvent
|
import de.mm20.launcher2.search.data.CalendarEvent
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
@ -30,7 +32,8 @@ class CalendarWidgetVM : ViewModel(), KoinComponent {
|
|||||||
favoritesRepository.getPinnedCalendarEvents().asLiveData(viewModelScope.coroutineContext)
|
favoritesRepository.getPinnedCalendarEvents().asLiveData(viewModelScope.coroutineContext)
|
||||||
var availableDates = listOf(LocalDate.now())
|
var availableDates = listOf(LocalDate.now())
|
||||||
|
|
||||||
val permissionMissing = MutableLiveData(false)
|
private val permissionsManager: PermissionsManager by inject()
|
||||||
|
val hasPermission = permissionsManager.hasPermission(PermissionGroup.Calendar).asLiveData()
|
||||||
|
|
||||||
private var showRunningPastDayEvents = false
|
private var showRunningPastDayEvents = false
|
||||||
val hiddenPastEvents = MutableLiveData(0)
|
val hiddenPastEvents = MutableLiveData(0)
|
||||||
|
|||||||
@ -14,7 +14,9 @@ import androidx.lifecycle.Lifecycle
|
|||||||
import androidx.lifecycle.repeatOnLifecycle
|
import androidx.lifecycle.repeatOnLifecycle
|
||||||
import de.mm20.launcher2.ktx.lifecycleOwner
|
import de.mm20.launcher2.ktx.lifecycleOwner
|
||||||
import de.mm20.launcher2.ktx.lifecycleScope
|
import de.mm20.launcher2.ktx.lifecycleScope
|
||||||
|
import de.mm20.launcher2.permissions.PermissionGroup
|
||||||
import de.mm20.launcher2.search.data.CalendarEvent
|
import de.mm20.launcher2.search.data.CalendarEvent
|
||||||
|
import de.mm20.launcher2.search.data.MissingPermission
|
||||||
import de.mm20.launcher2.search.data.Searchable
|
import de.mm20.launcher2.search.data.Searchable
|
||||||
import de.mm20.launcher2.ui.R
|
import de.mm20.launcher2.ui.R
|
||||||
import de.mm20.launcher2.ui.databinding.ViewCalendarWidgetBinding
|
import de.mm20.launcher2.ui.databinding.ViewCalendarWidgetBinding
|
||||||
@ -102,10 +104,20 @@ class CalendarWidget : LauncherWidget {
|
|||||||
val pinnedCalendarEvents = viewModel.pinnedCalendarEvents
|
val pinnedCalendarEvents = viewModel.pinnedCalendarEvents
|
||||||
val hiddenPastEvents = viewModel.hiddenPastEvents
|
val hiddenPastEvents = viewModel.hiddenPastEvents
|
||||||
val selectedDate = viewModel.selectedDate
|
val selectedDate = viewModel.selectedDate
|
||||||
|
val hasPermission = viewModel.hasPermission
|
||||||
|
|
||||||
|
calendarEvents.observe(context as AppCompatActivity) {
|
||||||
|
updateEventList(it, hiddenPastEvents.value ?: 0, hasPermission.value == false)
|
||||||
|
}
|
||||||
|
|
||||||
|
hasPermission.observe(context as AppCompatActivity) {
|
||||||
|
updateEventList(
|
||||||
|
calendarEvents.value ?: emptyList(),
|
||||||
|
hiddenPastEvents.value ?: 0,
|
||||||
|
it == false
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
calendarEvents.observe(context as AppCompatActivity, {
|
|
||||||
updateEventList(it, hiddenPastEvents.value ?: 0)
|
|
||||||
})
|
|
||||||
pinnedCalendarEvents.observe(context as AppCompatActivity) {
|
pinnedCalendarEvents.observe(context as AppCompatActivity) {
|
||||||
binding.calendarWidgetPinnedList.submitItems(it)
|
binding.calendarWidgetPinnedList.submitItems(it)
|
||||||
if (it.isEmpty()) {
|
if (it.isEmpty()) {
|
||||||
@ -128,11 +140,21 @@ class CalendarWidget : LauncherWidget {
|
|||||||
|
|
||||||
private fun updateEventList(
|
private fun updateEventList(
|
||||||
events: List<CalendarEvent>,
|
events: List<CalendarEvent>,
|
||||||
hiddenPastDayEvents: Int
|
hiddenPastDayEvents: Int,
|
||||||
|
missingPermission: Boolean
|
||||||
) {
|
) {
|
||||||
val items = events.toMutableList<Searchable>()
|
val items = events.toMutableList<Searchable>()
|
||||||
|
|
||||||
if (events.isEmpty()) {
|
if (missingPermission) {
|
||||||
|
items.add(
|
||||||
|
MissingPermission(
|
||||||
|
context.getString(R.string.permission_calendar_widget),
|
||||||
|
PermissionGroup.Calendar
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (events.isEmpty() && !missingPermission) {
|
||||||
items.add(
|
items.add(
|
||||||
InformationText(context.getString(R.string.calendar_widget_no_events))
|
InformationText(context.getString(R.string.calendar_widget_no_events))
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user