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

Commit 951b54e2 authored by Darryl Johnson's avatar Darryl Johnson Committed by Android (Google) Code Review
Browse files

Merge "Allow multiple device states to be treated as folded." into sc-dev

parents dfe7df31 66209fe3
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -663,9 +663,15 @@
         The default is false. -->
    <bool name="config_lidControlsSleep">false</bool>

    <!-- The device state (supplied by DeviceStateManager) that should be treated as folded by the
         display fold controller. Default is DeviceStateManager.INVALID_DEVICE_STATE. -->
    <integer name="config_foldedDeviceState">-1</integer>
    <!-- The device states (supplied by DeviceStateManager) that should be treated as folded by the
         display fold controller. Default is empty. -->
    <integer-array name="config_foldedDeviceStates">
        <!-- Example:
        <item>0</item>
        <item>1</item>
        <item>2</item>
        -->
    </integer-array>

    <!-- Indicate the display area rect for foldable devices in folded state. -->
    <string name="config_foldedArea"></string>
+1 −1
Original line number Diff line number Diff line
@@ -3731,7 +3731,7 @@
  <java-symbol type="string" name="config_customCountryDetector" />

  <!-- For Foldables -->
  <java-symbol type="integer" name="config_foldedDeviceState" />
  <java-symbol type="array" name="config_foldedDeviceStates" />
  <java-symbol type="string" name="config_foldedArea" />

  <java-symbol type="array" name="config_disableApksUnlessMatchedSku_apk_list" />
+11 −4
Original line number Diff line number Diff line
@@ -107,7 +107,7 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener {

    private final DisplayDeviceRepository mDisplayDeviceRepo;
    private final Listener mListener;
    private final int mFoldedDeviceState;
    private final int[] mFoldedDeviceStates;

    LogicalDisplayMapper(Context context, DisplayDeviceRepository repo, Listener listener) {
        mDisplayDeviceRepo = repo;
@@ -115,8 +115,8 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener {
        mSingleDisplayDemoMode = SystemProperties.getBoolean("persist.demo.singledisplay", false);
        mDisplayDeviceRepo.addListener(this);

        mFoldedDeviceState = context.getResources().getInteger(
                com.android.internal.R.integer.config_foldedDeviceState);
        mFoldedDeviceStates = context.getResources().getIntArray(
                com.android.internal.R.array.config_foldedDeviceStates);

        loadFoldedDisplayConfig(context);
    }
@@ -232,7 +232,14 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener {
    }

    void setDeviceStateLocked(int state) {
        setDeviceFoldedLocked(state == mFoldedDeviceState);
        boolean folded = false;
        for (int i = 0; i < mFoldedDeviceStates.length; i++) {
            if (state == mFoldedDeviceStates[i]) {
                folded = true;
                break;
            }
        }
        setDeviceFoldedLocked(folded);
    }

    void setDeviceFoldedLocked(boolean isFolded) {
+11 −4
Original line number Diff line number Diff line
@@ -209,16 +209,23 @@ class DisplayFoldController {
     * resource.
     */
    private class DeviceStateListener implements DeviceStateManager.DeviceStateListener {
        private final int mFoldedDeviceState;
        private final int[] mFoldedDeviceStates;

        DeviceStateListener(Context context) {
            mFoldedDeviceState = context.getResources().getInteger(
                    com.android.internal.R.integer.config_foldedDeviceState);
            mFoldedDeviceStates = context.getResources().getIntArray(
                    com.android.internal.R.array.config_foldedDeviceStates);
        }

        @Override
        public void onDeviceStateChanged(int deviceState) {
            setDeviceFolded(deviceState == mFoldedDeviceState);
            boolean folded = false;
            for (int i = 0; i < mFoldedDeviceStates.length; i++) {
                if (deviceState == mFoldedDeviceStates[i]) {
                    folded = true;
                    break;
                }
            }
            setDeviceFolded(folded);
        }
    }
}