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

Commit 4f3d7c00 authored by Haijie Hong's avatar Haijie Hong Committed by Android (Google) Code Review
Browse files

Merge "make device setting be able to use both Intent and PendingIntent" into main

parents f81d4922 79f17d11
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.bluetooth.ui.model

import android.content.Intent
import com.android.settingslib.bluetooth.devicesettings.DeviceSettingId
import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingActionModel
import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingIcon
import com.android.settingslib.bluetooth.devicesettings.shared.model.ToggleModel

@@ -32,7 +33,7 @@ sealed interface DeviceSettingPreferenceModel {
        val title: String,
        val summary: String? = null,
        val icon: DeviceSettingIcon? = null,
        val intent: Intent? = null,
        val action: DeviceSettingActionModel? = null,
    ) : DeviceSettingPreferenceModel

    /** Models a switch preference. */
@@ -43,7 +44,7 @@ sealed interface DeviceSettingPreferenceModel {
        val icon: DeviceSettingIcon? = null,
        val checked: Boolean,
        val onCheckedChange: ((Boolean) -> Unit),
        val intent: Intent? = null,
        val action: DeviceSettingActionModel? = null,
    ) : DeviceSettingPreferenceModel

    /** Models a multi-toggle preference. */
+14 −6
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ import com.android.settings.core.SubSettingLauncher
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settings.spa.preference.ComposePreference
import com.android.settingslib.bluetooth.CachedBluetoothDevice
import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingActionModel
import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingConfigItemModel
import com.android.settingslib.bluetooth.devicesettings.shared.model.DeviceSettingIcon
import com.android.settingslib.spa.framework.theme.SettingsDimension
@@ -313,10 +314,10 @@ class DeviceDetailsFragmentFormatterImpl(
                        return { deviceSettingIcon(model.icon) }
                    }
            }
        if (model.intent != null) {
        if (model.action != null) {
            TwoTargetSwitchPreference(
                switchPrefModel,
                primaryOnClick = { startActivity(model.intent) },
                primaryOnClick = { triggerAction(model.action) },
            )
        } else {
            SwitchPreference(switchPrefModel)
@@ -330,7 +331,7 @@ class DeviceDetailsFragmentFormatterImpl(
                override val title = model.title
                override val summary = { model.summary ?: "" }
                override val onClick = {
                    model.intent?.let { startActivity(it) }
                    model.action?.let { triggerAction(it) }
                    Unit
                }
                override val icon: (@Composable () -> Unit)?
@@ -382,9 +383,16 @@ class DeviceDetailsFragmentFormatterImpl(
        icon?.let { Icon(it, modifier = Modifier.size(SettingsDimension.itemIconSize)) }
    }

    private fun startActivity(intent: Intent) {
        intent.removeFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        context.startActivity(intent)
    private fun triggerAction(action: DeviceSettingActionModel) {
        when (action) {
            is DeviceSettingActionModel.IntentAction -> {
                action.intent.removeFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                context.startActivity(action.intent)
            }
            is DeviceSettingActionModel.PendingIntentAction -> {
                action.pendingIntent.send()
            }
        }
    }

    private fun getPreferenceKey(settingId: Int) = "DEVICE_SETTING_${settingId}"
+2 −2
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ class BluetoothDeviceDetailsViewModel(
                                DeviceSettingStateModel.ActionSwitchPreferenceState(newState)
                            )
                        },
                        intent = intent,
                        action = action,
                    )
                } else {
                    DeviceSettingPreferenceModel.PlainPreference(
@@ -109,7 +109,7 @@ class BluetoothDeviceDetailsViewModel(
                        title = title,
                        summary = summary,
                        icon = icon,
                        intent = intent,
                        action = action,
                    )
                }
            }