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

Commit 2858620d authored by Piotr Wilczyński's avatar Piotr Wilczyński
Browse files

Set display size to all displays

Bug: 197730930

Test: Open Settings, go to Display -> Display size and text -> Display size, change the value, fold/unfold the device, see that the value persists.
Test: DisplaySizeDataTest
Test: atest ScreenResolutionFragmentTest
Test: ScreenZoomSettingsTest
Change-Id: I3d6858a9b20798c2ad3b12a66db3484491682691
Merged-In: I3d6858a9b20798c2ad3b12a66db3484491682691
parent 85379e94
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -18,9 +18,7 @@ package com.android.settings.accessibility;

import android.content.Context;
import android.content.res.Resources;
import android.view.Display;

import com.android.settingslib.display.DisplayDensityConfiguration;
import com.android.settingslib.display.DisplayDensityUtils;

import java.util.Arrays;
@@ -31,11 +29,13 @@ import java.util.stream.Collectors;
 * Data class for storing the configurations related to the display size.
 */
class DisplaySizeData extends PreviewSizeData<Integer> {
    private final DisplayDensityUtils mDensity;

    DisplaySizeData(Context context) {
        super(context);

        final DisplayDensityUtils density = new DisplayDensityUtils(getContext());
        final int initialIndex = density.getCurrentIndex();
        mDensity = new DisplayDensityUtils(getContext());
        final int initialIndex = mDensity.getCurrentIndexForDefaultDisplay();
        if (initialIndex < 0) {
            // Failed to obtain default density, which means we failed to
            // connect to the window manager service. Just use the current
@@ -46,9 +46,10 @@ class DisplaySizeData extends PreviewSizeData<Integer> {
            setInitialIndex(0);
            setValues(Collections.singletonList(densityDpi));
        } else {
            setDefaultValue(density.getDefaultDensity());
            setDefaultValue(mDensity.getDefaultDensityForDefaultDisplay());
            setInitialIndex(initialIndex);
            setValues(Arrays.stream(density.getValues()).boxed().collect(Collectors.toList()));
            setValues(Arrays.stream(mDensity.getDefaultDisplayDensityValues()).boxed()
                    .collect(Collectors.toList()));
        }
    }

@@ -56,10 +57,9 @@ class DisplaySizeData extends PreviewSizeData<Integer> {
    void commit(int currentProgress) {
        final int densityDpi = getValues().get(currentProgress);
        if (densityDpi == getDefaultValue()) {
            DisplayDensityConfiguration.clearForcedDisplayDensity(Display.DEFAULT_DISPLAY);
            mDensity.clearForcedDisplayDensity();
        } else {
            DisplayDensityConfiguration.setForcedDisplayDensity(Display.DEFAULT_DISPLAY,
                    densityDpi);
            mDensity.setForcedDisplayDensity(currentProgress);
        }
    }
}
+4 −3
Original line number Diff line number Diff line
@@ -191,9 +191,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
    @VisibleForTesting
    protected boolean shouldShowLottie() {
        DisplayDensityUtils displayDensity = new DisplayDensityUtils(getApplicationContext());
        int currentDensityIndex = displayDensity.getCurrentIndex();
        final int currentDensity = displayDensity.getValues()[currentDensityIndex];
        final int defaultDensity = displayDensity.getDefaultDensity();
        int currentDensityIndex = displayDensity.getCurrentIndexForDefaultDisplay();
        final int currentDensity = displayDensity.getDefaultDisplayDensityValues()
                [currentDensityIndex];
        final int defaultDensity = displayDensity.getDefaultDensityForDefaultDisplay();
        return defaultDensity == currentDensity;
    }

+9 −8
Original line number Diff line number Diff line
@@ -307,10 +307,11 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment {
            }

            final DisplayDensityUtils density = new DisplayDensityUtils(mContext);
            final int currentIndex = density.getCurrentIndex();
            final int defaultDensity = density.getDefaultDensity();
            final int currentIndex = density.getCurrentIndexForDefaultDisplay();
            final int defaultDensity = density.getDefaultDensityForDefaultDisplay();

            if (density.getValues()[mCurrentIndex] == density.getDefaultDensity()) {
            if (density.getDefaultDisplayDensityValues()[mCurrentIndex]
                    == density.getDefaultDensityForDefaultDisplay()) {
                return;
            }

@@ -351,17 +352,17 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment {

        private void restoreDensity() {
            final DisplayDensityUtils density = new DisplayDensityUtils(mContext);
            if (density.getValues()[mCurrentIndex] != density.getDefaultDensity()) {
                DisplayDensityUtils.setForcedDisplayDensity(
                        Display.DEFAULT_DISPLAY, density.getValues()[mCurrentIndex]);
            if (density.getDefaultDisplayDensityValues()[mCurrentIndex]
                    != density.getDefaultDensityForDefaultDisplay()) {
                density.setForcedDisplayDensity(mCurrentIndex);
            }

            mDefaultDensity = density.getDefaultDensity();
            mDefaultDensity = density.getDefaultDensityForDefaultDisplay();
        }

        private boolean isDensityChanged() {
            final DisplayDensityUtils density = new DisplayDensityUtils(mContext);
            if (density.getDefaultDensity() == mDefaultDensity) {
            if (density.getDefaultDensityForDefaultDisplay() == mDefaultDensity) {
                return false;
            }

+3 −3
Original line number Diff line number Diff line
@@ -36,13 +36,13 @@ public class ScreenZoomPreference extends Preference {
                android.R.attr.preferenceStyle));

        final DisplayDensityUtils density = new DisplayDensityUtils(context);
        final int defaultIndex = density.getCurrentIndex();
        final int defaultIndex = density.getCurrentIndexForDefaultDisplay();
        if (defaultIndex < 0) {
            setVisible(false);
            setEnabled(false);
        } else if (TextUtils.isEmpty(getSummary())) {
            final String[] entries = density.getEntries();
            final int currentIndex = density.getCurrentIndex();
            final String[] entries = density.getDefaultDisplayDensityEntries();
            final int currentIndex = density.getCurrentIndexForDefaultDisplay();
            setSummary(entries[currentIndex]);
        }
    }
+8 −9
Original line number Diff line number Diff line
@@ -21,11 +21,9 @@ import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.Display;

import com.android.settings.R;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.display.DisplayDensityConfiguration;
import com.android.settingslib.display.DisplayDensityUtils;
import com.android.settingslib.search.SearchIndexable;

@@ -37,6 +35,7 @@ public class ScreenZoomSettings extends PreviewSeekBarPreferenceFragment {

    private int mDefaultDensity;
    private int[] mValues;
    private DisplayDensityUtils mDensity;

    @Override
    protected int getActivityLayoutResId() {
@@ -58,9 +57,9 @@ public class ScreenZoomSettings extends PreviewSeekBarPreferenceFragment {
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final DisplayDensityUtils density = new DisplayDensityUtils(getContext());
        mDensity = new DisplayDensityUtils(getContext());

        final int initialIndex = density.getCurrentIndex();
        final int initialIndex = mDensity.getCurrentIndexForDefaultDisplay();
        if (initialIndex < 0) {
            // Failed to obtain default density, which means we failed to
            // connect to the window manager service. Just use the current
@@ -71,10 +70,10 @@ public class ScreenZoomSettings extends PreviewSeekBarPreferenceFragment {
            mInitialIndex = 0;
            mDefaultDensity = densityDpi;
        } else {
            mValues = density.getValues();
            mEntries = density.getEntries();
            mValues = mDensity.getDefaultDisplayDensityValues();
            mEntries = mDensity.getDefaultDisplayDensityEntries();
            mInitialIndex = initialIndex;
            mDefaultDensity = density.getDefaultDensity();
            mDefaultDensity = mDensity.getDefaultDensityForDefaultDisplay();
        }

        getActivity().setTitle(R.string.screen_zoom_title);
@@ -95,9 +94,9 @@ public class ScreenZoomSettings extends PreviewSeekBarPreferenceFragment {
    protected void commit() {
        final int densityDpi = mValues[mCurrentIndex];
        if (densityDpi == mDefaultDensity) {
            DisplayDensityConfiguration.clearForcedDisplayDensity(Display.DEFAULT_DISPLAY);
            mDensity.clearForcedDisplayDensity();
        } else {
            DisplayDensityConfiguration.setForcedDisplayDensity(Display.DEFAULT_DISPLAY, densityDpi);
            mDensity.setForcedDisplayDensity(densityDpi);
        }
    }