Add ability to show/hide individual settings in Sounds page.

This adds the following 7 new boolean flags:
config_show_alarm_volume
config_show_charging_sounds
config_show_media_volume
config_show_notification_ringtone
config_show_notification_volume
config_show_screen_locking_sounds
config_show_touch_sounds

Which when set to false, will hide the respective preferences in Sounds
page.

Bug: 69813881
Test: make RunSettingsRoboTests
ROBOTEST_FILTER=com.android.settings.notification all pass.

Change-Id: I84a2ce66b07c00d658422ce1a0eacaf9a01fae8a
This commit is contained in:
Ben Lin
2018-01-05 12:30:09 -08:00
parent 533dfdfbfd
commit 921e3d14b8
17 changed files with 180 additions and 30 deletions

View File

@@ -21,6 +21,7 @@ import android.media.AudioManager;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.notification.VolumeSeekBarPreference.Callback;
import com.android.settings.R;
import com.android.settingslib.core.lifecycle.Lifecycle;
public class AlarmVolumePreferenceController extends
@@ -43,7 +44,8 @@ public class AlarmVolumePreferenceController extends
@Override
public boolean isAvailable() {
return !mHelper.isSingleVolume();
return mContext.getResources().getBoolean(R.bool.config_show_alarm_volume)
&& !mHelper.isSingleVolume();
}
@Override

View File

@@ -21,6 +21,7 @@ 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;
@@ -33,7 +34,10 @@ public class ChargingSoundPreferenceController extends SettingPrefController {
super(context, parent, lifecycle);
mPreference = new SettingPref(
TYPE_GLOBAL, KEY_CHARGING_SOUNDS, Global.CHARGING_SOUNDS_ENABLED, DEFAULT_ON);
}
@Override
public boolean isAvailable() {
return mContext.getResources().getBoolean(R.bool.config_show_charging_sounds);
}
}

View File

@@ -19,6 +19,7 @@ package com.android.settings.notification;
import android.content.Context;
import android.media.AudioManager;
import com.android.settings.notification.VolumeSeekBarPreference.Callback;
import com.android.settings.R;
import com.android.settingslib.core.lifecycle.Lifecycle;
public class MediaVolumePreferenceController extends
@@ -32,7 +33,7 @@ public class MediaVolumePreferenceController extends
@Override
public boolean isAvailable() {
return true;
return mContext.getResources().getBoolean(R.bool.config_show_media_volume);
}
@Override

View File

@@ -19,6 +19,8 @@ package com.android.settings.notification;
import android.content.Context;
import android.media.RingtoneManager;
import com.android.settings.R;
public class NotificationRingtonePreferenceController extends RingtonePreferenceControllerBase {
private static final String KEY_NOTIFICATION_RINGTONE = "notification_ringtone";
@@ -27,6 +29,11 @@ public class NotificationRingtonePreferenceController extends RingtonePreference
super(context);
}
@Override
public boolean isAvailable() {
return mContext.getResources().getBoolean(R.bool.config_show_notification_ringtone);
}
@Override
public String getPreferenceKey() {
return KEY_NOTIFICATION_RINGTONE;

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.media.AudioManager;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.notification.VolumeSeekBarPreference.Callback;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -45,7 +46,8 @@ public class NotificationVolumePreferenceController extends
@Override
public boolean isAvailable() {
return !Utils.isVoiceCapable(mContext) && !mHelper.isSingleVolume();
return mContext.getResources().getBoolean(R.bool.config_show_notification_volume)
&& !Utils.isVoiceCapable(mContext) && !mHelper.isSingleVolume();
}
@Override

View File

@@ -21,6 +21,7 @@ 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;
@@ -35,4 +36,8 @@ public class ScreenLockSoundPreferenceController extends SettingPrefController {
TYPE_SYSTEM, KEY_SCREEN_LOCKING_SOUNDS, System.LOCKSCREEN_SOUNDS_ENABLED, DEFAULT_ON);
}
@Override
public boolean isAvailable() {
return mContext.getResources().getBoolean(R.bool.config_show_screen_locking_sounds);
}
}

