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

Commit 9c5683ec authored by Mill Chen's avatar Mill Chen Committed by Jason Chiu
Browse files

[Catalyst] Migrate screen locking sound preference

Bug: 389131648
Test: atest ScreenLockSoundPreferenceTest, manual
Flag: com.android.settings.flags.catalyst_sound_screen_25q4
Change-Id: Ib7118eb8deb8d4e43f22bedacefe6df7ab6c7e3c
parent 8a176e84
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -165,7 +165,7 @@

    <!-- Screen locking sounds -->
    <SwitchPreferenceCompat
        android:key="screen_locking_sounds"
        android:key="lockscreen_sounds_enabled"
        android:title="@string/screen_locking_sounds_title"
        android:order="-45"/>

+27 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.settings

import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyValueStoreDelegate

@Suppress("UNCHECKED_CAST")
class DefaultValueStoreDelegate(
    override val keyValueStoreDelegate: KeyValueStore,
    private val value: Any,
) : KeyValueStoreDelegate {
    override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) = value as T
}
+3 −0
Original line number Diff line number Diff line
@@ -120,6 +120,9 @@ const val KEY_ALARM_VOLUME = "alarm_volume"
 */
const val KEY_DIAL_PAD_TONE = "dtmf_tone"

/** Contract key for the "Screen locking sound" setting. */
const val KEY_SCREEN_LOCKING_SOUND = "screen_locking_sound"

/** Contract key for the "Remove animation" setting. */
const val KEY_REMOVE_ANIMATION = "remove_animation"

+60 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.settings.notification

import android.app.settings.SettingsEnums.ACTION_SCREEN_LOCKING_SOUND
import android.content.Context
import android.provider.Settings.System.LOCKSCREEN_SOUNDS_ENABLED
import com.android.settings.DefaultValueStoreDelegate
import com.android.settings.R
import com.android.settings.contract.KEY_SCREEN_LOCKING_SOUND
import com.android.settings.metrics.PreferenceActionMetricsProvider
import com.android.settingslib.datastore.SettingsSystemStore
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel
import com.android.settingslib.metadata.SwitchPreference

// LINT.IfChange
class ScreenLockSoundPreference :
    SwitchPreference(LOCKSCREEN_SOUNDS_ENABLED, R.string.screen_locking_sounds_title),
    PreferenceActionMetricsProvider,
    PreferenceAvailabilityProvider {
    override val preferenceActionMetrics: Int
        get() = ACTION_SCREEN_LOCKING_SOUND

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

    override fun storage(context: Context) =
        DefaultValueStoreDelegate(SettingsSystemStore.get(context), true)

    override fun isAvailable(context: Context) =
        context.resources.getBoolean(R.bool.config_show_screen_locking_sounds)

    override fun getReadPermissions(context: Context) = SettingsSystemStore.getReadPermissions()

    override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
        ReadWritePermit.ALLOW

    override fun getWritePermissions(context: Context) = SettingsSystemStore.getWritePermissions()

    override fun getWritePermit(context: Context, callingPid: Int, callingUid: Int) =
        ReadWritePermit.ALLOW

    override val sensitivityLevel
        get() = SensitivityLevel.NO_SENSITIVITY
}
// LINT.ThenChange(ScreenLockSoundPreferenceController.java)
+5 −4
Original line number Diff line number Diff line
@@ -16,24 +16,24 @@

package com.android.settings.notification;

import static android.provider.Settings.System.LOCKSCREEN_SOUNDS_ENABLED;

import static com.android.settings.notification.SettingPref.TYPE_SYSTEM;

import android.content.Context;
import android.provider.Settings.System;

import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settingslib.core.lifecycle.Lifecycle;

// LINT.IfChange
public class ScreenLockSoundPreferenceController extends SettingPrefController {

    private static final String KEY_SCREEN_LOCKING_SOUNDS = "screen_locking_sounds";

    public ScreenLockSoundPreferenceController(Context context, SettingsPreferenceFragment parent,
            Lifecycle lifecycle) {
        super(context, parent, lifecycle);
        mPreference = new SettingPref(
            TYPE_SYSTEM, KEY_SCREEN_LOCKING_SOUNDS, System.LOCKSCREEN_SOUNDS_ENABLED, DEFAULT_ON);
                TYPE_SYSTEM, LOCKSCREEN_SOUNDS_ENABLED, LOCKSCREEN_SOUNDS_ENABLED, DEFAULT_ON);
    }

    @Override
@@ -41,3 +41,4 @@ public class ScreenLockSoundPreferenceController extends SettingPrefController {
        return mContext.getResources().getBoolean(R.bool.config_show_screen_locking_sounds);
    }
}
// LINT.ThenChange(ScreenLockSoundPreference.kt)
Loading