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

Commit e9f0fdcd authored by Sunny Shao's avatar Sunny Shao
Browse files

[Catalyst] Implement metrics/tags for Settings Catalyst

NO_IFTTT=Catalyst only

Bug: 394002861
Flag: com.android.settings.flags.catalyst
Test: devtool
Change-Id: Ia879883c3f29cd7ac286b431680d66ab52e87db0
parent 089e6378
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -15,13 +15,16 @@
 */
package com.android.settings.accessibility

import android.app.settings.SettingsEnums.ACTION_VIBRATION_HAPTICS
import android.content.Context
import android.os.VibrationAttributes
import android.os.Vibrator
import android.provider.Settings
import android.widget.CompoundButton
import android.widget.CompoundButton.OnCheckedChangeListener
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.R
import com.android.settings.contract.KEY_VIBRATION_HAPTICS
import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate
import com.android.settingslib.datastore.SettingsStore
@@ -39,6 +42,7 @@ class VibrationMainSwitchPreference :
        key = Settings.System.VIBRATE_ON,
        title = R.string.accessibility_vibration_primary_switch_title,
    ),
    PreferenceActionMetricsProvider,
    PreferenceLifecycleProvider,
    OnCheckedChangeListener {
    override val keywords: Int
@@ -46,6 +50,11 @@ class VibrationMainSwitchPreference :

    lateinit var vibrator: Vibrator

    override val preferenceActionMetrics: Int
        get() = ACTION_VIBRATION_HAPTICS

    override fun tags(context: Context) = arrayOf(KEY_VIBRATION_HAPTICS)

    override fun storage(context: Context): KeyValueStore =
        VibrationMainSwitchToggleStorage(SettingsSystemStore.get(context))

+8 −0
Original line number Diff line number Diff line
@@ -16,12 +16,14 @@

package com.android.settings.display

import android.app.settings.SettingsEnums.ACTION_AMBIENT_DISPLAY_ALWAYS_ON
import android.content.Context
import android.hardware.display.AmbientDisplayConfiguration
import android.os.SystemProperties
import android.os.UserHandle
import android.os.UserManager
import android.provider.Settings.Secure.DOZE_ALWAYS_ON
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R
import com.android.settings.contract.KEY_AMBIENT_DISPLAY_ALWAYS_ON
@@ -41,6 +43,7 @@ import com.android.settingslib.metadata.SwitchPreference
// LINT.IfChange
class AmbientDisplayAlwaysOnPreference :
    SwitchPreference(KEY, R.string.doze_always_on_title, R.string.doze_always_on_summary),
    PreferenceActionMetricsProvider,
    PreferenceAvailabilityProvider,
    PreferenceSummaryProvider,
    PreferenceRestrictionMixin {
@@ -48,6 +51,11 @@ class AmbientDisplayAlwaysOnPreference :
    override val keywords: Int
        get() = R.string.keywords_always_show_time_info

    override val preferenceActionMetrics: Int
        get() = ACTION_AMBIENT_DISPLAY_ALWAYS_ON

    override fun tags(context: Context) = arrayOf(KEY_AMBIENT_DISPLAY_ALWAYS_ON)

    override val restrictionKeys: Array<String>
        get() = arrayOf(UserManager.DISALLOW_AMBIENT_DISPLAY)

+10 −24
Original line number Diff line number Diff line
@@ -15,30 +15,32 @@
 */
package com.android.settings.display

import android.app.settings.SettingsEnums
import android.app.settings.SettingsEnums.OPEN_BATTERY_PERCENTAGE
import android.content.Context
import android.provider.Settings
import androidx.preference.Preference
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.R
import com.android.settings.Utils
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settings.contract.KEY_BATTERY_PERCENTAGE
import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate
import com.android.settingslib.datastore.SettingsStore
import com.android.settingslib.datastore.SettingsSystemStore
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceMetadata
import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel
import com.android.settingslib.metadata.SwitchPreference
import com.android.settingslib.preference.SwitchPreferenceBinding

// LINT.IfChange
class BatteryPercentageSwitchPreference :
    SwitchPreference(KEY, R.string.battery_percentage, R.string.battery_percentage_description),
    SwitchPreferenceBinding,
    PreferenceAvailabilityProvider,
    Preference.OnPreferenceChangeListener {
    PreferenceActionMetricsProvider,
    PreferenceAvailabilityProvider {

    override val preferenceActionMetrics: Int
        get() = OPEN_BATTERY_PERCENTAGE

    override fun tags(context: Context) = arrayOf(KEY_BATTERY_PERCENTAGE)

    override fun storage(context: Context): KeyValueStore =
        BatteryPercentageStorage(context, SettingsSystemStore.get(context))
@@ -66,22 +68,6 @@ class BatteryPercentageSwitchPreference :
    override val sensitivityLevel
        get() = SensitivityLevel.NO_SENSITIVITY

    override fun bind(preference: Preference, metadata: PreferenceMetadata) {
        super.bind(preference, metadata)
        preference.onPreferenceChangeListener = this
    }

    override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
        val showPercentage = newValue as Boolean

        featureFactory.metricsFeatureProvider.action(
            preference.context,
            SettingsEnums.OPEN_BATTERY_PERCENTAGE,
            showPercentage,
        )
        return true
    }

    @Suppress("UNCHECKED_CAST")
    private class BatteryPercentageStorage(
        private val context: Context,
+9 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
package com.android.settings.display

import android.app.ActivityOptions
import android.app.settings.SettingsEnums.ACTION_BRIGHTNESS_LEVEL
import android.content.Context
import android.content.Intent
import android.content.Intent.ACTION_SHOW_BRIGHTNESS_DIALOG
@@ -26,9 +27,11 @@ import android.hardware.display.DisplayManager.DisplayListener
import android.os.UserManager
import android.provider.Settings.System
import androidx.preference.Preference
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R
import com.android.settings.Utils
import com.android.settings.contract.KEY_BRIGHTNESS_LEVEL
import com.android.settings.core.SettingsBaseActivity
import com.android.settingslib.RestrictedPreference
import com.android.settingslib.datastore.AbstractKeyedDataObservable
@@ -56,6 +59,7 @@ class BrightnessLevelPreference :
    IntRangeValuePreference,
    PreferenceBinding,
    PreferenceRestrictionMixin,
    PreferenceActionMetricsProvider,
    PreferenceSummaryProvider,
    Preference.OnPreferenceClickListener {

@@ -68,6 +72,11 @@ class BrightnessLevelPreference :
    override val keywords: Int
        get() = R.string.keywords_display_brightness_level

    override val preferenceActionMetrics: Int
        get() = ACTION_BRIGHTNESS_LEVEL

    override fun tags(context: Context) = arrayOf(KEY_BRIGHTNESS_LEVEL)

    override fun getSummary(context: Context): CharSequence? =
        NumberFormat.getPercentInstance().format(context.brightnessPercent)

+9 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.settings.display

import android.app.settings.SettingsEnums.ACTION_SMOOTH_DISPLAY
import android.content.Context
import android.hardware.display.DisplayManager
import android.provider.DeviceConfig
@@ -23,7 +24,9 @@ import com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RAT
import com.android.internal.display.RefreshRateSettingsUtils.findHighestRefreshRateAmongAllDisplays
import com.android.internal.display.RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay
import com.android.server.display.feature.flags.Flags
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.R
import com.android.settings.contract.KEY_SMOOTH_DISPLAY
import com.android.settingslib.datastore.HandlerExecutor
import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate
@@ -41,12 +44,18 @@ import kotlin.math.roundToInt
// LINT.IfChange
class PeakRefreshRateSwitchPreference :
    SwitchPreference(KEY, R.string.peak_refresh_rate_title),
    PreferenceActionMetricsProvider,
    PreferenceAvailabilityProvider,
    PreferenceSummaryProvider,
    PreferenceLifecycleProvider {

    private var propertiesChangedListener: DeviceConfig.OnPropertiesChangedListener? = null

    override val preferenceActionMetrics: Int
        get() = ACTION_SMOOTH_DISPLAY

    override fun tags(context: Context) = arrayOf(KEY_SMOOTH_DISPLAY)

    override fun storage(context: Context): KeyValueStore =
        PeakRefreshRateStore(context, SettingsSystemStore.get(context))

Loading