diff --git a/app/src/main/java/eu/darken/octi/module/ui/settings/ModuleSettingsFragment.kt b/app/src/main/java/eu/darken/octi/module/ui/settings/ModuleSettingsFragment.kt index 2fcf385..4c71bbb 100644 --- a/app/src/main/java/eu/darken/octi/module/ui/settings/ModuleSettingsFragment.kt +++ b/app/src/main/java/eu/darken/octi/module/ui/settings/ModuleSettingsFragment.kt @@ -4,11 +4,10 @@ import android.os.Bundle import android.view.View import androidx.annotation.Keep import androidx.fragment.app.viewModels -import androidx.lifecycle.asLiveData import androidx.preference.CheckBoxPreference import dagger.hilt.android.AndroidEntryPoint +import eu.darken.octi.MainDirections import eu.darken.octi.R -import eu.darken.octi.common.observe2 import eu.darken.octi.common.uix.PreferenceFragment3 import eu.darken.octi.module.core.GeneralModuleSettings import eu.darken.octi.modules.apps.core.AppsSettings @@ -25,16 +24,26 @@ class ModuleSettingsFragment : PreferenceFragment3() { override val settings: GeneralModuleSettings by lazy { _settings } override val preferenceFile: Int = R.xml.preferences_module - private val moduleApps: CheckBoxPreference - get() = findPreference("module.apps.enabled")!! - private val moduleAppsIncludeInstaller: CheckBoxPreference get() = findPreference("module.apps.include.installer")!! override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - appsSettings.isEnabled.flow.asLiveData().observe2(this) { - moduleAppsIncludeInstaller.isEnabled = moduleApps.isChecked + + vm.state.observe2 { state -> + moduleAppsIncludeInstaller.apply { + isEnabled = state.isAppModuleEnabled + setOnPreferenceClickListener { + if (!state.isPro) { + isChecked = false + MainDirections.goToUpgradeFragment().navigate() + true + } else { + false + } + } + } } + + super.onViewCreated(view, savedInstanceState) } } \ No newline at end of file diff --git a/app/src/main/java/eu/darken/octi/module/ui/settings/ModuleSettingsVM.kt b/app/src/main/java/eu/darken/octi/module/ui/settings/ModuleSettingsVM.kt index 64a5a67..70abc16 100644 --- a/app/src/main/java/eu/darken/octi/module/ui/settings/ModuleSettingsVM.kt +++ b/app/src/main/java/eu/darken/octi/module/ui/settings/ModuleSettingsVM.kt @@ -1,18 +1,40 @@ package eu.darken.octi.module.ui.settings import androidx.lifecycle.SavedStateHandle +import androidx.lifecycle.asLiveData import dagger.hilt.android.lifecycle.HiltViewModel import eu.darken.octi.common.coroutine.DispatcherProvider import eu.darken.octi.common.debug.logging.logTag import eu.darken.octi.common.uix.ViewModel3 +import eu.darken.octi.common.upgrade.UpgradeRepo +import eu.darken.octi.modules.apps.core.AppsSettings +import kotlinx.coroutines.flow.combine import javax.inject.Inject @HiltViewModel class ModuleSettingsVM @Inject constructor( @Suppress("unused") private val handle: SavedStateHandle, dispatcherProvider: DispatcherProvider, + upgradeRepo: UpgradeRepo, + appsSettings: AppsSettings, ) : ViewModel3(dispatcherProvider) { + + val state = combine( + upgradeRepo.upgradeInfo, + appsSettings.isEnabled.flow, + ) { upgradeInfo, isAppsEnabled -> + State( + isPro = upgradeInfo.isPro, + isAppModuleEnabled = isAppsEnabled, + ) + }.asLiveData() + + data class State( + val isPro: Boolean, + val isAppModuleEnabled: Boolean, + ) + companion object { private val TAG = logTag("Settings", "Module", "VM") } diff --git a/app/src/main/res/xml/preferences_module.xml b/app/src/main/res/xml/preferences_module.xml index f999e3a..b182e0a 100644 --- a/app/src/main/res/xml/preferences_module.xml +++ b/app/src/main/res/xml/preferences_module.xml @@ -21,6 +21,7 @@ android:summary="@string/module_apps_desc" android:title="@string/module_apps_label" />