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

Commit 3bb43db4 authored by Jason Chiu's avatar Jason Chiu
Browse files

[Catalyst] Migrate docking sounds preference

Bug: 389131873
Test: atest DockingSoundPreferenceTest, manual
Flag: com.android.settings.flags.catalyst_sound_screen_25q4
Change-Id: Icf77b2ce979b6423fb31ded037f2702657bb0976
parent 58dc3b0f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -177,7 +177,7 @@

    <!-- Docking sounds -->
    <SwitchPreferenceCompat
        android:key="docking_sounds"
        android:key="dock_sounds_enabled"
        android:title="@string/docking_sounds_title"
        android:order="-35"/>

+3 −0
Original line number Diff line number Diff line
@@ -126,6 +126,9 @@ const val KEY_SCREEN_LOCKING_SOUND = "screen_locking_sound"
/** Contract key for the "Charging sounds and vibration" setting. */
const val KEY_CHARGING_SOUNDS = "charging_sounds"

/** Contract key for the "Docking sounds" setting. */
const val KEY_DOCKING_SOUNDS = "docking_sounds"

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

+66 −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_DOCKING_SOUND
import android.content.Context
import android.provider.Settings.Global.DOCK_SOUNDS_ENABLED
import com.android.settings.R
import com.android.settings.contract.KEY_DOCKING_SOUNDS
import com.android.settings.metrics.PreferenceActionMetricsProvider
import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.SettingsGlobalStore
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 DockingSoundPreference :
    SwitchPreference(KEY, R.string.docking_sounds_title),
    PreferenceActionMetricsProvider,
    PreferenceAvailabilityProvider {
    override val preferenceActionMetrics: Int
        get() = ACTION_DOCKING_SOUND

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

    override fun storage(context: Context) = context.dataStore

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

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

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

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

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

    override val sensitivityLevel
        get() = SensitivityLevel.NO_SENSITIVITY

    companion object {
        const val KEY = DOCK_SOUNDS_ENABLED

        private val Context.dataStore: KeyValueStore
            get() = SettingsGlobalStore.get(this).apply { setDefaultValue(KEY, true) }
    }
}
// LINT.ThenChange(DockingSoundPreferenceController.java)
+5 −5
Original line number Diff line number Diff line
@@ -16,29 +16,29 @@

package com.android.settings.notification;

import static android.provider.Settings.Global.DOCK_SOUNDS_ENABLED;

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

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

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

// LINT.IfChange
public class DockingSoundPreferenceController extends SettingPrefController {

    private static final String KEY_DOCKING_SOUNDS = "docking_sounds";

    public DockingSoundPreferenceController(Context context, SettingsPreferenceFragment parent,
            Lifecycle lifecycle) {
        super(context, parent, lifecycle);
        mPreference = new SettingPref(
            TYPE_GLOBAL, KEY_DOCKING_SOUNDS, Global.DOCK_SOUNDS_ENABLED, DEFAULT_ON) {
            TYPE_GLOBAL, DOCK_SOUNDS_ENABLED, DOCK_SOUNDS_ENABLED, DEFAULT_ON) {
            @Override
            public boolean isApplicable(Context context) {
                return context.getResources().getBoolean(R.bool.has_dock_settings);
            }
        };
    }

}
// LINT.ThenChange(DockingSoundPreference.kt)
+1 −0
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ open class SoundScreen : PreferenceScreenCreator, PreferenceIconProvider {
            if (Flags.catalystSoundScreen25q4()) {
                +ScreenLockSoundPreference() order -45
                +ChargingSoundPreference() order -40
                +DockingSoundPreference() order -35
            }
        }

Loading