View File

@@ -33,6 +33,7 @@ import com.android.settings.R;
import com.android.settings.RingtonePreference;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.widget.PreferenceCategoryController;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -201,15 +202,45 @@ public class SoundSettings extends DashboardFragment {
controllers.add(new WorkSoundPreferenceController(context, fragment, lifecycle));
// === Other Sound Settings ===
controllers.add(new DialPadTonePreferenceController(context, fragment, lifecycle));
controllers.add(new ScreenLockSoundPreferenceController(context, fragment, lifecycle));
controllers.add(new ChargingSoundPreferenceController(context, fragment, lifecycle));
controllers.add(new DockingSoundPreferenceController(context, fragment, lifecycle));
controllers.add(new TouchSoundPreferenceController(context, fragment, lifecycle));
controllers.add(new VibrateOnTouchPreferenceController(context, fragment, lifecycle));
controllers.add(new DockAudioMediaPreferenceController(context, fragment, lifecycle));
controllers.add(new BootSoundPreferenceController(context));
controllers.add(new EmergencyTonePreferenceController(context, fragment, lifecycle));
final DialPadTonePreferenceController dialPadTonePreferenceController =
new DialPadTonePreferenceController(context, fragment, lifecycle);
final ScreenLockSoundPreferenceController screenLockSoundPreferenceController =
new ScreenLockSoundPreferenceController(context, fragment, lifecycle);
final ChargingSoundPreferenceController chargingSoundPreferenceController =
new ChargingSoundPreferenceController(context, fragment, lifecycle);
final DockingSoundPreferenceController dockingSoundPreferenceController =
new DockingSoundPreferenceController(context, fragment, lifecycle);
final TouchSoundPreferenceController touchSoundPreferenceController =
new TouchSoundPreferenceController(context, fragment, lifecycle);
final VibrateOnTouchPreferenceController vibrateOnTouchPreferenceController =
new VibrateOnTouchPreferenceController(context, fragment, lifecycle);
final DockAudioMediaPreferenceController dockAudioMediaPreferenceController =
new DockAudioMediaPreferenceController(context, fragment, lifecycle);
final BootSoundPreferenceController bootSoundPreferenceController =
new BootSoundPreferenceController(context);
final EmergencyTonePreferenceController emergencyTonePreferenceController =
new EmergencyTonePreferenceController(context, fragment, lifecycle);
controllers.add(dialPadTonePreferenceController);
controllers.add(screenLockSoundPreferenceController);
controllers.add(chargingSoundPreferenceController);
controllers.add(dockingSoundPreferenceController);
controllers.add(touchSoundPreferenceController);
controllers.add(vibrateOnTouchPreferenceController);
controllers.add(dockAudioMediaPreferenceController);
controllers.add(bootSoundPreferenceController);
controllers.add(emergencyTonePreferenceController);
controllers.add(new PreferenceCategoryController(context,
"other_sounds_and_vibrations_category",
Arrays.asList(dialPadTonePreferenceController,
screenLockSoundPreferenceController,
chargingSoundPreferenceController,
dockingSoundPreferenceController,
touchSoundPreferenceController,
vibrateOnTouchPreferenceController,
dockAudioMediaPreferenceController,
bootSoundPreferenceController,
emergencyTonePreferenceController)));
return controllers;
}

View File

@@ -23,6 +23,7 @@ import android.content.Context;
import android.media.AudioManager;
import android.os.AsyncTask;
import android.provider.Settings.System;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -53,4 +54,9 @@ public class TouchSoundPreferenceController extends SettingPrefController {
}
};
}
@Override
public boolean isAvailable() {
return mContext.getResources().getBoolean(R.bool.config_show_touch_sounds);
}
}