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

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

Merge "Rearrange bluetooth device details fragment according to config" into main

parents 7eb10467 5641f269
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") },
            )