[Catalyst] Update PreferenceLifecycleContext.notifyPreferenceChange

Change the signature from metadata to preference key, so that the API
could be used to notify other preferences on the same screen.

NO_IFTTT=Catalyst only

Bug: 332201912
Flag: com.android.settings.flags.catalyst
Test: atest
Change-Id: Ibdf5f9004471d5491a0be1e84365cbe9f136c373
This commit is contained in:
Jacky Wang
2024-11-19 13:31:57 +08:00
parent 75c4dcb39b
commit 83708d4499
7 changed files with 29 additions and 24 deletions

View File

@@ -32,7 +32,7 @@ class DataSaverMainSwitchPreference(context: Context) :
private var dataSaverBackendListener: DataSaverBackend.Listener? = null private var dataSaverBackendListener: DataSaverBackend.Listener? = null
override val key override val key
get() = "use_data_saver" get() = KEY
override val title override val title
get() = R.string.data_saver_switch_title get() = R.string.data_saver_switch_title
@@ -46,7 +46,7 @@ class DataSaverMainSwitchPreference(context: Context) :
ReadWritePermit.ALLOW ReadWritePermit.ALLOW
override fun onStart(context: PreferenceLifecycleContext) { override fun onStart(context: PreferenceLifecycleContext) {
val listener = DataSaverBackend.Listener { context.notifyPreferenceChange(this) } val listener = DataSaverBackend.Listener { context.notifyPreferenceChange(KEY) }
dataSaverBackendListener = listener dataSaverBackendListener = listener
dataSaverBackend.addListener(listener) dataSaverBackend.addListener(listener)
} }
@@ -71,4 +71,8 @@ class DataSaverMainSwitchPreference(context: Context) :
dataSaverBackend.isDataSaverEnabled = value as Boolean dataSaverBackend.isDataSaverEnabled = value as Boolean
} }
} }
companion object {
const val KEY = "use_data_saver"
}
} }

View File

@@ -71,7 +71,7 @@ class DataSaverScreen :
override fun hasCompleteHierarchy() = false override fun hasCompleteHierarchy() = false
override fun onStart(context: PreferenceLifecycleContext) { override fun onStart(context: PreferenceLifecycleContext) {
val listener = DataSaverBackend.Listener { context.notifyPreferenceChange(this) } val listener = DataSaverBackend.Listener { context.notifyPreferenceChange(KEY) }
dataSaverBackendListener = listener dataSaverBackendListener = listener
dataSaverBackend = DataSaverBackend(context).apply { addListener(listener) } dataSaverBackend = DataSaverBackend(context).apply { addListener(listener) }
} }

View File

@@ -101,7 +101,7 @@ class AdaptiveSleepPreference :
val receiver = val receiver =
object : BroadcastReceiver() { object : BroadcastReceiver() {
override fun onReceive(receiverContext: Context, intent: Intent) { override fun onReceive(receiverContext: Context, intent: Intent) {
context.notifyPreferenceChange(this@AdaptiveSleepPreference) context.notifyPreferenceChange(KEY)
} }
} }
context.registerReceiver( context.registerReceiver(
@@ -111,7 +111,7 @@ class AdaptiveSleepPreference :
broadcastReceiver = receiver broadcastReceiver = receiver
val listener = OnSensorPrivacyChangedListener { _, _ -> val listener = OnSensorPrivacyChangedListener { _, _ ->
context.notifyPreferenceChange(this) context.notifyPreferenceChange(KEY)
} }
SensorPrivacyManager.getInstance(context).addSensorPrivacyListener(CAMERA, listener) SensorPrivacyManager.getInstance(context).addSensorPrivacyListener(CAMERA, listener)
sensorPrivacyChangedListener = listener sensorPrivacyChangedListener = listener

View File

@@ -58,7 +58,7 @@ class BrightnessLevelPreference :
private var displayListener: DisplayListener? = null private var displayListener: DisplayListener? = null
override val key: String override val key: String
get() = "brightness" get() = KEY
override val title: Int override val title: Int
get() = R.string.brightness get() = R.string.brightness
@@ -85,10 +85,7 @@ class BrightnessLevelPreference :
} }
override fun onStart(context: PreferenceLifecycleContext) { override fun onStart(context: PreferenceLifecycleContext) {
val observer = val observer = KeyedObserver<String> { _, _ -> context.notifyPreferenceChange(KEY) }
KeyedObserver<String> { _, _ ->
context.notifyPreferenceChange(this@BrightnessLevelPreference)
}
brightnessObserver = observer brightnessObserver = observer
SettingsSystemStore.get(context) SettingsSystemStore.get(context)
.addObserver(System.SCREEN_AUTO_BRIGHTNESS_ADJ, observer, HandlerExecutor.main) .addObserver(System.SCREEN_AUTO_BRIGHTNESS_ADJ, observer, HandlerExecutor.main)
@@ -100,7 +97,7 @@ class BrightnessLevelPreference :
override fun onDisplayRemoved(displayId: Int) {} override fun onDisplayRemoved(displayId: Int) {}
override fun onDisplayChanged(displayId: Int) { override fun onDisplayChanged(displayId: Int) {
context.notifyPreferenceChange(this@BrightnessLevelPreference) context.notifyPreferenceChange(KEY)
} }
} }
displayListener = listener displayListener = listener
@@ -162,5 +159,9 @@ class BrightnessLevelPreference :
value < GAMMA_SPACE_MIN -> 0.0 value < GAMMA_SPACE_MIN -> 0.0
else -> (value - GAMMA_SPACE_MIN) / (GAMMA_SPACE_MAX - GAMMA_SPACE_MIN) else -> (value - GAMMA_SPACE_MIN) / (GAMMA_SPACE_MAX - GAMMA_SPACE_MIN)
} }
companion object {
const val KEY = "brightness"
}
} }
// LINT.ThenChange(BrightnessLevelPreferenceController.java) // LINT.ThenChange(BrightnessLevelPreferenceController.java)

