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

Commit 9e5341f4 authored by Jason Monk's avatar Jason Monk
Browse files

Tuner control over volume policy.

Change-Id: Ic96ad05a9aab6fc2a1669cfe5f1ba1f3779e1b5e
parent 6e580aef
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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>
+20 −4
Original line number Diff line number Diff line
@@ -113,11 +113,27 @@
        android:title="@string/color_transform"
        android:fragment="com.android.systemui.tuner.ColorMatrixFragment" />

    <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
        android:summary="@string/tuner_persistent_warning"
+50 −5
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.systemui.keyguard.KeyguardViewMediator;
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 @@ import java.io.PrintWriter;
/**
 * 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 @@ public class VolumeDialogComponent implements VolumeComponent {
        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() {