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

Commit f3bc35cd authored by Chris Antol's avatar Chris Antol
Browse files

Provide dynamic title for preferences

Also categorizes Notification device state

Bug: 405344827
Test: none
Flag: com.android.settings.flags.device_state
Change-Id: I831ca066f92b73b403f12c0d80c2c0e552e4afbd
parent 3f2fe09f
Loading
Loading
Loading
Loading
+9 −14
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import com.android.settingslib.metadata.PreferenceScreenMetadata
import com.android.settingslib.metadata.PreferenceScreenRegistry
import com.android.settingslib.metadata.getPreferenceScreenTitle
import com.android.settingslib.metadata.getPreferenceSummary
import com.android.settingslib.metadata.getPreferenceTitle
import com.google.android.appfunctions.schema.common.v1.devicestate.DeviceStateItem
import com.google.android.appfunctions.schema.common.v1.devicestate.DeviceStateResponse
import com.google.android.appfunctions.schema.common.v1.devicestate.LocalizedString
@@ -116,7 +117,9 @@ class DeviceStateAppFunctionService : AppFunctionService() {
            }
        }

        if (requestCategory in setOf(DeviceStateCategory.UNCATEGORIZED)) {
            perScreenDeviceStatesList.add(buildNotificationsScreenStates())
        }

        return DeviceStateResponse(
            perScreenDeviceStates = perScreenDeviceStatesList,
@@ -138,6 +141,7 @@ class DeviceStateAppFunctionService : AppFunctionService() {
                PreferenceScreenCoordinate(screenKey, null),
            ) ?: return null
        val deviceStateItemList: MutableList<DeviceStateItem> = ArrayList()
        // TODO if child node is PreferenceScreen, recursively process it
        screenMetaData.getPreferenceHierarchy().forEachRecursively {
            val metadata = it.metadata
            val config = settingConfigMap[metadata.key]
@@ -155,8 +159,10 @@ class DeviceStateAppFunctionService : AppFunctionService() {
            deviceStateItemList.add(
                DeviceStateItem(
                    key = metadata.key,
                    // TODO check dynamic title
                    name = getLocalizedString(metadata.title),
                    name = LocalizedString(
                        english = metadata.getPreferenceTitle(englishContext).toString(),
                        localized = metadata.getPreferenceTitle(applicationContext).toString()
                    ),
                    jsonValue = jsonValue,
                    hintText = config?.hintText ?: ""
                )
@@ -179,17 +185,6 @@ class DeviceStateAppFunctionService : AppFunctionService() {
            else -> getPreferenceHierarchy(applicationContext)
        }

    private fun getLocalizedString(resId: Int): LocalizedString? {
        return try {
            LocalizedString(
                english = englishContext.getString(resId),
                localized = applicationContext.getString(resId)
            )
        } catch (_: Resources.NotFoundException) {
            null
        }
    }

    private fun createEnglishContext(): Context {
        val configuration = Configuration(applicationContext.resources.configuration)
        configuration.setLocale(Locale.US)