View File

@@ -39,7 +39,7 @@ import kotlin.math.roundToInt
// LINT.IfChange // LINT.IfChange
class PeakRefreshRateSwitchPreference : class PeakRefreshRateSwitchPreference :
SwitchPreference(PEAK_REFRESH_RATE, R.string.peak_refresh_rate_title), SwitchPreference(KEY, R.string.peak_refresh_rate_title),
PreferenceAvailabilityProvider, PreferenceAvailabilityProvider,
PreferenceSummaryProvider, PreferenceSummaryProvider,
PreferenceLifecycleProvider { PreferenceLifecycleProvider {
@@ -69,7 +69,7 @@ class PeakRefreshRateSwitchPreference :
// KEY_PEAK_REFRESH_RATE_DEFAULT value could be added, changed, removed or // KEY_PEAK_REFRESH_RATE_DEFAULT value could be added, changed, removed or
// unchanged. // unchanged.
// Just force a UI update for any case. // Just force a UI update for any case.
context.notifyPreferenceChange(this) context.notifyPreferenceChange(KEY)
} }
propertiesChangedListener = listener propertiesChangedListener = listener
@@ -97,14 +97,13 @@ class PeakRefreshRateSwitchPreference :
override fun contains(key: String) = settingsStore.contains(key) override fun contains(key: String) = settingsStore.contains(key)
override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>): T? { override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>): T? {
if (key != PEAK_REFRESH_RATE) return super.getDefaultValue(key, valueType) if (key != KEY) return super.getDefaultValue(key, valueType)
return context.defaultPeakRefreshRate.refreshRateAsBoolean(context) as T return context.defaultPeakRefreshRate.refreshRateAsBoolean(context) as T
} }
override fun <T : Any> getValue(key: String, valueType: Class<T>): T? { override fun <T : Any> getValue(key: String, valueType: Class<T>): T? {
if (key != PEAK_REFRESH_RATE) return null if (key != KEY) return null
val refreshRate = val refreshRate = settingsStore.getFloat(KEY) ?: context.defaultPeakRefreshRate
settingsStore.getFloat(PEAK_REFRESH_RATE) ?: context.defaultPeakRefreshRate
return refreshRate.refreshRateAsBoolean(context) as T return refreshRate.refreshRateAsBoolean(context) as T
} }
@@ -113,12 +112,12 @@ class PeakRefreshRateSwitchPreference :
override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) = override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) =
when { when {
key != PEAK_REFRESH_RATE -> {} key != KEY -> {}
value == null -> settingsStore.setFloat(PEAK_REFRESH_RATE, null) value == null -> settingsStore.setFloat(KEY, null)
else -> { else -> {
val peakRefreshRate = val peakRefreshRate =
if (value as Boolean) context.refreshRateIfON() else DEFAULT_REFRESH_RATE if (value as Boolean) context.refreshRateIfON() else DEFAULT_REFRESH_RATE
settingsStore.setFloat(PEAK_REFRESH_RATE, peakRefreshRate) settingsStore.setFloat(KEY, peakRefreshRate)
} }
} }
@@ -130,6 +129,7 @@ class PeakRefreshRateSwitchPreference :
} }
companion object { companion object {
const val KEY = PEAK_REFRESH_RATE
private const val INVALIDATE_REFRESH_RATE: Float = -1f private const val INVALIDATE_REFRESH_RATE: Float = -1f
private val Context.peakRefreshRate: Float private val Context.peakRefreshRate: Float

View File

@@ -112,7 +112,7 @@ class DarkModeScreen :
val broadcastReceiver = val broadcastReceiver =
object : BroadcastReceiver() { object : BroadcastReceiver() {
override fun onReceive(receiverContext: Context, intent: Intent) { override fun onReceive(receiverContext: Context, intent: Intent) {
context.notifyPreferenceChange(this@DarkModeScreen) context.notifyPreferenceChange(KEY)
} }
} }
context.registerReceiver( context.registerReceiver(
@@ -121,7 +121,7 @@ class DarkModeScreen :
) )
val darkModeObserver = DarkModeObserver(context) val darkModeObserver = DarkModeObserver(context)
darkModeObserver.subscribe { context.notifyPreferenceChange(this@DarkModeScreen) } darkModeObserver.subscribe { context.notifyPreferenceChange(KEY) }
fragmentStates[context] = FragmentState(broadcastReceiver, darkModeObserver) fragmentStates[context] = FragmentState(broadcastReceiver, darkModeObserver)
} }

View File

@@ -59,13 +59,13 @@ class BatterySaverPreference :
object : BatterySaverListener { object : BatterySaverListener {
override fun onPowerSaveModeChanged() { override fun onPowerSaveModeChanged() {
handler.postDelayed( handler.postDelayed(
{ context.notifyPreferenceChange(this@BatterySaverPreference) }, { context.notifyPreferenceChange(KEY) },
SWITCH_ANIMATION_DURATION, SWITCH_ANIMATION_DURATION,
) )
} }
override fun onBatteryChanged(pluggedIn: Boolean) = override fun onBatteryChanged(pluggedIn: Boolean) =
context.notifyPreferenceChange(this@BatterySaverPreference) context.notifyPreferenceChange(KEY)
} }
) )
setListening(true) setListening(true)