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

Commit 5641f269 authored by Haijie Hong's avatar Haijie Hong
Browse files

Rearrange bluetooth device details fragment according to config

BUG: 343317785
Test: atest DeviceSettingRepositoryTest
Flag: com.android.settings.flags.enable_bluetooth_device_details_polish
Change-Id: I1058b5807bc6d7155bb01bf23fc05279f78ef50f
parent 35cc5931
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.os.Parcelable
 * @property packageName The package name for service binding.
 * @property className The class name for service binding.
 * @property intentAction The intent action for service binding.
 * @property preferenceKey The preference key if it's a built-in preference.
 * @property extras Extra bundle
 */
data class DeviceSettingItem(
@@ -34,6 +35,7 @@ data class DeviceSettingItem(
    val packageName: String,
    val className: String,
    val intentAction: String,
    val preferenceKey: String? = null,
    val extras: Bundle = Bundle.EMPTY,
) : Parcelable {

@@ -45,6 +47,7 @@ data class DeviceSettingItem(
            writeString(packageName)
            writeString(className)
            writeString(intentAction)
            writeString(preferenceKey)
            writeBundle(extras)
        }
    }
@@ -60,6 +63,7 @@ data class DeviceSettingItem(
                            packageName = readString() ?: "",
                            className = readString() ?: "",
                            intentAction = readString() ?: "",
                            preferenceKey = readString() ?: "",
                            extras = readBundle((Bundle::class.java.classLoader)) ?: Bundle.EMPTY,
                        )
                    }
+10 −6
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settingslib.bluetooth.devicesettings.data.repository

import android.bluetooth.BluetoothAdapter
import android.content.Context
import android.text.TextUtils
import com.android.settingslib.bluetooth.CachedBluetoothDevice
import com.android.settingslib.bluetooth.devicesettings.ActionSwitchPreference
import com.android.settingslib.bluetooth.devicesettings.DeviceSetting
@@ -76,8 +77,7 @@ class DeviceSettingRepositoryImpl(
                            coroutineScope,
                            backgroundCoroutineContext,
                        )
                }
            )
                })

    override suspend fun getDeviceSettingsConfig(
        cachedDevice: CachedBluetoothDevice
@@ -96,11 +96,15 @@ class DeviceSettingRepositoryImpl(
        DeviceSettingConfigModel(
            mainItems = mainContentItems.map { it.toModel() },
            moreSettingsItems = moreSettingsItems.map { it.toModel() },
            moreSettingsPageFooter = moreSettingsFooter
        )
            moreSettingsPageFooter = moreSettingsFooter)

    private fun DeviceSettingItem.toModel(): DeviceSettingConfigItemModel =
        DeviceSettingConfigItemModel(settingId)
    private fun DeviceSettingItem.toModel(): DeviceSettingConfigItemModel {
        return if (!TextUtils.isEmpty(preferenceKey)) {
            DeviceSettingConfigItemModel.BuiltinItem(settingId, preferenceKey!!)
        } else {
            DeviceSettingConfigItemModel.AppProvidedItem(settingId)
        }
    }

    private fun DeviceSetting.toModel(
        cachedDevice: CachedBluetoothDevice,
+15 −4
Original line number Diff line number Diff line
@@ -25,9 +25,20 @@ data class DeviceSettingConfigModel(
    /** Items need to be shown in device details more settings page. */
    val moreSettingsItems: List<DeviceSettingConfigItemModel>,
    /** Footer text in more settings page. */
    val moreSettingsPageFooter: String)
    val moreSettingsPageFooter: String
)

/** Models a device setting item in config. */
data class DeviceSettingConfigItemModel(
    @DeviceSettingId val settingId: Int,
)
sealed interface DeviceSettingConfigItemModel {
    @DeviceSettingId val settingId: Int

    /** A built-in item in Settings. */
    data class BuiltinItem(
        @DeviceSettingId override val settingId: Int,
        val preferenceKey: String
    ) : DeviceSettingConfigItemModel

    /** A remote item provided by other apps. */
    data class AppProvidedItem(@DeviceSettingId override val settingId: Int) :
        DeviceSettingConfigItemModel
}
+6 −6
Original line number Diff line number Diff line
@@ -37,9 +37,9 @@ class DeviceSettingsConfigTest {
                            "package_name_1",
                            "class_name_1",
                            "intent_action_1",
                            Bundle()
                        )
                    ),
                            null,
                            Bundle(),
                        )),
                moreSettingsItems =
                    listOf(
                        DeviceSettingItem(
@@ -47,9 +47,9 @@ class DeviceSettingsConfigTest {
                            "package_name_2",
                            "class_name_2",
                            "intent_action_2",
                            Bundle()
                        )
                    ),
                            null,
                            Bundle(),
                        )),
                moreSettingsFooter = "footer",
                extras = Bundle().apply { putString("key1", "value1") },
            )