Add switch preference to enable feed
This commit is contained in:
@@ -21,6 +21,7 @@ import de.mm20.launcher2.ui.component.LargeMessage
|
||||
import de.mm20.launcher2.ui.component.preferences.Preference
|
||||
import de.mm20.launcher2.ui.component.preferences.PreferenceCategory
|
||||
import de.mm20.launcher2.ui.component.preferences.PreferenceScreen
|
||||
import de.mm20.launcher2.ui.component.preferences.SwitchPreference
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -32,6 +33,7 @@ fun FeedIntegrationSettingsScreen() {
|
||||
|
||||
val viewModel: FeedIntegrationSettingsScreenVM = viewModel()
|
||||
val selectedProvider by viewModel.providerPackage.collectAsState(null)
|
||||
val feedEnabled by viewModel.feedEnabled.collectAsState(null)
|
||||
|
||||
val providers = remember { viewModel.getFeedProviders(context) }
|
||||
PreferenceScreen(
|
||||
@@ -58,6 +60,19 @@ fun FeedIntegrationSettingsScreen() {
|
||||
} else {
|
||||
item {
|
||||
PreferenceCategory {
|
||||
SwitchPreference(
|
||||
icon = R.drawable.news_24px,
|
||||
title = stringResource(R.string.preference_feed_integration),
|
||||
summary = stringResource(R.string.preference_feed_enable_summary),
|
||||
value = feedEnabled == true,
|
||||
onValueChanged = {
|
||||
viewModel.setFeedEnabled(it)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
item {
|
||||
PreferenceCategory(stringResource(R.string.preference_category_feed_provider)) {
|
||||
for (prov in providers) {
|
||||
Preference(
|
||||
title = prov.label,
|
||||
|
||||
@@ -23,6 +23,9 @@ class FeedIntegrationSettingsScreenVM : ViewModel(), KoinComponent {
|
||||
val providerPackage = feedSettings.providerPackage
|
||||
.shareIn(viewModelScope, SharingStarted.WhileSubscribed(0), 1)
|
||||
|
||||
val feedEnabled = feedSettings.enabled
|
||||
.shareIn(viewModelScope, SharingStarted.WhileSubscribed(0), 1)
|
||||
|
||||
fun setProviderPackage(providerPackage: String?) {
|
||||
feedSettings.setProviderPackage(providerPackage)
|
||||
}
|
||||
@@ -30,4 +33,8 @@ class FeedIntegrationSettingsScreenVM : ViewModel(), KoinComponent {
|
||||
fun getFeedProviders(context: Context): List<FeedProvider> {
|
||||
return feedService.getAvailableFeedProviders()
|
||||
}
|
||||
|
||||
fun setFeedEnabled(enabled: Boolean) {
|
||||
feedSettings.setEnabled(enabled)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user