Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ddf79703 authored by Chaohui Wang's avatar Chaohui Wang Committed by Android (Google) Code Review
Browse files

Merge "[Spa] Fix State<T> as a parameter of SwitchPreference" into main

parents 1e0e0397 eedc7fd5
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@ import com.android.settings.R
import com.android.settings.network.apn.ApnNetworkTypes.getNetworkTypeDisplayNames
import com.android.settings.network.apn.ApnNetworkTypes.getNetworkTypeSelectedOptionsState
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuBox
import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuCheckBox
import com.android.settingslib.spa.widget.editor.SettingsOutlinedTextField
@@ -186,10 +185,8 @@ fun ApnPage(apnDataInit: ApnData, apnDataCur: MutableState<ApnData>, uriInit: Ur
            SwitchPreference(
                object : SwitchPreferenceModel {
                    override val title = context.resources.getString(R.string.carrier_enabled)
                    override val changeable =
                        stateOf(apnData.apnEnableEnabled)
                    override val checked =
                        stateOf(apnData.apnEnable)
                    override val changeable = { apnData.apnEnableEnabled }
                    override val checked = { apnData.apnEnable }
                    override val onCheckedChange = { newChecked: Boolean ->
                        apnData = apnData.copy(apnEnable = newChecked)
                    }
+4 −8
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ import android.permission.PermissionControllerManager.HIBERNATION_ELIGIBILITY_UN
import android.provider.DeviceConfig
import android.provider.DeviceConfig.NAMESPACE_APP_HIBERNATION
import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -56,18 +56,14 @@ fun HibernationSwitchPreference(app: ApplicationInfo) {
    val presenter = remember { HibernationSwitchPresenter(context, app) }
    if (!presenter.isAvailable()) return

    val isEligibleState = presenter.isEligibleFlow.collectAsStateWithLifecycle(initialValue = false)
    val isEligibleState by presenter.isEligibleFlow.collectAsStateWithLifecycle(initialValue = false)
    val isCheckedState = presenter.isCheckedFlow.collectAsStateWithLifecycle(initialValue = null)
    SwitchPreference(remember {
        object : SwitchPreferenceModel {
            override val title = context.getString(R.string.unused_apps_switch)
            override val summary = { context.getString(R.string.unused_apps_switch_summary) }
            override val changeable = isEligibleState

            override val checked = derivedStateOf {
                if (!changeable.value) false else isCheckedState.value
            }

            override val changeable = { isEligibleState }
            override val checked = { if (changeable()) isCheckedState.value else false }
            override val onCheckedChange = presenter::onCheckedChange
        }
    })
+5 −5
Original line number Diff line number Diff line
@@ -24,10 +24,9 @@ import android.content.Context
import android.content.pm.ApplicationInfo
import android.os.PowerExemptionManager
import androidx.compose.runtime.Composable
import androidx.compose.runtime.livedata.observeAsState
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settingslib.R
import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.livedata.observeAsCallback
import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.IPackageManagers
import com.android.settingslib.spaprivileged.model.app.PackageManagers
@@ -79,9 +78,10 @@ class AlarmsAndRemindersAppListModel(
    }

    @Composable
    override fun isAllowed(record: AlarmsAndRemindersAppRecord) =
        if (record.isTrumped) stateOf(true)
        else record.controller.isAllowed.observeAsState()
    override fun isAllowed(record: AlarmsAndRemindersAppRecord): () -> Boolean? = when {
        record.isTrumped -> ({ true })
        else -> record.controller.isAllowed.observeAsCallback()
    }

    override fun isChangeable(record: AlarmsAndRemindersAppRecord) = record.isChangeable

+2 −2
Original line number Diff line number Diff line
@@ -24,8 +24,8 @@ import android.content.Context
import android.content.pm.ApplicationInfo
import android.os.UserManager
import androidx.compose.runtime.Composable
import androidx.compose.runtime.livedata.observeAsState
import com.android.settings.R
import com.android.settingslib.spa.livedata.observeAsCallback
import com.android.settingslib.spaprivileged.model.app.AppOpsController
import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.userId
@@ -79,7 +79,7 @@ class InstallUnknownAppsListModel(private val context: Context) :

    @Composable
    override fun isAllowed(record: InstallUnknownAppsRecord) =
        record.appOpsController.isAllowed.observeAsState()
        record.appOpsController.isAllowed.observeAsCallback()

    override fun isChangeable(record: InstallUnknownAppsRecord) =
        isChangeable(record, getPotentialPackageNames(record.app.userId))
+2 −2
Original line number Diff line number Diff line
@@ -23,8 +23,8 @@ import android.content.pm.PackageManager.PackageInfoFlags
import android.nfc.NfcAdapter
import android.util.Log
import androidx.compose.runtime.Composable
import androidx.compose.runtime.livedata.observeAsState
import com.android.settings.R
import com.android.settingslib.spa.livedata.observeAsCallback
import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.userId
import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListModel
@@ -100,7 +100,7 @@ class NfcTagAppsSettingsListModel(private val context: Context) :

    @Composable
    override fun isAllowed(record: NfcTagAppsSettingsRecord) =
        record.controller.isAllowed.observeAsState()
        record.controller.isAllowed.observeAsCallback()

    override fun isChangeable(record: NfcTagAppsSettingsRecord) = true

Loading