Tuner control over volume policy.
Change-Id: Ic96ad05a9aab6fc2a1669cfe5f1ba1f3779e1b5e
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 112f801..c39ea57 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -1306,4 +1306,13 @@
<!-- SysUI Tuner: Summary of option to show full do not disturb panel in volume [CHAR LIMIT=NONE] -->
<string name="tuner_full_zen_summary">Allow full control of do not disturb in the volume dialog.</string>
+ <!-- SysUI Tuner: Label for screen about volume and do not disturb settings [CHAR LIMIT=60] -->
+ <string name="volume_and_do_not_disturb">Volume and Do not disturb</string>
+
+ <!-- SysUI Tuner: Switch to control volume down behavior [CHAR LIMIT=60] -->
+ <string name="volume_down_silent">Enter do not disturb on volume down</string>
+
+ <!-- SysUI Tuner: Switch to control volume up behavior [CHAR LIMIT=60] -->
+ <string name="volume_up_silent">Exit do not disturb on volume up</string>
+
</resources>
diff --git a/packages/SystemUI/res/xml/tuner_prefs.xml b/packages/SystemUI/res/xml/tuner_prefs.xml
index 0a1f660..483f367 100644
--- a/packages/SystemUI/res/xml/tuner_prefs.xml
+++ b/packages/SystemUI/res/xml/tuner_prefs.xml
@@ -113,10 +113,26 @@
android:title="@string/color_transform"
android:fragment="com.android.systemui.tuner.ColorMatrixFragment" />
- <com.android.systemui.tuner.TunerSwitch
- android:key="sysui_show_full_zen"
- android:title="@string/tuner_full_zen_title"
- android:summary="@string/tuner_full_zen_summary" />
+ <PreferenceScreen
+ android:key="volume_and_do_not_disturb"
+ android:title="@string/volume_and_do_not_disturb">
+
+ <com.android.systemui.tuner.TunerSwitch
+ android:key="sysui_show_full_zen"
+ android:title="@string/tuner_full_zen_title"
+ android:summary="@string/tuner_full_zen_summary" />
+
+ <com.android.systemui.tuner.TunerSwitch
+ android:key="sysui_volume_down_silent"
+ android:title="@string/volume_down_silent"
+ sysui:defValue="true" />
+
+ <com.android.systemui.tuner.TunerSwitch
+ android:key="sysui_volume_up_silent"
+ android:title="@string/volume_up_silent"
+ sysui:defValue="true" />
+
+ </PreferenceScreen>
<!-- Warning, this goes last. -->
<Preference
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
index 1083f40..d7635ad 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
@@ -31,6 +31,7 @@
import com.android.systemui.qs.tiles.DndTile;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
import com.android.systemui.statusbar.policy.ZenModeController;
+import com.android.systemui.tuner.TunerService;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -38,16 +39,25 @@
/**
* Implementation of VolumeComponent backed by the new volume dialog.
*/
-public class VolumeDialogComponent implements VolumeComponent {
+public class VolumeDialogComponent implements VolumeComponent, TunerService.Tunable {
+
+ public static final String VOLUME_DOWN_SILENT = "sysui_volume_down_silent";
+ public static final String VOLUME_UP_SILENT = "sysui_volume_up_silent";
+ public static final String VOLUME_SILENT_DO_NOT_DISTURB = "sysui_do_not_disturb";
+
+ public static final boolean DEFAULT_VOLUME_DOWN_TO_ENTER_SILENT = true;
+ public static final boolean DEFAULT_VOLUME_UP_TO_EXIT_SILENT = true;
+ public static final boolean DEFAULT_DO_NOT_DISTURB_WHEN_SILENT = true;
+
private final SystemUI mSysui;
private final Context mContext;
private final VolumeDialogController mController;
private final ZenModeController mZenModeController;
private final VolumeDialog mDialog;
- private final VolumePolicy mVolumePolicy = new VolumePolicy(
- true, // volumeDownToEnterSilent
- true, // volumeUpToExitSilent
- true, // doNotDisturbWhenSilent
+ private VolumePolicy mVolumePolicy = new VolumePolicy(
+ DEFAULT_VOLUME_DOWN_TO_ENTER_SILENT, // volumeDownToEnterSilent
+ DEFAULT_VOLUME_UP_TO_EXIT_SILENT, // volumeUpToExitSilent
+ DEFAULT_DO_NOT_DISTURB_WHEN_SILENT, // doNotDisturbWhenSilent
400 // vibrateToSilentDebounce
);
@@ -65,6 +75,41 @@
mDialog = new VolumeDialog(context, WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY,
mController, zen, mVolumeDialogCallback);
applyConfiguration();
+ TunerService.get(mContext).addTunable(this, VOLUME_DOWN_SILENT, VOLUME_UP_SILENT,
+ VOLUME_SILENT_DO_NOT_DISTURB);
+ }
+
+ @Override
+ public void onTuningChanged(String key, String newValue) {
+ if (VOLUME_DOWN_SILENT.equals(key)) {
+ final boolean volumeDownToEnterSilent = newValue != null
+ ? Integer.parseInt(newValue) != 0
+ : DEFAULT_VOLUME_DOWN_TO_ENTER_SILENT;
+ setVolumePolicy(volumeDownToEnterSilent,
+ mVolumePolicy.volumeUpToExitSilent, mVolumePolicy.doNotDisturbWhenSilent,
+ mVolumePolicy.vibrateToSilentDebounce);
+ } else if (VOLUME_UP_SILENT.equals(key)) {
+ final boolean volumeUpToExitSilent = newValue != null
+ ? Integer.parseInt(newValue) != 0
+ : DEFAULT_VOLUME_UP_TO_EXIT_SILENT;
+ setVolumePolicy(mVolumePolicy.volumeDownToEnterSilent,
+ volumeUpToExitSilent, mVolumePolicy.doNotDisturbWhenSilent,
+ mVolumePolicy.vibrateToSilentDebounce);
+ } else if (VOLUME_SILENT_DO_NOT_DISTURB.equals(key)) {
+ final boolean doNotDisturbWhenSilent = newValue != null
+ ? Integer.parseInt(newValue) != 0
+ : DEFAULT_DO_NOT_DISTURB_WHEN_SILENT;
+ setVolumePolicy(mVolumePolicy.volumeDownToEnterSilent,
+ mVolumePolicy.volumeUpToExitSilent, doNotDisturbWhenSilent,
+ mVolumePolicy.vibrateToSilentDebounce);
+ }
+ }
+
+ private void setVolumePolicy(boolean volumeDownToEnterSilent, boolean volumeUpToExitSilent,
+ boolean doNotDisturbWhenSilent, int vibrateToSilentDebounce) {
+ mVolumePolicy = new VolumePolicy(volumeDownToEnterSilent, volumeUpToExitSilent,
+ doNotDisturbWhenSilent, vibrateToSilentDebounce);
+ mController.setVolumePolicy(mVolumePolicy);
}
private void sendUserActivity() {