diff options
| author | 2024-08-09 11:59:09 +0800 | |
|---|---|---|
| committer | 2024-08-14 16:06:45 +0800 | |
| commit | 5641f2694abc3a36c08f1313500fd9e1f01ed8e0 (patch) | |
| tree | f0f8fa00726596de3a52e7bab15829b9c76003e0 | |
| parent | 35cc593181b1cc9c49949d63381980edb65b833a (diff) | |
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
4 files changed, 35 insertions, 16 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/devicesettings/DeviceSettingItem.kt b/packages/SettingsLib/src/com/android/settingslib/bluetooth/devicesettings/DeviceSettingItem.kt index 9ee33b0dbffe..a0fe5d275b36 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/devicesettings/DeviceSettingItem.kt +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/devicesettings/DeviceSettingItem.kt @@ -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, ) } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/devicesettings/data/repository/DeviceSettingRepository.kt b/packages/SettingsLib/src/com/android/settingslib/bluetooth/devicesettings/data/repository/DeviceSettingRepository.kt index 326bb31bdb9f..a599dd1cc5d8 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/devicesettings/data/repository/DeviceSettingRepository.kt +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/devicesettings/data/repository/DeviceSettingRepository.kt @@ -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, diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/devicesettings/shared/model/DeviceSettingConfigModel.kt b/packages/SettingsLib/src/com/android/settingslib/bluetooth/devicesettings/shared/model/DeviceSettingConfigModel.kt index cd597ee65bce..136abadc25e8 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/devicesettings/shared/model/DeviceSettingConfigModel.kt +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/devicesettings/shared/model/DeviceSettingConfigModel.kt @@ -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 +} diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/devicesettings/DeviceSettingsConfigTest.kt b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/devicesettings/DeviceSettingsConfigTest.kt index 2b29a6ef5e5a..9568d66ac7db 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/devicesettings/DeviceSettingsConfigTest.kt +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/devicesettings/DeviceSettingsConfigTest.kt @@ -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") }, ) |