Hide settings for widgets if they are disabled
This commit is contained in:
parent
558d12bb8a
commit
742c90d7e9
@ -0,0 +1,16 @@
|
|||||||
|
package de.mm20.launcher2.ui.settings.widgets
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import androidx.lifecycle.asLiveData
|
||||||
|
import de.mm20.launcher2.widgets.WidgetRepository
|
||||||
|
import org.koin.core.component.KoinComponent
|
||||||
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
class WidgetSettingsScreenVM: ViewModel(), KoinComponent {
|
||||||
|
|
||||||
|
private val widgetRepository: WidgetRepository by inject()
|
||||||
|
|
||||||
|
val calendarWidget = widgetRepository.isCalendarWidgetEnabled().asLiveData()
|
||||||
|
val musicWidget = widgetRepository.isMusicWidgetEnabled().asLiveData()
|
||||||
|
val weatherWidget = widgetRepository.isWeatherWidgetEnabled().asLiveData()
|
||||||
|
}
|
||||||
@ -6,7 +6,10 @@ import androidx.compose.material.icons.rounded.LightMode
|
|||||||
import androidx.compose.material.icons.rounded.Schedule
|
import androidx.compose.material.icons.rounded.Schedule
|
||||||
import androidx.compose.material.icons.rounded.Today
|
import androidx.compose.material.icons.rounded.Today
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.runtime.livedata.observeAsState
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import de.mm20.launcher2.ui.R
|
import de.mm20.launcher2.ui.R
|
||||||
import de.mm20.launcher2.ui.component.preferences.Preference
|
import de.mm20.launcher2.ui.component.preferences.Preference
|
||||||
import de.mm20.launcher2.ui.component.preferences.PreferenceScreen
|
import de.mm20.launcher2.ui.component.preferences.PreferenceScreen
|
||||||
@ -15,6 +18,7 @@ import de.mm20.launcher2.ui.locals.LocalNavController
|
|||||||
@Composable
|
@Composable
|
||||||
fun WidgetsSettingsScreen() {
|
fun WidgetsSettingsScreen() {
|
||||||
val navController = LocalNavController.current
|
val navController = LocalNavController.current
|
||||||
|
val viewModel: WidgetSettingsScreenVM = viewModel()
|
||||||
PreferenceScreen(title = stringResource(R.string.preference_screen_widgets)) {
|
PreferenceScreen(title = stringResource(R.string.preference_screen_widgets)) {
|
||||||
item {
|
item {
|
||||||
Preference(
|
Preference(
|
||||||
@ -24,27 +28,39 @@ fun WidgetsSettingsScreen() {
|
|||||||
navController?.navigate("settings/widgets/clock")
|
navController?.navigate("settings/widgets/clock")
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
Preference(
|
|
||||||
title = stringResource(R.string.preference_screen_weatherwidget),
|
val weatherWidget by viewModel.weatherWidget.observeAsState()
|
||||||
icon = Icons.Rounded.LightMode,
|
if (weatherWidget == true) {
|
||||||
onClick = {
|
Preference(
|
||||||
navController?.navigate("settings/widgets/weather")
|
title = stringResource(R.string.preference_screen_weatherwidget),
|
||||||
}
|
icon = Icons.Rounded.LightMode,
|
||||||
)
|
onClick = {
|
||||||
Preference(
|
navController?.navigate("settings/widgets/weather")
|
||||||
title = stringResource(R.string.preference_screen_musicwidget),
|
}
|
||||||
icon = Icons.Rounded.Audiotrack,
|
)
|
||||||
onClick = {
|
}
|
||||||
navController?.navigate("settings/widgets/music")
|
|
||||||
}
|
val musicWidget by viewModel.musicWidget.observeAsState()
|
||||||
)
|
if (musicWidget == true) {
|
||||||
Preference(
|
Preference(
|
||||||
title = stringResource(R.string.preference_screen_calendarwidget),
|
title = stringResource(R.string.preference_screen_musicwidget),
|
||||||
icon = Icons.Rounded.Today,
|
icon = Icons.Rounded.Audiotrack,
|
||||||
onClick = {
|
onClick = {
|
||||||
navController?.navigate("settings/widgets/calendar")
|
navController?.navigate("settings/widgets/music")
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
val calendarWidget by viewModel.calendarWidget.observeAsState()
|
||||||
|
if (calendarWidget == true) {
|
||||||
|
Preference(
|
||||||
|
title = stringResource(R.string.preference_screen_calendarwidget),
|
||||||
|
icon = Icons.Rounded.Today,
|
||||||
|
onClick = {
|
||||||
|
navController?.navigate("settings/widgets/calendar")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -13,6 +13,8 @@ interface WidgetRepository {
|
|||||||
fun addWidget(widget: Widget, position: Int)
|
fun addWidget(widget: Widget, position: Int)
|
||||||
fun removeWidget(widget: Widget)
|
fun removeWidget(widget: Widget)
|
||||||
fun setWidgetHeight(widget: Widget, newHeight: Int)
|
fun setWidgetHeight(widget: Widget, newHeight: Int)
|
||||||
|
fun isWeatherWidgetEnabled(): Flow<Boolean>
|
||||||
|
fun isMusicWidgetEnabled(): Flow<Boolean>
|
||||||
fun isCalendarWidgetEnabled(): Flow<Boolean>
|
fun isCalendarWidgetEnabled(): Flow<Boolean>
|
||||||
fun isFavoritesWidgetEnabled(): Flow<Boolean>
|
fun isFavoritesWidgetEnabled(): Flow<Boolean>
|
||||||
}
|
}
|
||||||
@ -78,6 +80,14 @@ internal class WidgetRepositoryImpl(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun isWeatherWidgetEnabled(): Flow<Boolean> {
|
||||||
|
return database.widgetDao().exists("internal", "weather")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun isMusicWidgetEnabled(): Flow<Boolean> {
|
||||||
|
return database.widgetDao().exists("internal", "music")
|
||||||
|
}
|
||||||
|
|
||||||
override fun isCalendarWidgetEnabled(): Flow<Boolean> {
|
override fun isCalendarWidgetEnabled(): Flow<Boolean> {
|
||||||
return database.widgetDao().exists("internal", "calendar")
|
return database.widgetDao().exists("internal", "calendar")
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user